+EncryptedKVStorage
This commit is contained in:
1 parent
776f4e75ff
commit
fe6190eb8d
4 files changed
+161
-5
No files matched your search
@@ -9,10 +9,10 @@
|
||||
*/
|
||||
|
||||
import kotlinx.coroutines.test.runTest
|
||||
import net.sergeych.bintools.ByteChunk
|
||||
import net.sergeych.bintools.toDump
|
||||
import net.sergeych.bipack.BipackEncoder
|
||||
import net.sergeych.crypto2.BinaryId
|
||||
import net.sergeych.crypto2.ByteChunk
|
||||
import net.sergeych.crypto2.initCrypto
|
||||
import kotlin.test.Test
|
||||
import kotlin.test.assertContentEquals
|
||||
@@ -35,10 +35,10 @@ class BinaryIdTest {
|
||||
initCrypto()
|
||||
val x = ByteChunk.random(3)
|
||||
assertEquals(3, x.data.size)
|
||||
assertEquals(3, x.toByteArray().size)
|
||||
assertEquals(3, x.toUByteArray().size)
|
||||
assertEquals(3, x.asByteArray.size)
|
||||
assertEquals(3, x.data.size)
|
||||
println(BipackEncoder.encode(x).toDump())
|
||||
assertEquals(4, BipackEncoder.encode(x).size)
|
||||
assertContentEquals(BipackEncoder.encode(x.toByteArray()), BipackEncoder.encode(x))
|
||||
assertContentEquals(BipackEncoder.encode(x.asByteArray), BipackEncoder.encode(x))
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,70 @@
|
||||
import kotlinx.coroutines.test.runTest
|
||||
import net.sergeych.bintools.*
|
||||
import net.sergeych.bipack.decodeFromBipack
|
||||
import net.sergeych.crypto2.EncryptedKVStorage
|
||||
import net.sergeych.crypto2.SymmetricKey
|
||||
import net.sergeych.crypto2.initCrypto
|
||||
import kotlin.test.Test
|
||||
import kotlin.test.assertEquals
|
||||
import kotlin.test.assertNull
|
||||
|
||||
class StorageTest {
|
||||
|
||||
@Test
|
||||
fun testGetAndSet() = runTest {
|
||||
initCrypto()
|
||||
val plain = MemoryKVStorage()
|
||||
val key = SymmetricKey.new()
|
||||
val storage = EncryptedKVStorage(plain, key)
|
||||
|
||||
var hello by storage.optStored<String>()
|
||||
assertNull(hello)
|
||||
hello = "world"
|
||||
assertEquals("world", storage["hello"]?.decodeFromBipack<String>())
|
||||
println("plain: ${plain.keys}")
|
||||
assertEquals(setOf("hello"), storage.keys)
|
||||
var foo by storage.stored("bar")
|
||||
assertEquals("bar", foo)
|
||||
foo = "bar2"
|
||||
// plain.dump()
|
||||
// storage.dump()
|
||||
assertEquals(setOf("hello", "foo"), storage.keys)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testReEncrypt() = runTest {
|
||||
initCrypto()
|
||||
fun test(x: KVStorage) {
|
||||
val foo by x.stored("1")
|
||||
val bar by x.stored("2")
|
||||
val bazz by x.stored("3")
|
||||
assertEquals("foo", foo)
|
||||
assertEquals("bar", bar)
|
||||
assertEquals("bazz", bazz)
|
||||
}
|
||||
fun setup(s: KVStorage, k: SymmetricKey): EncryptedKVStorage {
|
||||
val x = EncryptedKVStorage(s, k)
|
||||
var foo by x.stored("1")
|
||||
var bar by x.stored("2")
|
||||
var bazz by x.stored("3")
|
||||
foo = "foo"
|
||||
bar = "bar"
|
||||
bazz = "bazz"
|
||||
return x
|
||||
}
|
||||
val k1 = SymmetricKey.new()
|
||||
val k2 = SymmetricKey.new()
|
||||
val plain = MemoryKVStorage()
|
||||
val s1 = setup(plain, k1)
|
||||
test(s1)
|
||||
s1.reEncrypt(k2)
|
||||
test(s1)
|
||||
// val s2 = EncryptedKVStorage(plain, k2)
|
||||
// test(s2)
|
||||
}
|
||||
}
|
||||
|
||||
fun KVStorage.dump() {
|
||||
for (k in keys)
|
||||
println("$k: ${this[k]?.toDump()}")
|
||||
}
|
||||
Reference in new issue
Block a user