forked from sergeych/crypto2
refactored keys, unversal keys and ring
This commit is contained in:
1 parent
7eeb780bdb
commit
ede55650f4
16 files changed
+274
-241
No files matched your search
@@ -9,8 +9,8 @@ class ContainerTest {
|
||||
@Test
|
||||
fun testSingle() = runTest {
|
||||
initCrypto()
|
||||
val syk1 = SymmetricKey.random()
|
||||
val syk2 = SymmetricKey.random()
|
||||
val syk1 = SymmetricKey.new()
|
||||
val syk2 = SymmetricKey.new()
|
||||
val data = "sergeych, ohm many.".encodeToUByteArray()
|
||||
|
||||
val c = Container.createWith(data, syk1)
|
||||
@@ -87,9 +87,9 @@ class ContainerTest {
|
||||
@Test
|
||||
fun testMultipleSymmetric() = runTest {
|
||||
initCrypto()
|
||||
val syk1 = SymmetricKey.random()
|
||||
val syk2 = SymmetricKey.random()
|
||||
val syk3 = SymmetricKey.random()
|
||||
val syk1 = SymmetricKey.new()
|
||||
val syk2 = SymmetricKey.new()
|
||||
val syk3 = SymmetricKey.new()
|
||||
val p1 = Asymmetric.generateKeys()
|
||||
val p2 = Asymmetric.generateKeys()
|
||||
val p3 = Asymmetric.generateKeys()
|
||||
@@ -131,9 +131,9 @@ class ContainerTest {
|
||||
@Test
|
||||
fun testSingleGrowSymmetric() = runTest {
|
||||
initCrypto()
|
||||
val syk1 = SymmetricKey.random()
|
||||
val syk2 = SymmetricKey.random()
|
||||
val syk3 = SymmetricKey.random()
|
||||
val syk1 = SymmetricKey.new()
|
||||
val syk2 = SymmetricKey.new()
|
||||
val syk3 = SymmetricKey.new()
|
||||
val p1 = Asymmetric.generateKeys()
|
||||
val p3 = Asymmetric.generateKeys()
|
||||
val p4 = Asymmetric.generateKeys()
|
||||
@@ -193,8 +193,8 @@ class ContainerTest {
|
||||
@Test
|
||||
fun testSingleGrowAsymmetric() = runTest {
|
||||
initCrypto()
|
||||
val syk1 = SymmetricKey.random()
|
||||
val syk2 = SymmetricKey.random()
|
||||
val syk1 = SymmetricKey.new()
|
||||
val syk2 = SymmetricKey.new()
|
||||
val p1 = Asymmetric.generateKeys()
|
||||
val p3 = Asymmetric.generateKeys()
|
||||
val data = "Translating the name 'Sergey Chernov' from Russian to archaic Sanskrit would be 'Ramo Krishna'"
|
||||
@@ -226,9 +226,9 @@ class ContainerTest {
|
||||
@Test
|
||||
fun testMixedOps1() = runTest {
|
||||
initCrypto()
|
||||
val syk1 = SymmetricKey.random()
|
||||
val syk2 = SymmetricKey.random()
|
||||
val syk3 = SymmetricKey.random()
|
||||
val syk1 = SymmetricKey.new()
|
||||
val syk2 = SymmetricKey.new()
|
||||
val syk3 = SymmetricKey.new()
|
||||
val p1 = Asymmetric.generateKeys()
|
||||
val p2 = Asymmetric.generateKeys()
|
||||
val p3 = Asymmetric.generateKeys()
|
||||
@@ -263,9 +263,9 @@ class ContainerTest {
|
||||
@Test
|
||||
fun testMixedOps2() = runTest {
|
||||
initCrypto()
|
||||
val syk1 = SymmetricKey.random()
|
||||
val syk2 = SymmetricKey.random()
|
||||
val syk3 = SymmetricKey.random()
|
||||
val syk1 = SymmetricKey.new()
|
||||
val syk2 = SymmetricKey.new()
|
||||
val syk3 = SymmetricKey.new()
|
||||
val p1 = Asymmetric.generateKeys()
|
||||
val p2 = Asymmetric.generateKeys()
|
||||
val p3 = Asymmetric.generateKeys()
|
||||
|
||||
@@ -13,11 +13,11 @@ class KeysTest {
|
||||
@Test
|
||||
fun testSigningCreationAndMap() = runTest {
|
||||
initCrypto()
|
||||
val (stk,pbk) = Signing.pair()
|
||||
val (stk,pbk) = SigningSecretKey.generatePair()
|
||||
|
||||
val x = mapOf( stk to "STK!", pbk to "PBK!")
|
||||
assertEquals("STK!", x[stk])
|
||||
val s1 = Signing.SecretKey(stk.packed)
|
||||
val s1 = SigningSecretKey(stk.keyBytes)
|
||||
assertEquals(stk, s1)
|
||||
assertEquals("STK!", x[s1])
|
||||
assertEquals("PBK!", x[pbk])
|
||||
@@ -29,8 +29,8 @@ class KeysTest {
|
||||
|
||||
data1[0] = 0x01u
|
||||
assertFalse(s.isValid(data1))
|
||||
val p2 = Signing.pair()
|
||||
val p3 = Signing.pair()
|
||||
val p2 = SigningSecretKey.generatePair()
|
||||
val p3 = SigningSecretKey.generatePair()
|
||||
|
||||
val ms = SealedBox.create(data, s1) + p2.secretKey
|
||||
|
||||
@@ -49,8 +49,8 @@ class KeysTest {
|
||||
@Test
|
||||
fun testNonDeterministicSeals() = runTest {
|
||||
initCrypto()
|
||||
val data = "Welcome to the Miami, bitch!".encodeToUByteArray()
|
||||
val (sk,_) = Signing.pair()
|
||||
val data = "Welcome to the crazy new world!".encodeToUByteArray()
|
||||
val (sk,_) = SigningSecretKey.generatePair()
|
||||
val t = now()
|
||||
val s1 = Seal.create(sk, data, createdAt = t)
|
||||
val s2 = Seal.create(sk, data, createdAt = t)
|
||||
@@ -72,8 +72,8 @@ class KeysTest {
|
||||
@Test
|
||||
fun secretEncryptTest() = runTest {
|
||||
initCrypto()
|
||||
val key = SymmetricKey.random()
|
||||
val key1 = SymmetricKey.random()
|
||||
val key = SymmetricKey.new()
|
||||
val key1 = SymmetricKey.new()
|
||||
assertEquals("hello", key.decrypt(key.encrypt("hello".encodeToUByteArray())).decodeFromUByteArray())
|
||||
assertEquals("hello", key.decryptString(key.encrypt("hello")))
|
||||
assertEquals("hello", key.decryptObject(key.encryptObject("hello")))
|
||||
@@ -88,7 +88,7 @@ class KeysTest {
|
||||
@Test
|
||||
fun symmetricKeyTest() = runTest {
|
||||
initCrypto()
|
||||
val k1 = SymmetricKey.random()
|
||||
val k1 = SymmetricKey.new()
|
||||
val src = "Buena Vista".encodeToUByteArray()
|
||||
val nonce = k1.randomNonce()
|
||||
|
||||
@@ -176,9 +176,9 @@ class KeysTest {
|
||||
@Test
|
||||
fun testUniKeys() = runTest {
|
||||
initCrypto()
|
||||
val sy1 = SymmetricKey.random()
|
||||
val sy1 = SymmetricKey.new()
|
||||
val sy2 = SymmetricKey(sy1.keyBytes)
|
||||
val sy3 = SymmetricKey.random()
|
||||
val sy3 = SymmetricKey.new()
|
||||
|
||||
assertEquals(sy1, sy2)
|
||||
assertEquals(sy2, sy1)
|
||||
@@ -195,9 +195,9 @@ class KeysTest {
|
||||
assertEquals(usy2, usy1)
|
||||
assertFalse { usy1 == usy3 }
|
||||
|
||||
val sk1 = Asymmetric.randomSecretKey()
|
||||
val sk1 = Asymmetric.new()
|
||||
val sk2 = Asymmetric.SecretKey(sk1.keyBytes)
|
||||
val sk3 = Asymmetric.randomSecretKey()
|
||||
val sk3 = Asymmetric.new()
|
||||
|
||||
assertEquals(sk1, sk2)
|
||||
assertEquals(sk2, sk1)
|
||||
|
||||
@@ -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()
|
||||
|
||||
Reference in new issue
Block a user