commit 384eb347ce4ee45bef59e50444208df94bcc8737
parent b807f6d21c67aba0550b205456d46a8054fc06cc
Author: sin <sin@2f30.org>
Date: Wed, 30 Mar 2016 09:48:26 +0100
use PBKDF2 for key derivation
Diffstat:
1 file changed, 4 insertions(+), 6 deletions(-)
diff --git a/stun.c b/stun.c
@@ -22,7 +22,7 @@
* The sender verifies that the correct response was received.
*
* All communication is encrypted using a pre-shared symmetric key, currently
- * using aes-256-gcm hashed with sha512.
+ * using aes-256-gcm. The key is derived with PBKDF2.
*
* All tunneled traffic is encapsulated inside the TCP payload.
* The packet format is shown below:
@@ -166,12 +166,10 @@ revokeprivs(void)
int
prepkey(unsigned char *pw, int pwlen)
{
- int ret, nrounds = 5;
+ int nrounds = 1000;
- ret = EVP_BytesToKey(EVP_aes_256_gcm(), EVP_sha512(),
- NULL, pw, pwlen, nrounds, aeskey, NULL);
- if (ret != 32)
- logerr("wrong key size %d", ret);
+ if (PKCS5_PBKDF2_HMAC_SHA1(pw, pwlen, NULL, 0, nrounds, 32, aeskey) != 1)
+ logerr("PKCS5_PBKDF2_HMAC_SHA1 failed");
return 0;
}