Added box:

This commit is contained in:
Ugljesa Jovanovic committed 2021-02-22 22:51:15 +01:00
1 parent f0511e0ff1
commit f7815d009e
2 files changed
+127 -40

No files matched your search

@@ -770,39 +770,126 @@ interface JnaLibsodiumInterface : Library {
inputLength: Long,
key: ByteArray
): Int
//
// // ---- Auth end ----
//
// // ---- Box ----
//
// fun crypto_box_keypair() : dynamic
// fun crypto_box_seed_keypair(seed : Uint8Array) : dynamic
// fun crypto_box_easy(message: Uint8Array,
// nonce: Uint8Array,
// recipientsPublicKey: Uint8Array,
// sendersSecretKey: Uint8Array) : Uint8Array
// fun crypto_box_open_easy(ciphertext: Uint8Array,
// nonce: Uint8Array,
// sendersPublicKey: Uint8Array,
// recipientsSecretKey: Uint8Array) : Uint8Array
// fun crypto_box_detached(message: Uint8Array,
// nonce: Uint8Array,
// recipientsPublicKey: Uint8Array,
// sendersSecretKey: Uint8Array) : dynamic
// fun crypto_box_open_detached(ciphertext: Uint8Array,
// tag: Uint8Array,
// nonce: Uint8Array,
// sendersPublicKey: Uint8Array,
// recipientsSecretKey: Uint8Array) : Uint8Array
// fun crypto_box_beforenm(publicKey: Uint8Array, secretKey: Uint8Array) : Uint8Array
// fun crypto_box_easy_afternm(message: Uint8Array,
// nonce: Uint8Array,
// precomputedKey: Uint8Array) : Uint8Array
// fun crypto_box_open_easy_afternm(ciphertext: Uint8Array,
// nonce: Uint8Array,
// precomputedKey: Uint8Array) : Uint8Array
// fun crypto_box_seal(message: Uint8Array, recipientsPublicKey: Uint8Array) : Uint8Array
// fun crypto_box_seal_open(ciphertext: Uint8Array, recipientsPublicKey: Uint8Array, recipientsSecretKey: Uint8Array) : Uint8Array
// int crypto_box_keypair(unsigned char *pk, unsigned char *sk)
fun crypto_box_keypair(publicKey: ByteArray, secretKey: ByteArray)
// int crypto_box_seed_keypair(unsigned char *pk, unsigned char *sk,
// const unsigned char *seed)
fun crypto_box_seed_keypair(
publicKey: ByteArray,
secretKey: ByteArray,
seed: ByteArray
) : Int
// int crypto_box_easy(unsigned char *c, const unsigned char *m,
// unsigned long long mlen, const unsigned char *n,
// const unsigned char *pk, const unsigned char *sk)
fun crypto_box_easy(
ciphertext: ByteArray,
message: ByteArray,
messageLength: Long,
nonce: ByteArray,
recipientPublicKey: ByteArray,
senderSecretKey: ByteArray
) : Int
// int crypto_box_open_easy(unsigned char *m, const unsigned char *c,
// unsigned long long clen, const unsigned char *n,
// const unsigned char *pk, const unsigned char *sk)
fun crypto_box_open_easy(
message: ByteArray,
ciphertext: ByteArray,
ciphertextLength: Long,
nonce: ByteArray,
senderPublickKey: ByteArray,
recipientSecretKey: ByteArray
) : Int
// int crypto_box_detached(unsigned char *c, unsigned char *mac,
// const unsigned char *m, unsigned long long mlen,
// const unsigned char *n, const unsigned char *pk,
// const unsigned char *sk)
fun crypto_box_detached(
ciphertext: ByteArray,
mac: ByteArray,
message: ByteArray,
messageLength: Long,
nonce: ByteArray,
recipientPublicKey: ByteArray,
senderSecretKey: ByteArray
) : Int
// int crypto_box_open_detached(
// unsigned char *m, const unsigned char *c,
// const unsigned char *mac,
// unsigned long long clen,
// const unsigned char *n,
// const unsigned char *pk,
// const unsigned char *sk)
fun crypto_box_open_detached(
message: ByteArray,
ciphertext: ByteArray,
mac: ByteArray,
ciphertextLength: Long,
nonce: ByteArray,
senderPublickKey: ByteArray,
recipientSecretKey: ByteArray
) : Int
// int crypto_box_beforenm(unsigned char *k, const unsigned char *pk,
// const unsigned char *sk)
fun crypto_box_beforenm(
sessionKey: ByteArray,
publicKey: ByteArray,
secretKey: ByteArray
) : Int
// int crypto_box_easy_afternm(unsigned char *c, const unsigned char *m,
// unsigned long long mlen, const unsigned char *n,
// const unsigned char *k)
fun crypto_box_easy_afternm(
ciphertext: ByteArray,
message: ByteArray,
messageLength: Long,
nonce: ByteArray,
sessionKey: ByteArray
) : Int
// int crypto_box_open_easy_afternm(unsigned char *m, const unsigned char *c,
// unsigned long long clen, const unsigned char *n,
// const unsigned char *k)
fun crypto_box_open_easy_afternm(
message: ByteArray,
ciphertext: ByteArray,
ciphertextLength: Long,
nonce: ByteArray,
sessionKey: ByteArray
) : Int
// int crypto_box_seal(unsigned char *c, const unsigned char *m,
// unsigned long long mlen, const unsigned char *pk)
fun crypto_box_seal(
ciphertext: ByteArray,
message: ByteArray,
messageLength: Long,
recipientPublicKey: ByteArray
) : Int
// int crypto_box_seal_open(unsigned char *m, const unsigned char *c,
// unsigned long long clen,
// const unsigned char *pk, const unsigned char *sk)
fun crypto_box_seal_open(
message: ByteArray,
ciphertext: ByteArray,
ciphertextLength: Long,
senderPublickKey: ByteArray,
recipientSecretKey: ByteArray
) : Int
//
// // ---- Box end ----
//
@@ -1,6 +1,6 @@
package com.ionspin.kotlin.crypto.box
import com.ionspin.kotlin.crypto.LibsodiumInitializer.sodium
import com.ionspin.kotlin.crypto.LibsodiumInitializer.sodiumJna
actual object Box {
/**
@@ -11,7 +11,7 @@ actual object Box {
actual fun keypair(): BoxKeyPair {
val publicKey = UByteArray(crypto_box_PUBLICKEYBYTES)
val secretKey = UByteArray(crypto_box_SECRETKEYBYTES)
sodium.crypto_box_keypair(publicKey.asByteArray(), secretKey.asByteArray())
sodiumJna.crypto_box_keypair(publicKey.asByteArray(), secretKey.asByteArray())
return BoxKeyPair(publicKey, secretKey)
}
@@ -21,7 +21,7 @@ actual object Box {
actual fun seedKeypair(seed: UByteArray): BoxKeyPair {
val publicKey = UByteArray(crypto_box_PUBLICKEYBYTES)
val secretKey = UByteArray(crypto_box_SECRETKEYBYTES)
sodium.crypto_box_seed_keypair(publicKey.asByteArray(), secretKey.asByteArray(), seed.asByteArray())
sodiumJna.crypto_box_seed_keypair(publicKey.asByteArray(), secretKey.asByteArray(), seed.asByteArray())
return BoxKeyPair(publicKey, secretKey)
}
@@ -39,7 +39,7 @@ actual object Box {
sendersSecretKey: UByteArray
): UByteArray {
val ciphertext = UByteArray(message.size + crypto_box_MACBYTES)
sodium.crypto_box_easy(
sodiumJna.crypto_box_easy(
ciphertext.asByteArray(),
message.asByteArray(),
message.size.toLong(),
@@ -64,7 +64,7 @@ actual object Box {
recipientsSecretKey: UByteArray
): UByteArray {
val message = UByteArray(ciphertext.size - crypto_box_MACBYTES)
val validationResult = sodium.crypto_box_open_easy(
val validationResult = sodiumJna.crypto_box_open_easy(
message.asByteArray(),
ciphertext.asByteArray(),
ciphertext.size.toLong(),
@@ -85,7 +85,7 @@ actual object Box {
*/
actual fun beforeNM(publicKey: UByteArray, secretKey: UByteArray): UByteArray {
val sessionKey = UByteArray(crypto_box_BEFORENMBYTES)
sodium.crypto_box_beforenm(sessionKey.asByteArray(), publicKey.asByteArray(), secretKey.asByteArray())
sodiumJna.crypto_box_beforenm(sessionKey.asByteArray(), publicKey.asByteArray(), secretKey.asByteArray())
return sessionKey
}
@@ -99,7 +99,7 @@ actual object Box {
): UByteArray {
val ciphertext = UByteArray(message.size + crypto_box_MACBYTES)
sodium.crypto_box_easy_afternm(
sodiumJna.crypto_box_easy_afternm(
ciphertext.asByteArray(),
message.asByteArray(),
message.size.toLong(),
@@ -119,7 +119,7 @@ actual object Box {
precomputedKey: UByteArray
): UByteArray {
val message = UByteArray(ciphertext.size - crypto_box_MACBYTES)
val validationResult = sodium.crypto_box_open_easy_afternm(
val validationResult = sodiumJna.crypto_box_open_easy_afternm(
message.asByteArray(),
ciphertext.asByteArray(),
ciphertext.size.toLong(),
@@ -149,7 +149,7 @@ actual object Box {
val ciphertext = UByteArray(message.size)
val tag = UByteArray(crypto_box_MACBYTES)
sodium.crypto_box_detached(
sodiumJna.crypto_box_detached(
ciphertext.asByteArray(),
tag.asByteArray(),
message.asByteArray(),
@@ -177,7 +177,7 @@ actual object Box {
): UByteArray {
val message = UByteArray(ciphertext.size)
val validationResult = sodium.crypto_box_open_detached(
val validationResult = sodiumJna.crypto_box_open_detached(
message.asByteArray(),
ciphertext.asByteArray(),
tag.asByteArray(),
@@ -196,7 +196,7 @@ actual object Box {
actual fun seal(message: UByteArray, recipientsPublicKey: UByteArray): UByteArray {
val ciphertextWithPublicKey = UByteArray(message.size + crypto_box_SEALBYTES)
sodium.crypto_box_seal(
sodiumJna.crypto_box_seal(
ciphertextWithPublicKey.asByteArray(),
message.asByteArray(),
message.size.toLong(),
@@ -207,7 +207,7 @@ actual object Box {
actual fun sealOpen(ciphertext: UByteArray, recipientsPublicKey: UByteArray, recipientsSecretKey: UByteArray): UByteArray {
val message = UByteArray(ciphertext.size - crypto_box_SEALBYTES)
val validationResult = sodium.crypto_box_seal_open(
val validationResult = sodiumJna.crypto_box_seal_open(
message.asByteArray(),
ciphertext.asByteArray(),
ciphertext.size.toLong(),