aboutsummaryrefslogtreecommitdiffstats
path: root/src/libtls
diff options
context:
space:
mode:
authorMartin Willi <martin@revosec.ch>2012-07-17 11:32:13 +0200
committerMartin Willi <martin@revosec.ch>2012-07-17 11:33:05 +0200
commit2df12b4c57a97c5c1203401f41f5e11cb95a0153 (patch)
treee1eff99d300a3e186a8ff7db0306d569845db450 /src/libtls
parent964de0abde0a92233488c16ca7d5434847eb3880 (diff)
downloadstrongswan-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.c11
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;