From bd3cbb1662caa1c6da1689e9eeb6fe6b8931dac0 Mon Sep 17 00:00:00 2001 From: Renee Vandervelde Date: Mon, 1 Jul 2024 20:07:15 -0500 Subject: [PATCH] Cleanup deprecated methods. Noticed a handful of deprecated methods and minor warnings while looking around. Replaces with recommended methods --- .../commonMain/kotlin/com/ionspin/kotlin/crypto/Api.kt | 4 +++- .../com/ionspin/kotlin/crypto/symmetric/XChaCha20.kt | 2 +- .../kotlin/com/ionspin/kotlin/crypto/util/CryptoUtil.kt | 4 ++-- .../kotlin/com/ionspin/kotlin/crypto/util/StringUtil.kt | 8 ++++---- .../kotlin/com.ionspin.kotlin.crypto/util/Util.kt | 4 ++-- .../kotlin/com/ionspin/kotlin/crypto/JsSodiumLoader.kt | 2 +- .../jsMain/kotlin/com/ionspin/kotlin/crypto/kdf/Kdf.kt | 2 +- .../com/ionspin/kotlin/crypto/pwhash/PasswordHash.kt | 2 +- .../com/ionspin/kotlin/crypto/util/LibsodiumUtil.kt | 2 +- 9 files changed, 16 insertions(+), 14 deletions(-) diff --git a/multiplatform-crypto-api/src/commonMain/kotlin/com/ionspin/kotlin/crypto/Api.kt b/multiplatform-crypto-api/src/commonMain/kotlin/com/ionspin/kotlin/crypto/Api.kt index 376ea57..f2dc250 100644 --- a/multiplatform-crypto-api/src/commonMain/kotlin/com/ionspin/kotlin/crypto/Api.kt +++ b/multiplatform-crypto-api/src/commonMain/kotlin/com/ionspin/kotlin/crypto/Api.kt @@ -3,13 +3,15 @@ package com.ionspin.kotlin.crypto import com.ionspin.kotlin.crypto.hash.MultipartHash import com.ionspin.kotlin.crypto.hash.encodeToUByteArray import com.ionspin.kotlin.crypto.util.toHexString +import kotlin.jvm.JvmInline /** * Created by Ugljesa Jovanovic * ugljesa.jovanovic@ionspin.com * on 23-Jun-2020 */ -inline class EncryptableString(val content: String) : Encryptable { +@JvmInline +value class EncryptableString(val content: String) : Encryptable { override fun toEncryptableForm(): UByteArray { return content.encodeToUByteArray() } diff --git a/multiplatform-crypto-api/src/commonMain/kotlin/com/ionspin/kotlin/crypto/symmetric/XChaCha20.kt b/multiplatform-crypto-api/src/commonMain/kotlin/com/ionspin/kotlin/crypto/symmetric/XChaCha20.kt index 4ed7c5b..c95fc56 100644 --- a/multiplatform-crypto-api/src/commonMain/kotlin/com/ionspin/kotlin/crypto/symmetric/XChaCha20.kt +++ b/multiplatform-crypto-api/src/commonMain/kotlin/com/ionspin/kotlin/crypto/symmetric/XChaCha20.kt @@ -44,4 +44,4 @@ interface XChaCha20KeyProvider { fun generateNewKey() : XChaCha20.Key fun createFromUByteArray(uByteArray: UByteArray) : XChaCha20.Key -} \ No newline at end of file +} diff --git a/multiplatform-crypto-api/src/commonMain/kotlin/com/ionspin/kotlin/crypto/util/CryptoUtil.kt b/multiplatform-crypto-api/src/commonMain/kotlin/com/ionspin/kotlin/crypto/util/CryptoUtil.kt index 6739eaa..3e4ebc7 100644 --- a/multiplatform-crypto-api/src/commonMain/kotlin/com/ionspin/kotlin/crypto/util/CryptoUtil.kt +++ b/multiplatform-crypto-api/src/commonMain/kotlin/com/ionspin/kotlin/crypto/util/CryptoUtil.kt @@ -8,13 +8,13 @@ package com.ionspin.kotlin.crypto.util val _emit = IntArray(0) fun UByteArray.overwriteWithZeroes() { - for (i in 0 until size) { + for (i in indices) { this[i] = 0U } } fun UIntArray.overwriteWithZeroes() { - for (i in 0 until size) { + for (i in indices) { this[i] = 0U } } diff --git a/multiplatform-crypto-api/src/commonMain/kotlin/com/ionspin/kotlin/crypto/util/StringUtil.kt b/multiplatform-crypto-api/src/commonMain/kotlin/com/ionspin/kotlin/crypto/util/StringUtil.kt index 0d665d5..991cc5d 100644 --- a/multiplatform-crypto-api/src/commonMain/kotlin/com/ionspin/kotlin/crypto/util/StringUtil.kt +++ b/multiplatform-crypto-api/src/commonMain/kotlin/com/ionspin/kotlin/crypto/util/StringUtil.kt @@ -7,22 +7,22 @@ package com.ionspin.kotlin.crypto.util */ fun Array.hexColumsPrint() { val printout = this.map { it.toString(16) }.chunked(16) - printout.forEach { println(it.joinToString(separator = " ") { it.toUpperCase() }) } + printout.forEach { println(it.joinToString(separator = " ") { it.uppercase() }) } } fun Array.hexColumsPrint(chunk : Int = 16) { val printout = this.map { it.toString(16).padStart(2, '0') }.chunked(chunk) - printout.forEach { println(it.joinToString(separator = " ") { it.toUpperCase() }) } + printout.forEach { println(it.joinToString(separator = " ") { it.uppercase() }) } } fun UByteArray.hexColumsPrint(chunk : Int = 16) { val printout = this.map { it.toString(16).padStart(2, '0') }.chunked(chunk) - printout.forEach { println(it.joinToString(separator = " ") { it.toUpperCase() }) } + printout.forEach { println(it.joinToString(separator = " ") { it.uppercase() }) } } fun Array.hexColumsPrint(chunk: Int = 3) { val printout = this.map { it.toString(16) }.chunked(chunk) - printout.forEach { println(it.joinToString(separator = " ") { it.toUpperCase() }) } + printout.forEach { println(it.joinToString(separator = " ") { it.uppercase() }) } } fun String.hexStringToTypedUByteArray() : Array { diff --git a/multiplatform-crypto-libsodium-bindings/src/commonMain/kotlin/com.ionspin.kotlin.crypto/util/Util.kt b/multiplatform-crypto-libsodium-bindings/src/commonMain/kotlin/com.ionspin.kotlin.crypto/util/Util.kt index 32ad60a..f008f8c 100644 --- a/multiplatform-crypto-libsodium-bindings/src/commonMain/kotlin/com.ionspin.kotlin.crypto/util/Util.kt +++ b/multiplatform-crypto-libsodium-bindings/src/commonMain/kotlin/com.ionspin.kotlin.crypto/util/Util.kt @@ -29,10 +29,10 @@ fun UByteArray.toHexString() : String { fun Array.hexColumnsPrint(chunk: Int = 16) { val printout = this.map { it.toString(16).padStart(2, '0') }.chunked(chunk) - printout.forEach { println(it.joinToString(separator = " ") { it.toUpperCase() }) } + printout.forEach { println(it.joinToString(separator = " ") { it.uppercase() }) } } fun UByteArray.hexColumnsPrint(chunk: Int = 16) { val printout = this.map { it.toString(16).padStart(2, '0') }.chunked(chunk) - printout.forEach { println(it.joinToString(separator = " ") { it.toUpperCase() }) } + printout.forEach { println(it.joinToString(separator = " ") { it.uppercase() }) } } diff --git a/multiplatform-crypto-libsodium-bindings/src/jsMain/kotlin/com/ionspin/kotlin/crypto/JsSodiumLoader.kt b/multiplatform-crypto-libsodium-bindings/src/jsMain/kotlin/com/ionspin/kotlin/crypto/JsSodiumLoader.kt index e1211da..a4509a0 100644 --- a/multiplatform-crypto-libsodium-bindings/src/jsMain/kotlin/com/ionspin/kotlin/crypto/JsSodiumLoader.kt +++ b/multiplatform-crypto-libsodium-bindings/src/jsMain/kotlin/com/ionspin/kotlin/crypto/JsSodiumLoader.kt @@ -27,7 +27,7 @@ object JsSodiumLoader { } - suspend fun load() = suspendCoroutine { continuation -> + suspend fun load() = suspendCoroutine { continuation -> if (!getSodiumLoaded()) { _libsodiumPromise.then { sodium_init() diff --git a/multiplatform-crypto-libsodium-bindings/src/jsMain/kotlin/com/ionspin/kotlin/crypto/kdf/Kdf.kt b/multiplatform-crypto-libsodium-bindings/src/jsMain/kotlin/com/ionspin/kotlin/crypto/kdf/Kdf.kt index 028a19e..8cf0a31 100644 --- a/multiplatform-crypto-libsodium-bindings/src/jsMain/kotlin/com/ionspin/kotlin/crypto/kdf/Kdf.kt +++ b/multiplatform-crypto-libsodium-bindings/src/jsMain/kotlin/com/ionspin/kotlin/crypto/kdf/Kdf.kt @@ -27,7 +27,7 @@ actual object Kdf { ): UByteArray { return getSodium().crypto_kdf_derive_from_key( subkeyLength.toUInt(), - subkeyId.toUInt(), + subkeyId, context, masterKey.toUInt8Array() ).toUByteArray() diff --git a/multiplatform-crypto-libsodium-bindings/src/jsMain/kotlin/com/ionspin/kotlin/crypto/pwhash/PasswordHash.kt b/multiplatform-crypto-libsodium-bindings/src/jsMain/kotlin/com/ionspin/kotlin/crypto/pwhash/PasswordHash.kt index af174b2..82bf6c4 100644 --- a/multiplatform-crypto-libsodium-bindings/src/jsMain/kotlin/com/ionspin/kotlin/crypto/pwhash/PasswordHash.kt +++ b/multiplatform-crypto-libsodium-bindings/src/jsMain/kotlin/com/ionspin/kotlin/crypto/pwhash/PasswordHash.kt @@ -8,7 +8,7 @@ import ext.libsodium.com.ionspin.kotlin.crypto.toUInt8Array actual object PasswordHash { /** * The crypto_pwhash() function derives an outlen bytes long key from a password passwd whose length is passwdlen - * and a salt salt whose fixed length is crypto_pwhash_SALTBYTES bytes. passwdlen should be at least crypto_pwhash_ + * and a salt whose fixed length is crypto_pwhash_SALTBYTES bytes. passwdlen should be at least crypto_pwhash_ * PASSWD_MIN and crypto_pwhash_PASSWD_MAX. outlen should be at least crypto_pwhash_BYTES_MIN = 16 (128 bits) and * at most crypto_pwhash_BYTES_MAX. * diff --git a/multiplatform-crypto-libsodium-bindings/src/jvmMain/kotlin/com/ionspin/kotlin/crypto/util/LibsodiumUtil.kt b/multiplatform-crypto-libsodium-bindings/src/jvmMain/kotlin/com/ionspin/kotlin/crypto/util/LibsodiumUtil.kt index cbbb6ed..08cafd8 100644 --- a/multiplatform-crypto-libsodium-bindings/src/jvmMain/kotlin/com/ionspin/kotlin/crypto/util/LibsodiumUtil.kt +++ b/multiplatform-crypto-libsodium-bindings/src/jvmMain/kotlin/com/ionspin/kotlin/crypto/util/LibsodiumUtil.kt @@ -93,7 +93,7 @@ actual object LibsodiumUtil { actual fun fromHex(data: String): UByteArray { val binLenReference = IntByReference(0) val binSize = (data.length + 1) / 2 // -1 for terminator char - val hex = data.toCharArray().map { it.toByte() }.toByteArray() + val hex = data.toCharArray().map { it.code.toByte() }.toByteArray() val result = ByteArray(binSize) val resultCode = sodiumJna.sodium_hex2bin( result,