Disable xchacha20 stream for now, as it seems to be missing on ios32arm build. Fix android sdk path
This commit is contained in:
		
							parent
							
								
									b85b75e732
								
							
						
					
					
						commit
						8249881eb1
					
				@ -12,6 +12,7 @@ workflow:
 | 
			
		||||
variables:
 | 
			
		||||
  GIT_SUBMODULE_STRATEGY: recursive
 | 
			
		||||
  CHROME_BIN: "chromium"
 | 
			
		||||
  ANDROID_SDK_ROOT: "/android-sdk"
 | 
			
		||||
 | 
			
		||||
simpleCheck:
 | 
			
		||||
  stage: prepare
 | 
			
		||||
 | 
			
		||||
@ -23,8 +23,8 @@ expect object Stream {
 | 
			
		||||
    fun chacha20IetfXor(message : UByteArray, nonce: UByteArray, key: UByteArray) : UByteArray
 | 
			
		||||
    fun chacha20IetfXorIc(message : UByteArray, nonce: UByteArray, initialCounter: ULong, key: UByteArray) : UByteArray
 | 
			
		||||
 | 
			
		||||
    fun xChacha20Keygen() : UByteArray
 | 
			
		||||
 | 
			
		||||
    fun xChacha20Xor(message : UByteArray, nonce: UByteArray, key: UByteArray) : UByteArray
 | 
			
		||||
    fun xChacha20XorIc(message : UByteArray, nonce: UByteArray, initialCounter: ULong, key: UByteArray) : UByteArray
 | 
			
		||||
//    fun xChacha20Keygen() : UByteArray
 | 
			
		||||
//
 | 
			
		||||
//    fun xChacha20Xor(message : UByteArray, nonce: UByteArray, key: UByteArray) : UByteArray
 | 
			
		||||
//    fun xChacha20XorIc(message : UByteArray, nonce: UByteArray, initialCounter: ULong, key: UByteArray) : UByteArray
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -69,25 +69,25 @@ class StreamTest {
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    fun testXChaCha20IetfStream() = runTest {
 | 
			
		||||
        LibsodiumInitializer.initializeWithCallback {
 | 
			
		||||
            val message = "This is a cha cha message".encodeToUByteArray()
 | 
			
		||||
            val nonce = LibsodiumRandom.bufDeterministic(crypto_stream_xchacha20_NONCEBYTES, seed)
 | 
			
		||||
            val key = Stream.xChacha20Keygen()
 | 
			
		||||
            val encryptedUsingLibsodium = Stream.xChacha20Xor(message, nonce, key)
 | 
			
		||||
            val encryptedUsingLibsodiumWithInitialCounter = Stream.xChacha20XorIc(message, nonce, 0U, key)
 | 
			
		||||
            println(encryptedUsingLibsodium.toHexString())
 | 
			
		||||
            println(encryptedUsingLibsodiumWithInitialCounter.toHexString())
 | 
			
		||||
            assertTrue {
 | 
			
		||||
                encryptedUsingLibsodium.contentEquals(encryptedUsingLibsodiumWithInitialCounter)
 | 
			
		||||
            }
 | 
			
		||||
            val decryptedUsingLibsodium = Stream.xChacha20Xor(encryptedUsingLibsodium, nonce, key)
 | 
			
		||||
            println(message.toHexString())
 | 
			
		||||
            println(decryptedUsingLibsodium.toHexString())
 | 
			
		||||
            assertTrue {
 | 
			
		||||
                decryptedUsingLibsodium.contentEquals(message)
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
//    @Test
 | 
			
		||||
//    fun testXChaCha20IetfStream() = runTest {
 | 
			
		||||
//        LibsodiumInitializer.initializeWithCallback {
 | 
			
		||||
//            val message = "This is a cha cha message".encodeToUByteArray()
 | 
			
		||||
//            val nonce = LibsodiumRandom.bufDeterministic(crypto_stream_xchacha20_NONCEBYTES, seed)
 | 
			
		||||
//            val key = Stream.xChacha20Keygen()
 | 
			
		||||
//            val encryptedUsingLibsodium = Stream.xChacha20Xor(message, nonce, key)
 | 
			
		||||
//            val encryptedUsingLibsodiumWithInitialCounter = Stream.xChacha20XorIc(message, nonce, 0U, key)
 | 
			
		||||
//            println(encryptedUsingLibsodium.toHexString())
 | 
			
		||||
//            println(encryptedUsingLibsodiumWithInitialCounter.toHexString())
 | 
			
		||||
//            assertTrue {
 | 
			
		||||
//                encryptedUsingLibsodium.contentEquals(encryptedUsingLibsodiumWithInitialCounter)
 | 
			
		||||
//            }
 | 
			
		||||
//            val decryptedUsingLibsodium = Stream.xChacha20Xor(encryptedUsingLibsodium, nonce, key)
 | 
			
		||||
//            println(message.toHexString())
 | 
			
		||||
//            println(decryptedUsingLibsodium.toHexString())
 | 
			
		||||
//            assertTrue {
 | 
			
		||||
//                decryptedUsingLibsodium.contentEquals(message)
 | 
			
		||||
//            }
 | 
			
		||||
//        }
 | 
			
		||||
//    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -80,41 +80,41 @@ actual object Stream {
 | 
			
		||||
        return result.toUByteArray()
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    actual fun xChacha20Keygen(): UByteArray {
 | 
			
		||||
        val result = getSodium().crypto_stream_xchacha20_keygen()
 | 
			
		||||
 | 
			
		||||
        return result.toUByteArray()
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    actual fun xChacha20Xor(
 | 
			
		||||
        message: UByteArray,
 | 
			
		||||
        nonce: UByteArray,
 | 
			
		||||
        key: UByteArray
 | 
			
		||||
    ): UByteArray {
 | 
			
		||||
        val result = getSodium().crypto_stream_xchacha20_xor(
 | 
			
		||||
            message.toUInt8Array(),
 | 
			
		||||
            nonce.toUInt8Array(),
 | 
			
		||||
            key.toUInt8Array()
 | 
			
		||||
        )
 | 
			
		||||
 | 
			
		||||
        return result.toUByteArray()
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    actual fun xChacha20XorIc(
 | 
			
		||||
        message: UByteArray,
 | 
			
		||||
        nonce: UByteArray,
 | 
			
		||||
        initialCounter: ULong,
 | 
			
		||||
        key: UByteArray
 | 
			
		||||
    ): UByteArray {
 | 
			
		||||
        val result = getSodium().crypto_stream_xchacha20_xor_ic(
 | 
			
		||||
            message.toUInt8Array(),
 | 
			
		||||
            nonce.toUInt8Array(),
 | 
			
		||||
            initialCounter.toUInt(),
 | 
			
		||||
            key.toUInt8Array()
 | 
			
		||||
        )
 | 
			
		||||
 | 
			
		||||
        return result.toUByteArray()
 | 
			
		||||
    }
 | 
			
		||||
//    actual fun xChacha20Keygen(): UByteArray {
 | 
			
		||||
//        val result = getSodium().crypto_stream_xchacha20_keygen()
 | 
			
		||||
//
 | 
			
		||||
//        return result.toUByteArray()
 | 
			
		||||
//    }
 | 
			
		||||
//
 | 
			
		||||
//    actual fun xChacha20Xor(
 | 
			
		||||
//        message: UByteArray,
 | 
			
		||||
//        nonce: UByteArray,
 | 
			
		||||
//        key: UByteArray
 | 
			
		||||
//    ): UByteArray {
 | 
			
		||||
//        val result = getSodium().crypto_stream_xchacha20_xor(
 | 
			
		||||
//            message.toUInt8Array(),
 | 
			
		||||
//            nonce.toUInt8Array(),
 | 
			
		||||
//            key.toUInt8Array()
 | 
			
		||||
//        )
 | 
			
		||||
//
 | 
			
		||||
//        return result.toUByteArray()
 | 
			
		||||
//    }
 | 
			
		||||
//
 | 
			
		||||
//    actual fun xChacha20XorIc(
 | 
			
		||||
//        message: UByteArray,
 | 
			
		||||
//        nonce: UByteArray,
 | 
			
		||||
//        initialCounter: ULong,
 | 
			
		||||
//        key: UByteArray
 | 
			
		||||
//    ): UByteArray {
 | 
			
		||||
//        val result = getSodium().crypto_stream_xchacha20_xor_ic(
 | 
			
		||||
//            message.toUInt8Array(),
 | 
			
		||||
//            nonce.toUInt8Array(),
 | 
			
		||||
//            initialCounter.toUInt(),
 | 
			
		||||
//            key.toUInt8Array()
 | 
			
		||||
//        )
 | 
			
		||||
//
 | 
			
		||||
//        return result.toUByteArray()
 | 
			
		||||
//    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -96,49 +96,49 @@ actual object Stream {
 | 
			
		||||
        return result
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    actual fun xChacha20Keygen(): UByteArray {
 | 
			
		||||
        val result = UByteArray(crypto_stream_chacha20_KEYBYTES)
 | 
			
		||||
 | 
			
		||||
        sodiumJna.crypto_stream_xchacha20_keygen(result.asByteArray())
 | 
			
		||||
 | 
			
		||||
        return result
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    actual fun xChacha20Xor(
 | 
			
		||||
        message: UByteArray,
 | 
			
		||||
        nonce: UByteArray,
 | 
			
		||||
        key: UByteArray
 | 
			
		||||
    ): UByteArray {
 | 
			
		||||
        val result = UByteArray(message.size)
 | 
			
		||||
 | 
			
		||||
        sodiumJna.crypto_stream_xchacha20_xor(
 | 
			
		||||
            result.asByteArray(),
 | 
			
		||||
            message.asByteArray(),
 | 
			
		||||
            message.size.toLong(),
 | 
			
		||||
            nonce.asByteArray(),
 | 
			
		||||
            key.asByteArray()
 | 
			
		||||
        )
 | 
			
		||||
 | 
			
		||||
        return result
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    actual fun xChacha20XorIc(
 | 
			
		||||
        message: UByteArray,
 | 
			
		||||
        nonce: UByteArray,
 | 
			
		||||
        initialCounter: ULong,
 | 
			
		||||
        key: UByteArray
 | 
			
		||||
    ): UByteArray {
 | 
			
		||||
        val result = UByteArray(message.size)
 | 
			
		||||
 | 
			
		||||
        sodiumJna.crypto_stream_xchacha20_xor_ic(
 | 
			
		||||
            result.asByteArray(),
 | 
			
		||||
            message.asByteArray(),
 | 
			
		||||
            message.size.toLong(),
 | 
			
		||||
            nonce.asByteArray(),
 | 
			
		||||
            initialCounter.toLong(),
 | 
			
		||||
            key.asByteArray()
 | 
			
		||||
        )
 | 
			
		||||
 | 
			
		||||
        return result
 | 
			
		||||
    }
 | 
			
		||||
//    actual fun xChacha20Keygen(): UByteArray {
 | 
			
		||||
//        val result = UByteArray(crypto_stream_chacha20_KEYBYTES)
 | 
			
		||||
//
 | 
			
		||||
//        sodiumJna.crypto_stream_xchacha20_keygen(result.asByteArray())
 | 
			
		||||
//
 | 
			
		||||
//        return result
 | 
			
		||||
//    }
 | 
			
		||||
//
 | 
			
		||||
//    actual fun xChacha20Xor(
 | 
			
		||||
//        message: UByteArray,
 | 
			
		||||
//        nonce: UByteArray,
 | 
			
		||||
//        key: UByteArray
 | 
			
		||||
//    ): UByteArray {
 | 
			
		||||
//        val result = UByteArray(message.size)
 | 
			
		||||
//
 | 
			
		||||
//        sodiumJna.crypto_stream_xchacha20_xor(
 | 
			
		||||
//            result.asByteArray(),
 | 
			
		||||
//            message.asByteArray(),
 | 
			
		||||
//            message.size.toLong(),
 | 
			
		||||
//            nonce.asByteArray(),
 | 
			
		||||
//            key.asByteArray()
 | 
			
		||||
//        )
 | 
			
		||||
//
 | 
			
		||||
//        return result
 | 
			
		||||
//    }
 | 
			
		||||
//
 | 
			
		||||
//    actual fun xChacha20XorIc(
 | 
			
		||||
//        message: UByteArray,
 | 
			
		||||
//        nonce: UByteArray,
 | 
			
		||||
//        initialCounter: ULong,
 | 
			
		||||
//        key: UByteArray
 | 
			
		||||
//    ): UByteArray {
 | 
			
		||||
//        val result = UByteArray(message.size)
 | 
			
		||||
//
 | 
			
		||||
//        sodiumJna.crypto_stream_xchacha20_xor_ic(
 | 
			
		||||
//            result.asByteArray(),
 | 
			
		||||
//            message.asByteArray(),
 | 
			
		||||
//            message.size.toLong(),
 | 
			
		||||
//            nonce.asByteArray(),
 | 
			
		||||
//            initialCounter.toLong(),
 | 
			
		||||
//            key.asByteArray()
 | 
			
		||||
//        )
 | 
			
		||||
//
 | 
			
		||||
//        return result
 | 
			
		||||
//    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -153,70 +153,70 @@ actual object Stream {
 | 
			
		||||
        return result
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    actual fun xChacha20Keygen(): UByteArray {
 | 
			
		||||
        val result = UByteArray(crypto_stream_xchacha20_KEYBYTES)
 | 
			
		||||
        val resultPinned = result.pin()
 | 
			
		||||
 | 
			
		||||
        crypto_stream_xchacha20_keygen(resultPinned.toPtr())
 | 
			
		||||
 | 
			
		||||
        resultPinned.unpin()
 | 
			
		||||
 | 
			
		||||
        return result
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    actual fun xChacha20Xor(
 | 
			
		||||
        message: UByteArray,
 | 
			
		||||
        nonce: UByteArray,
 | 
			
		||||
        key: UByteArray
 | 
			
		||||
    ): UByteArray {
 | 
			
		||||
        val result = UByteArray(message.size)
 | 
			
		||||
        val messagePinned = message.pin()
 | 
			
		||||
        val resultPinned = result.pin()
 | 
			
		||||
        val noncePinned = nonce.pin()
 | 
			
		||||
        val keyPinned = key.pin()
 | 
			
		||||
 | 
			
		||||
        crypto_stream_xchacha20_xor(
 | 
			
		||||
            resultPinned.toPtr(),
 | 
			
		||||
            messagePinned.toPtr(),
 | 
			
		||||
            message.size.convert(),
 | 
			
		||||
            noncePinned.toPtr(),
 | 
			
		||||
            keyPinned.toPtr()
 | 
			
		||||
        )
 | 
			
		||||
 | 
			
		||||
        messagePinned.unpin()
 | 
			
		||||
        resultPinned.unpin()
 | 
			
		||||
        noncePinned.unpin()
 | 
			
		||||
        keyPinned.unpin()
 | 
			
		||||
 | 
			
		||||
        return result
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    actual fun xChacha20XorIc(
 | 
			
		||||
        message: UByteArray,
 | 
			
		||||
        nonce: UByteArray,
 | 
			
		||||
        initialCounter: ULong,
 | 
			
		||||
        key: UByteArray
 | 
			
		||||
    ): UByteArray {
 | 
			
		||||
        val result = UByteArray(message.size)
 | 
			
		||||
        val messagePinned = message.pin()
 | 
			
		||||
        val resultPinned = result.pin()
 | 
			
		||||
        val noncePinned = nonce.pin()
 | 
			
		||||
        val keyPinned = key.pin()
 | 
			
		||||
 | 
			
		||||
        crypto_stream_xchacha20_xor_ic(
 | 
			
		||||
            resultPinned.toPtr(),
 | 
			
		||||
            messagePinned.toPtr(),
 | 
			
		||||
            message.size.convert(),
 | 
			
		||||
            noncePinned.toPtr(),
 | 
			
		||||
            initialCounter.convert(),
 | 
			
		||||
            keyPinned.toPtr()
 | 
			
		||||
        )
 | 
			
		||||
 | 
			
		||||
        messagePinned.unpin()
 | 
			
		||||
        resultPinned.unpin()
 | 
			
		||||
        noncePinned.unpin()
 | 
			
		||||
        keyPinned.unpin()
 | 
			
		||||
 | 
			
		||||
        return result
 | 
			
		||||
    }
 | 
			
		||||
//    actual fun xChacha20Keygen(): UByteArray {
 | 
			
		||||
//        val result = UByteArray(crypto_stream_xchacha20_KEYBYTES)
 | 
			
		||||
//        val resultPinned = result.pin()
 | 
			
		||||
//
 | 
			
		||||
//        crypto_stream_xchacha20_keygen(resultPinned.toPtr())
 | 
			
		||||
//
 | 
			
		||||
//        resultPinned.unpin()
 | 
			
		||||
//
 | 
			
		||||
//        return result
 | 
			
		||||
//    }
 | 
			
		||||
//
 | 
			
		||||
//    actual fun xChacha20Xor(
 | 
			
		||||
//        message: UByteArray,
 | 
			
		||||
//        nonce: UByteArray,
 | 
			
		||||
//        key: UByteArray
 | 
			
		||||
//    ): UByteArray {
 | 
			
		||||
//        val result = UByteArray(message.size)
 | 
			
		||||
//        val messagePinned = message.pin()
 | 
			
		||||
//        val resultPinned = result.pin()
 | 
			
		||||
//        val noncePinned = nonce.pin()
 | 
			
		||||
//        val keyPinned = key.pin()
 | 
			
		||||
//
 | 
			
		||||
//        crypto_stream_xchacha20_xor(
 | 
			
		||||
//            resultPinned.toPtr(),
 | 
			
		||||
//            messagePinned.toPtr(),
 | 
			
		||||
//            message.size.convert(),
 | 
			
		||||
//            noncePinned.toPtr(),
 | 
			
		||||
//            keyPinned.toPtr()
 | 
			
		||||
//        )
 | 
			
		||||
//
 | 
			
		||||
//        messagePinned.unpin()
 | 
			
		||||
//        resultPinned.unpin()
 | 
			
		||||
//        noncePinned.unpin()
 | 
			
		||||
//        keyPinned.unpin()
 | 
			
		||||
//
 | 
			
		||||
//        return result
 | 
			
		||||
//    }
 | 
			
		||||
//
 | 
			
		||||
//    actual fun xChacha20XorIc(
 | 
			
		||||
//        message: UByteArray,
 | 
			
		||||
//        nonce: UByteArray,
 | 
			
		||||
//        initialCounter: ULong,
 | 
			
		||||
//        key: UByteArray
 | 
			
		||||
//    ): UByteArray {
 | 
			
		||||
//        val result = UByteArray(message.size)
 | 
			
		||||
//        val messagePinned = message.pin()
 | 
			
		||||
//        val resultPinned = result.pin()
 | 
			
		||||
//        val noncePinned = nonce.pin()
 | 
			
		||||
//        val keyPinned = key.pin()
 | 
			
		||||
//
 | 
			
		||||
//        crypto_stream_xchacha20_xor_ic(
 | 
			
		||||
//            resultPinned.toPtr(),
 | 
			
		||||
//            messagePinned.toPtr(),
 | 
			
		||||
//            message.size.convert(),
 | 
			
		||||
//            noncePinned.toPtr(),
 | 
			
		||||
//            initialCounter.convert(),
 | 
			
		||||
//            keyPinned.toPtr()
 | 
			
		||||
//        )
 | 
			
		||||
//
 | 
			
		||||
//        messagePinned.unpin()
 | 
			
		||||
//        resultPinned.unpin()
 | 
			
		||||
//        noncePinned.unpin()
 | 
			
		||||
//        keyPinned.unpin()
 | 
			
		||||
//
 | 
			
		||||
//        return result
 | 
			
		||||
//    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -143,9 +143,9 @@ native libsodium library.
 | 
			
		||||
| crypto_stream_chacha20_xor | :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_xchacha20_keygen | :heavy_check_mark: | 
 | 
			
		||||
| crypto_stream_xchacha20_xor | :heavy_check_mark: |    
 | 
			
		||||
| crypto_stream_xchacha20_xor_ic | :heavy_check_mark: | 
 | 
			
		||||
| crypto_stream_xchacha20_keygen | Not at the moment | 
 | 
			
		||||
| crypto_stream_xchacha20_xor | Not at the moment |    
 | 
			
		||||
| crypto_stream_xchacha20_xor_ic | Not at the moment | 
 | 
			
		||||
| randombytes_buf | :heavy_check_mark: |    
 | 
			
		||||
| randombytes_buf_deterministic | :heavy_check_mark: |  
 | 
			
		||||
| randombytes_close | not present in LazySodium |  
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user