98 lines
3.4 KiB
Kotlin
Raw Normal View History

import com.ionspin.kotlin.crypto.util.encodeToUByteArray
import kotlinx.coroutines.test.runTest
import net.sergeych.bintools.toDump
import net.sergeych.bipack.BipackDecoder
import net.sergeych.bipack.BipackEncoder
import net.sergeych.crypto2.*
import kotlin.test.*
class RingTest {
@Test
fun testCreationAndSerialization() = runTest {
initCrypto()
val y1 = SymmetricKey("1234567890Hello,dolly.here-we-go".encodeToUByteArray())
val y2 = SymmetricKey("1234567890Hello,dolly.here-we-go".encodeToUByteArray())
assertEquals(y1, y2)
val e1 = Asymmetric.randomSecretKey()
val e2: Asymmetric.SecretKey = BipackDecoder.decode(BipackEncoder.encode(e1))
assertEquals(e1, e2)
val k1 = UniversalKey.from(SymmetricKey("1234567890Hello,dolly.here-we-go".encodeToUByteArray()))
val k11 = UniversalKey.from(SymmetricKey("1234567890Hello,dolly.here-we-go".encodeToUByteArray()))
assertEquals(k1, k11)
val k2 = UniversalKey.from(Asymmetric.randomSecretKey())
val k3 = UniversalKey.from(Asymmetric.randomSecretKey())
//
val r = UniversalRing(k1, k2)
// val r = UniversalRing(k1)
2024-06-22 12:22:39 +07:00
assertTrue(k2 in r)
assertTrue(k1 in r)
assertFalse { k3 in r }
println(Asymmetric.randomSecretKey().keyBytes.size)
println(BipackEncoder.encode(Asymmetric.randomSecretKey()).size)
val encoded = BipackEncoder.encode(r)
println(encoded.toDump())
println(encoded.size)
assertTrue { encoded.size < 80 }
val r2: UniversalRing = BipackDecoder.decode(encoded)
2024-06-22 12:22:39 +07:00
assertTrue { k2 in r2 }
assertTrue { k1 in r2 }
assertFalse { k3 in r2 }
println("\r\n")
println(r)
println(r2)
// Kr[U.Sym:XYjneNaPFbg-PZJIYjgIz7F-DsH1dEY8Mg6LCirko2QBFA,U.Sec:FzuzDbrS0xR5nTkdd-mYvrqsfQn9HbQgtFnIw9CEirIAlw]
// Kr[U.Sym:XYjneNaPFbg-PZJIYjgIz7F-DsH1dEY8Mg6LCirko2QBFA,U.Sec:FzuzDbrS0xR5nTkdd-mYvrqsfQn9HbQgtFnIw9CEirIAlw]
assertEquals(r, r2)
}
2024-06-19 16:46:32 +07:00
@Test
2024-06-22 12:22:39 +07:00
fun testTags() = runTest {
initCrypto()
val y1 = SymmetricKey("1234567890Hello,dolly.here-we-go".encodeToUByteArray())
val y2 = SymmetricKey("1234567890Hello,dolly.here-we-go".encodeToUByteArray())
val e1 = Asymmetric.randomSecretKey()
val e2: Asymmetric.SecretKey = BipackDecoder.decode(BipackEncoder.encode(e1))
val k1 = UniversalKey.from(SymmetricKey("1234567890Hello,dolly.here-we-go".encodeToUByteArray()))
val k11 = UniversalKey.from(SymmetricKey("1234567890Hello,dolly.here-we-go".encodeToUByteArray()))
val k2 = UniversalKey.from(Asymmetric.randomSecretKey())
val k3 = UniversalKey.from(Asymmetric.randomSecretKey())
val r1 = UniversalRing(k1, k2)
var r2 = UniversalRing(deepCopy(k1), deepCopy(k2))
assertEquals(r2, r1)
val r3 = UniversalRing(k1 to "foo", k2 to "bar")
assertNotEquals(r3, r2)
assertTrue { r3 equalKeys r2 }
r2 += (k1 to "foo")
r2 = r2.addTags(k2, "bar")
assertEquals(r2, r3)
assertEquals(deepCopy(r2), r3)
r2 += k1 to "buzz"
r2 = deepCopy(r2)
assertEquals(setOf("foo", "buzz"), r2.getTags(k1))
assertNotEquals(r2, r3)
r2 = deepCopy(r2.removeTags(k1, "buzz"))
assertEquals(r2, r3)
}
@Test
fun testSize() = runTest {
// val sy1 = SymmetricKey.random().toUniversal()
2024-06-19 16:46:32 +07:00
}
}