summaryrefslogtreecommitdiff
path: root/src/commonMain/kotlin/net/taler/wallet/kotlin/crypto/CryptoImpl.kt
diff options
context:
space:
mode:
authorTorsten Grote <t@grobox.de>2020-06-24 13:59:00 -0300
committerTorsten Grote <t@grobox.de>2020-06-24 13:59:00 -0300
commit7f721d00f1e10fbe3ea01fcbec1a3be558f17860 (patch)
tree3c4917326d1bb9026a67152a19b9870721588575 /src/commonMain/kotlin/net/taler/wallet/kotlin/crypto/CryptoImpl.kt
parentba115f8af0936bb05e924ce42592cbdb7df67761 (diff)
downloadwallet-kotlin-7f721d00f1e10fbe3ea01fcbec1a3be558f17860.tar.gz
wallet-kotlin-7f721d00f1e10fbe3ea01fcbec1a3be558f17860.tar.bz2
wallet-kotlin-7f721d00f1e10fbe3ea01fcbec1a3be558f17860.zip
Add Amount class with tests
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
- }
-
}