Removes the reuse of the SHA256 digest due to buffer sharing issues in a multithreaded environment.

This commit is contained in:
Vitor Pamplona
2023-07-24 11:17:01 -04:00
parent a1517a67f5
commit 69eea8824a
@@ -2,7 +2,6 @@ package com.vitorpamplona.amethyst.service
import fr.acinq.secp256k1.Hex import fr.acinq.secp256k1.Hex
import fr.acinq.secp256k1.Secp256k1 import fr.acinq.secp256k1.Secp256k1
import java.security.MessageDigest
import java.security.SecureRandom import java.security.SecureRandom
import java.util.Base64 import java.util.Base64
import javax.crypto.Cipher import javax.crypto.Cipher
@@ -10,8 +9,6 @@ import javax.crypto.spec.IvParameterSpec
import javax.crypto.spec.SecretKeySpec import javax.crypto.spec.SecretKeySpec
object CryptoUtils { object CryptoUtils {
private val sha256: MessageDigest = MessageDigest.getInstance("SHA-256")
/** /**
* Provides a 32B "private key" aka random number * Provides a 32B "private key" aka random number
*/ */
@@ -63,8 +60,6 @@ object CryptoUtils {
fun getSharedSecret(privateKey: ByteArray, pubKey: ByteArray): ByteArray = fun getSharedSecret(privateKey: ByteArray, pubKey: ByteArray): ByteArray =
secp256k1.pubKeyTweakMul(Hex.decode("02") + pubKey, privateKey).copyOfRange(1, 33) secp256k1.pubKeyTweakMul(Hex.decode("02") + pubKey, privateKey).copyOfRange(1, 33)
fun sha256(byteArray: ByteArray): ByteArray = sha256.digest(byteArray)
private val secp256k1 = Secp256k1.get() private val secp256k1 = Secp256k1.get()
private val random = SecureRandom() private val random = SecureRandom()
@@ -90,8 +85,3 @@ fun String.bechToBytes(hrp: String? = null): ByteArray {
} }
return decodedForm.second return decodedForm.second
} }
/**
* Interpret the string as Bech32 encoded and return hrp and ByteArray as Pair
*/
fun String.bechToBytesWithHrp() = Bech32.decodeBytes(this).run { Pair(first, second) }