diff options
Diffstat (limited to 'src/libtls')
-rw-r--r-- | src/libtls/tls_prf.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/src/libtls/tls_prf.c b/src/libtls/tls_prf.c index 09f693448..bc0a8c178 100644 --- a/src/libtls/tls_prf.c +++ b/src/libtls/tls_prf.c @@ -56,12 +56,15 @@ 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)) */ - prf->get_bytes(prf, a, abuf); a = chunk_from_thing(abuf); - /* HMAC_hash(secret, A(i) + seed) */ - prf->get_bytes(prf, a, NULL); - prf->get_bytes(prf, seed, buf); + /* 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) || + !prf->get_bytes(prf, seed, buf)) + { + return FALSE; + } if (bytes <= block_size) { |