Disable xchacha20 stream for now, as it seems to be missing on ios32arm build. Fix android sdk path

This commit is contained in:
Ugljesa Jovanovic 2021-02-23 23:27:37 +01:00
parent b85b75e732
commit 8249881eb1
No known key found for this signature in database
GPG Key ID: 178E6DFCECCB0E0F
7 changed files with 175 additions and 174 deletions

View File

@ -12,6 +12,7 @@ workflow:
variables: variables:
GIT_SUBMODULE_STRATEGY: recursive GIT_SUBMODULE_STRATEGY: recursive
CHROME_BIN: "chromium" CHROME_BIN: "chromium"
ANDROID_SDK_ROOT: "/android-sdk"
simpleCheck: simpleCheck:
stage: prepare stage: prepare

View File

@ -23,8 +23,8 @@ expect object Stream {
fun chacha20IetfXor(message : UByteArray, nonce: UByteArray, key: UByteArray) : UByteArray fun chacha20IetfXor(message : UByteArray, nonce: UByteArray, key: UByteArray) : UByteArray
fun chacha20IetfXorIc(message : UByteArray, nonce: UByteArray, initialCounter: ULong, key: UByteArray) : UByteArray fun chacha20IetfXorIc(message : UByteArray, nonce: UByteArray, initialCounter: ULong, key: UByteArray) : UByteArray
fun xChacha20Keygen() : UByteArray // fun xChacha20Keygen() : UByteArray
//
fun xChacha20Xor(message : UByteArray, nonce: UByteArray, key: UByteArray) : UByteArray // fun xChacha20Xor(message : UByteArray, nonce: UByteArray, key: UByteArray) : UByteArray
fun xChacha20XorIc(message : UByteArray, nonce: UByteArray, initialCounter: ULong, key: UByteArray) : UByteArray // fun xChacha20XorIc(message : UByteArray, nonce: UByteArray, initialCounter: ULong, key: UByteArray) : UByteArray
} }

View File

@ -69,25 +69,25 @@ class StreamTest {
} }
} }
@Test // @Test
fun testXChaCha20IetfStream() = runTest { // fun testXChaCha20IetfStream() = runTest {
LibsodiumInitializer.initializeWithCallback { // LibsodiumInitializer.initializeWithCallback {
val message = "This is a cha cha message".encodeToUByteArray() // val message = "This is a cha cha message".encodeToUByteArray()
val nonce = LibsodiumRandom.bufDeterministic(crypto_stream_xchacha20_NONCEBYTES, seed) // val nonce = LibsodiumRandom.bufDeterministic(crypto_stream_xchacha20_NONCEBYTES, seed)
val key = Stream.xChacha20Keygen() // val key = Stream.xChacha20Keygen()
val encryptedUsingLibsodium = Stream.xChacha20Xor(message, nonce, key) // val encryptedUsingLibsodium = Stream.xChacha20Xor(message, nonce, key)
val encryptedUsingLibsodiumWithInitialCounter = Stream.xChacha20XorIc(message, nonce, 0U, key) // val encryptedUsingLibsodiumWithInitialCounter = Stream.xChacha20XorIc(message, nonce, 0U, key)
println(encryptedUsingLibsodium.toHexString()) // println(encryptedUsingLibsodium.toHexString())
println(encryptedUsingLibsodiumWithInitialCounter.toHexString()) // println(encryptedUsingLibsodiumWithInitialCounter.toHexString())
assertTrue { // assertTrue {
encryptedUsingLibsodium.contentEquals(encryptedUsingLibsodiumWithInitialCounter) // encryptedUsingLibsodium.contentEquals(encryptedUsingLibsodiumWithInitialCounter)
} // }
val decryptedUsingLibsodium = Stream.xChacha20Xor(encryptedUsingLibsodium, nonce, key) // val decryptedUsingLibsodium = Stream.xChacha20Xor(encryptedUsingLibsodium, nonce, key)
println(message.toHexString()) // println(message.toHexString())
println(decryptedUsingLibsodium.toHexString()) // println(decryptedUsingLibsodium.toHexString())
assertTrue { // assertTrue {
decryptedUsingLibsodium.contentEquals(message) // decryptedUsingLibsodium.contentEquals(message)
} // }
} // }
} // }
} }

View File

@ -80,41 +80,41 @@ actual object Stream {
return result.toUByteArray() return result.toUByteArray()
} }
actual fun xChacha20Keygen(): UByteArray { // actual fun xChacha20Keygen(): UByteArray {
val result = getSodium().crypto_stream_xchacha20_keygen() // val result = getSodium().crypto_stream_xchacha20_keygen()
//
return result.toUByteArray() // return result.toUByteArray()
} // }
//
actual fun xChacha20Xor( // actual fun xChacha20Xor(
message: UByteArray, // message: UByteArray,
nonce: UByteArray, // nonce: UByteArray,
key: UByteArray // key: UByteArray
): UByteArray { // ): UByteArray {
val result = getSodium().crypto_stream_xchacha20_xor( // val result = getSodium().crypto_stream_xchacha20_xor(
message.toUInt8Array(), // message.toUInt8Array(),
nonce.toUInt8Array(), // nonce.toUInt8Array(),
key.toUInt8Array() // key.toUInt8Array()
) // )
//
return result.toUByteArray() // return result.toUByteArray()
} // }
//
actual fun xChacha20XorIc( // actual fun xChacha20XorIc(
message: UByteArray, // message: UByteArray,
nonce: UByteArray, // nonce: UByteArray,
initialCounter: ULong, // initialCounter: ULong,
key: UByteArray // key: UByteArray
): UByteArray { // ): UByteArray {
val result = getSodium().crypto_stream_xchacha20_xor_ic( // val result = getSodium().crypto_stream_xchacha20_xor_ic(
message.toUInt8Array(), // message.toUInt8Array(),
nonce.toUInt8Array(), // nonce.toUInt8Array(),
initialCounter.toUInt(), // initialCounter.toUInt(),
key.toUInt8Array() // key.toUInt8Array()
) // )
//
return result.toUByteArray() // return result.toUByteArray()
} // }
} }

View File

@ -96,49 +96,49 @@ actual object Stream {
return result return result
} }
actual fun xChacha20Keygen(): UByteArray { // actual fun xChacha20Keygen(): UByteArray {
val result = UByteArray(crypto_stream_chacha20_KEYBYTES) // val result = UByteArray(crypto_stream_chacha20_KEYBYTES)
//
sodiumJna.crypto_stream_xchacha20_keygen(result.asByteArray()) // sodiumJna.crypto_stream_xchacha20_keygen(result.asByteArray())
//
return result // return result
} // }
//
actual fun xChacha20Xor( // actual fun xChacha20Xor(
message: UByteArray, // message: UByteArray,
nonce: UByteArray, // nonce: UByteArray,
key: UByteArray // key: UByteArray
): UByteArray { // ): UByteArray {
val result = UByteArray(message.size) // val result = UByteArray(message.size)
//
sodiumJna.crypto_stream_xchacha20_xor( // sodiumJna.crypto_stream_xchacha20_xor(
result.asByteArray(), // result.asByteArray(),
message.asByteArray(), // message.asByteArray(),
message.size.toLong(), // message.size.toLong(),
nonce.asByteArray(), // nonce.asByteArray(),
key.asByteArray() // key.asByteArray()
) // )
//
return result // return result
} // }
//
actual fun xChacha20XorIc( // actual fun xChacha20XorIc(
message: UByteArray, // message: UByteArray,
nonce: UByteArray, // nonce: UByteArray,
initialCounter: ULong, // initialCounter: ULong,
key: UByteArray // key: UByteArray
): UByteArray { // ): UByteArray {
val result = UByteArray(message.size) // val result = UByteArray(message.size)
//
sodiumJna.crypto_stream_xchacha20_xor_ic( // sodiumJna.crypto_stream_xchacha20_xor_ic(
result.asByteArray(), // result.asByteArray(),
message.asByteArray(), // message.asByteArray(),
message.size.toLong(), // message.size.toLong(),
nonce.asByteArray(), // nonce.asByteArray(),
initialCounter.toLong(), // initialCounter.toLong(),
key.asByteArray() // key.asByteArray()
) // )
//
return result // return result
} // }
} }

View File

@ -153,70 +153,70 @@ actual object Stream {
return result return result
} }
actual fun xChacha20Keygen(): UByteArray { // actual fun xChacha20Keygen(): UByteArray {
val result = UByteArray(crypto_stream_xchacha20_KEYBYTES) // val result = UByteArray(crypto_stream_xchacha20_KEYBYTES)
val resultPinned = result.pin() // val resultPinned = result.pin()
//
crypto_stream_xchacha20_keygen(resultPinned.toPtr()) // crypto_stream_xchacha20_keygen(resultPinned.toPtr())
//
resultPinned.unpin() // resultPinned.unpin()
//
return result // return result
} // }
//
actual fun xChacha20Xor( // actual fun xChacha20Xor(
message: UByteArray, // message: UByteArray,
nonce: UByteArray, // nonce: UByteArray,
key: UByteArray // key: UByteArray
): UByteArray { // ): UByteArray {
val result = UByteArray(message.size) // val result = UByteArray(message.size)
val messagePinned = message.pin() // val messagePinned = message.pin()
val resultPinned = result.pin() // val resultPinned = result.pin()
val noncePinned = nonce.pin() // val noncePinned = nonce.pin()
val keyPinned = key.pin() // val keyPinned = key.pin()
//
crypto_stream_xchacha20_xor( // crypto_stream_xchacha20_xor(
resultPinned.toPtr(), // resultPinned.toPtr(),
messagePinned.toPtr(), // messagePinned.toPtr(),
message.size.convert(), // message.size.convert(),
noncePinned.toPtr(), // noncePinned.toPtr(),
keyPinned.toPtr() // keyPinned.toPtr()
) // )
//
messagePinned.unpin() // messagePinned.unpin()
resultPinned.unpin() // resultPinned.unpin()
noncePinned.unpin() // noncePinned.unpin()
keyPinned.unpin() // keyPinned.unpin()
//
return result // return result
} // }
//
actual fun xChacha20XorIc( // actual fun xChacha20XorIc(
message: UByteArray, // message: UByteArray,
nonce: UByteArray, // nonce: UByteArray,
initialCounter: ULong, // initialCounter: ULong,
key: UByteArray // key: UByteArray
): UByteArray { // ): UByteArray {
val result = UByteArray(message.size) // val result = UByteArray(message.size)
val messagePinned = message.pin() // val messagePinned = message.pin()
val resultPinned = result.pin() // val resultPinned = result.pin()
val noncePinned = nonce.pin() // val noncePinned = nonce.pin()
val keyPinned = key.pin() // val keyPinned = key.pin()
//
crypto_stream_xchacha20_xor_ic( // crypto_stream_xchacha20_xor_ic(
resultPinned.toPtr(), // resultPinned.toPtr(),
messagePinned.toPtr(), // messagePinned.toPtr(),
message.size.convert(), // message.size.convert(),
noncePinned.toPtr(), // noncePinned.toPtr(),
initialCounter.convert(), // initialCounter.convert(),
keyPinned.toPtr() // keyPinned.toPtr()
) // )
//
messagePinned.unpin() // messagePinned.unpin()
resultPinned.unpin() // resultPinned.unpin()
noncePinned.unpin() // noncePinned.unpin()
keyPinned.unpin() // keyPinned.unpin()
//
return result // return result
} // }
} }

View File

@ -143,9 +143,9 @@ native libsodium library.
| crypto_stream_chacha20_xor | :heavy_check_mark: | | crypto_stream_chacha20_xor | :heavy_check_mark: |
| crypto_stream_chacha20_xor_ic | :heavy_check_mark: | | crypto_stream_chacha20_xor_ic | :heavy_check_mark: |
| crypto_stream_keygen | Other XSalsa20 primitives are not available, so I'm leaving this out as well| | crypto_stream_keygen | Other XSalsa20 primitives are not available, so I'm leaving this out as well|
| crypto_stream_xchacha20_keygen | :heavy_check_mark: | | crypto_stream_xchacha20_keygen | Not at the moment |
| crypto_stream_xchacha20_xor | :heavy_check_mark: | | crypto_stream_xchacha20_xor | Not at the moment |
| crypto_stream_xchacha20_xor_ic | :heavy_check_mark: | | crypto_stream_xchacha20_xor_ic | Not at the moment |
| randombytes_buf | :heavy_check_mark: | | randombytes_buf | :heavy_check_mark: |
| randombytes_buf_deterministic | :heavy_check_mark: | | randombytes_buf_deterministic | :heavy_check_mark: |
| randombytes_close | not present in LazySodium | | randombytes_close | not present in LazySodium |