forked from sergeych/crypto2
0.5.8-SNAPSHOT: Multikeys
This commit is contained in:
1 parent
491f9d47f6
commit
8e652e0421
8 files changed
+397
-2
No files matched your search
@@ -276,4 +276,72 @@ class KeysTest {
|
||||
// and restored from id should be the same:
|
||||
assertEquals( k.verifyingKey, dk2.id.id.asVerifyingKey)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun multiKeyTestSom() = runTest {
|
||||
initCrypto()
|
||||
val k1 = SigningSecretKey.new()
|
||||
val k2 = SigningSecretKey.new()
|
||||
val k3 = SigningSecretKey.new()
|
||||
val k4 = SigningSecretKey.new()
|
||||
val k5 = SigningSecretKey.new()
|
||||
// val k6 = SigningSecretKey.new()
|
||||
val mk: Multikey = Multikey.Keys(1, setOf(k1.verifyingKey))
|
||||
val mk23: Multikey = Multikey.Keys(2, setOf(k1.verifyingKey, k2.verifyingKey, k3.verifyingKey))
|
||||
val mk13: Multikey = Multikey.Keys(1, setOf(k1.verifyingKey, k2.verifyingKey, k3.verifyingKey))
|
||||
|
||||
assertTrue { mk.check(k1.verifyingKey) }
|
||||
assertFalse { mk.check(k2.verifyingKey) }
|
||||
|
||||
assertTrue { mk23.check(k1.verifyingKey, k2.verifyingKey, k4.verifyingKey) }
|
||||
assertTrue { mk23.check(k3.verifyingKey, k2.verifyingKey, k4.verifyingKey) }
|
||||
assertFalse { mk23.check(k4.verifyingKey, k2.verifyingKey, k5.verifyingKey) }
|
||||
assertTrue { mk13.check(k4.verifyingKey, k2.verifyingKey, k5.verifyingKey) }
|
||||
|
||||
println(pack(mk23).toDump())
|
||||
println(pack(mk23).size)
|
||||
|
||||
val smk23: Multikey = Multikey.someOf(2, k1.verifyingKey, k2.verifyingKey, k3.verifyingKey)
|
||||
// val smk13: Multikey = Multikey.Keys(1, setOf(k1.verifyingKey, k2.verifyingKey, k3.verifyingKey))
|
||||
|
||||
assertTrue { smk23.check(k1.verifyingKey, k2.verifyingKey, k4.verifyingKey) }
|
||||
assertTrue { smk23.check(k3.verifyingKey, k2.verifyingKey, k4.verifyingKey) }
|
||||
assertFalse { smk23.check(k4.verifyingKey, k2.verifyingKey, k5.verifyingKey) }
|
||||
// assertTrue { smk13.check(k4.verifyingKey, k2.verifyingKey, k5.verifyingKey) }
|
||||
|
||||
println(pack(smk23).toDump())
|
||||
println(pack(smk23).size)
|
||||
|
||||
val s1 = k1 or k2 or k3
|
||||
println(pack(s1).toDump())
|
||||
println(pack(s1).size)
|
||||
assertTrue { s1.check(k1.verifyingKey, k2.verifyingKey, k3.verifyingKey) }
|
||||
assertTrue { s1.check(k1.verifyingKey) }
|
||||
assertTrue { s1.check(k2.verifyingKey) }
|
||||
assertTrue { s1.check(k3.verifyingKey) }
|
||||
assertFalse { s1.check(k4.verifyingKey) }
|
||||
|
||||
val s2 = (k1 or k2) and k3
|
||||
println(pack(s2).toDump())
|
||||
println(pack(s2).size)
|
||||
assertTrue { s2.check(k1.verifyingKey, k3.verifyingKey) }
|
||||
assertTrue { s2.check(k2.verifyingKey, k3.verifyingKey) }
|
||||
assertTrue { s2.check(k1.verifyingKey, k2.verifyingKey, k3.verifyingKey) }
|
||||
assertFalse { s2.check(k4.verifyingKey) }
|
||||
assertFalse { s2.check(k1.verifyingKey) }
|
||||
assertFalse { s2.check(k2.verifyingKey) }
|
||||
assertFalse { s2.check(k3.verifyingKey) }
|
||||
assertFalse { s2.check(k1.verifyingKey, k2.verifyingKey) }
|
||||
|
||||
val s3 = (k1 and k2) or k3
|
||||
println(pack(s3).toDump())
|
||||
println(pack(s3).size)
|
||||
assertTrue { s3.check(k1.verifyingKey, k3.verifyingKey) }
|
||||
assertTrue { s3.check(k3.verifyingKey) }
|
||||
assertTrue { s3.check(k2.verifyingKey, k1.verifyingKey) }
|
||||
assertFalse { s3.check(k1.verifyingKey) }
|
||||
assertFalse { s3.check(k2.verifyingKey) }
|
||||
assertFalse { s3.check(k1.verifyingKey, k4.verifyingKey) }
|
||||
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user