From 720ebfd0ea86bdca905ca6c068ff1b356de9b632 Mon Sep 17 00:00:00 2001 From: Vitor Pamplona Date: Fri, 22 Dec 2023 17:09:36 -0500 Subject: [PATCH] Avoids creating a new byte array at every call of conversation key. --- .../src/main/java/com/vitorpamplona/quartz/crypto/Nip44v2.kt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/crypto/Nip44v2.kt b/quartz/src/main/java/com/vitorpamplona/quartz/crypto/Nip44v2.kt index 3ba7cb6e2..a677d2887 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/crypto/Nip44v2.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/crypto/Nip44v2.kt @@ -23,6 +23,7 @@ class Nip44v2(val secp256k1: Secp256k1, val random: SecureRandom) { private val hkdf = Hkdf() private val h02 = Hex.decode("02") + private val saltPrefix = "nip44-v2".toByteArray(Charsets.UTF_8) private val hashLength = 32 private val minPlaintextSize: Int = 0x0001 // 1b msg => padded to 32b @@ -179,7 +180,7 @@ class Nip44v2(val secp256k1: Secp256k1, val random: SecureRandom) { */ fun computeConversationKey(privateKey: ByteArray, pubKey: ByteArray): ByteArray { val sharedX = secp256k1.pubKeyTweakMul(h02 + pubKey, privateKey).copyOfRange(1, 33) - return hkdf.extract(sharedX, "nip44-v2".toByteArray(Charsets.UTF_8)) + return hkdf.extract(sharedX, saltPrefix) } class EncryptedInfo(