From d8107860e5a1ea2b5b98b1294b0ff2e8d0974573 Mon Sep 17 00:00:00 2001 From: Robinson Date: Mon, 23 Aug 2021 00:38:55 -0600 Subject: [PATCH] Fixed GCM, now use threadlocal for hashing --- src/dorkbox/network/connection/CryptoManagement.kt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/dorkbox/network/connection/CryptoManagement.kt b/src/dorkbox/network/connection/CryptoManagement.kt index 10b6de59..d08dcdbc 100644 --- a/src/dorkbox/network/connection/CryptoManagement.kt +++ b/src/dorkbox/network/connection/CryptoManagement.kt @@ -15,6 +15,7 @@ */ package dorkbox.network.connection +import dorkbox.bytes.Hash import dorkbox.netUtil.IP import dorkbox.network.handshake.ClientConnectionInfo import dorkbox.network.serialization.AeronInput @@ -28,7 +29,6 @@ import java.math.BigInteger import java.net.InetAddress import java.security.KeyFactory import java.security.KeyPairGenerator -import java.security.MessageDigest import java.security.SecureRandom import java.security.interfaces.XECPrivateKey import java.security.interfaces.XECPublicKey @@ -55,8 +55,7 @@ internal class CryptoManagement(val logger: KLogger, private val keyFactory = KeyFactory.getInstance(X25519) // key size is 32 bytes (256 bits) private val keyAgreement = KeyAgreement.getInstance("XDH") - private val aesCipher = Cipher.getInstance("AES/GCM/PKCS5Padding") - private val hash = MessageDigest.getInstance("SHA-256"); + private val aesCipher = Cipher.getInstance("AES/GCM/NoPadding") companion object { const val curve25519 = "curve25519" @@ -178,6 +177,7 @@ internal class CryptoManagement(val logger: KLogger, val sharedSecret = keyAgreement.generateSecret() // Derive a key from the shared secret and both public keys + val hash = Hash.sha256 hash.reset() hash.update(sharedSecret) hash.update(bytesA)