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) assertContains(r, k2) assertContains(r, k1) 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) assertContains(r2, k2) assertContains(r2, k1) 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) } @Test @Ignore fun testKeysWithSameTags() { // it should be able to keep keys with same tags } }