refactored keys, unversal keys and ring

This commit is contained in:
sergeych committed 2024-06-22 18:19:06 +07:00
1 parent 7eeb780bdb
commit ede55650f4
16 files changed
+274 -241

No files matched your search

+35 -14
View File
@@ -16,7 +16,7 @@ class RingTest {
val y2 = SymmetricKey("1234567890Hello,dolly.here-we-go".encodeToUByteArray())
assertEquals(y1, y2)
val e1 = Asymmetric.randomSecretKey()
val e1 = Asymmetric.new()
val e2: Asymmetric.SecretKey = BipackDecoder.decode(BipackEncoder.encode(e1))
assertEquals(e1, e2)
@@ -26,8 +26,8 @@ class RingTest {
assertEquals(k1, k11)
val k2 = UniversalKey.from(Asymmetric.randomSecretKey())
val k3 = UniversalKey.from(Asymmetric.randomSecretKey())
val k2 = UniversalKey.from(Asymmetric.new())
val k3 = UniversalKey.from(Asymmetric.new())
//
val r = UniversalRing(k1, k2)
// val r = UniversalRing(k1)
@@ -35,8 +35,8 @@ class RingTest {
assertTrue(k1 in r)
assertFalse { k3 in r }
println(Asymmetric.randomSecretKey().keyBytes.size)
println(BipackEncoder.encode(Asymmetric.randomSecretKey()).size)
println(Asymmetric.new().keyBytes.size)
println(BipackEncoder.encode(Asymmetric.new()).size)
val encoded = BipackEncoder.encode(r)
println(encoded.toDump())
println(encoded.size)
@@ -60,16 +60,8 @@ class RingTest {
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 k2 = UniversalKey.from(Asymmetric.new())
val r1 = UniversalRing(k1, k2)
var r2 = UniversalRing(deepCopy(k1), deepCopy(k2))
@@ -91,6 +83,35 @@ class RingTest {
assertEquals(r2, r3)
}
@Test
fun testAsymmetricEncryption() = runTest {
initCrypto()
val sk1 = UniversalKey.newSecretKey()
val sk2 = UniversalKey.newSecretKey()
val sk3 = UniversalKey.newSecretKey()
// val sk4 = UniversalKey.newSecretKey()
val sik1 = UniversalKey.newSigningKey()
// val sik2 = UniversalKey.newSigningKey()
val sik3 = UniversalKey.newSigningKey()
val data = "Mendeleev' table".encodeToUByteArray()
val r = UniversalRing(sk2, sk3, sk1.publicKey, sk3.publicKey, sik3.publicKey, sik1)
r.addTags(sik1, "SECRET_SIGN")
val box = deepCopy(Container.create(data) { key(sk3.publicKey) })
assertContentEquals(data, box.decryptWith(r))
assertEquals(sk3.publicKey, r.findKey<EncryptingKey>(sk3.id))
assertTrue { sik3.publicKey in r }
assertEquals(sik1, r.findKey<EncryptingKey>(sik1.publicKey.id))
assertEquals(sik1, r.keyByTag<SigningKey>("SECRET_SIGN"))
}
@Test
fun testSize() = runTest {
// val sy1 = SymmetricKey.random().toUniversal()