diff options
author | Martin Willi <martin@revosec.ch> | 2012-07-17 11:32:13 +0200 |
---|---|---|
committer | Martin Willi <martin@revosec.ch> | 2012-07-17 11:33:05 +0200 |
commit | 2df12b4c57a97c5c1203401f41f5e11cb95a0153 (patch) | |
tree | e1eff99d300a3e186a8ff7db0306d569845db450 /src/libtls | |
parent | 964de0abde0a92233488c16ca7d5434847eb3880 (diff) | |
download | strongswan-2df12b4c57a97c5c1203401f41f5e11cb95a0153.tar.bz2 strongswan-2df12b4c57a97c5c1203401f41f5e11cb95a0153.tar.xz |
Fix tls_prf bug introduced with bc474883
Diffstat (limited to 'src/libtls')
-rw-r--r-- | src/libtls/tls_prf.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/src/libtls/tls_prf.c b/src/libtls/tls_prf.c index a70b121d6..918de1e50 100644 --- a/src/libtls/tls_prf.c +++ b/src/libtls/tls_prf.c @@ -55,11 +55,14 @@ static bool p_hash(prf_t *prf, char *label, chunk_t seed, size_t block_size, while (TRUE) { + /* A(i) = HMAC_hash(secret, A(i-1)) */ + if (!prf->get_bytes(prf, a, abuf)) + { + return FALSE; + } a = chunk_from_thing(abuf); - /* A(i) = HMAC_hash(secret, A(i-1)) - * HMAC_hash(secret, A(i) + seed) */ - if (!prf->get_bytes(prf, a, abuf) || - !prf->get_bytes(prf, a, NULL) || + /* HMAC_hash(secret, A(i) + seed) */ + if (!prf->get_bytes(prf, a, NULL) || !prf->get_bytes(prf, seed, buf)) { return FALSE; |