summaryrefslogtreecommitdiff
path: root/src/commonMain/kotlin/net/taler/wallet/kotlin/crypto/CryptoImpl.kt
diff options
context:
space:
mode:
Diffstat (limited to 'src/commonMain/kotlin/net/taler/wallet/kotlin/crypto/CryptoImpl.kt')
-rw-r--r--src/commonMain/kotlin/net/taler/wallet/kotlin/crypto/CryptoImpl.kt30
1 files changed, 21 insertions, 9 deletions
diff --git a/src/commonMain/kotlin/net/taler/wallet/kotlin/crypto/CryptoImpl.kt b/src/commonMain/kotlin/net/taler/wallet/kotlin/crypto/CryptoImpl.kt
index 98ee656..e6995b1 100644
--- a/src/commonMain/kotlin/net/taler/wallet/kotlin/crypto/CryptoImpl.kt
+++ b/src/commonMain/kotlin/net/taler/wallet/kotlin/crypto/CryptoImpl.kt
@@ -1,7 +1,28 @@
package net.taler.wallet.kotlin.crypto
+import net.taler.wallet.kotlin.crypto.CryptoImpl.Companion.toByteArray
+
abstract class CryptoImpl : Crypto {
+ companion object {
+ fun Int.toByteArray(): ByteArray {
+ val bytes = ByteArray(4)
+ bytes[3] = (this and 0xFFFF).toByte()
+ bytes[2] = ((this ushr 8) and 0xFFFF).toByte()
+ bytes[1] = ((this ushr 16) and 0xFFFF).toByte()
+ bytes[0] = ((this ushr 24) and 0xFFFF).toByte()
+ return bytes
+ }
+
+ fun Long.toByteArray() = ByteArray(8).apply {
+ var l = this@toByteArray
+ for (i in 7 downTo 0) {
+ this[i] = (l and 0xFF).toByte()
+ l = l shr 8
+ }
+ }
+ }
+
override fun kdf(outputLength: Int, ikm: ByteArray, salt: ByteArray, info: ByteArray): ByteArray {
return Kdf.kdf(outputLength, ikm, salt, info, { sha256(it) }, { sha512(it) })
}
@@ -15,13 +36,4 @@ abstract class CryptoImpl : Crypto {
return FreshCoin(eddsaGetPublic(coinPrivateKey), coinPrivateKey, bks)
}
- private fun Int.toByteArray(): ByteArray {
- val bytes = ByteArray(4)
- bytes[3] = (this and 0xFFFF).toByte()
- bytes[2] = ((this ushr 8) and 0xFFFF).toByte()
- bytes[1] = ((this ushr 16) and 0xFFFF).toByte()
- bytes[0] = ((this ushr 24) and 0xFFFF).toByte()
- return bytes
- }
-
}