aboutsummaryrefslogtreecommitdiffstats
path: root/src/libsimaka/simaka_crypto.c
diff options
context:
space:
mode:
authorMartin Willi <martin@revosec.ch>2012-07-06 10:14:29 +0200
committerMartin Willi <martin@revosec.ch>2012-07-16 14:53:33 +0200
commitbc4748832395a5db4b71cb38d37f75de0d6e9416 (patch)
treeae946170f42eecb8b8db6d5b8a44ef4be12c3a83 /src/libsimaka/simaka_crypto.c
parente7d98b8c9967d53d0244b2d2bd4edeb20df58dcc (diff)
downloadstrongswan-bc474883.tar.bz2
strongswan-bc474883.tar.xz
Add a return value to prf_t.get_bytes()
Diffstat (limited to 'src/libsimaka/simaka_crypto.c')
-rw-r--r--src/libsimaka/simaka_crypto.c19
1 files changed, 16 insertions, 3 deletions
diff --git a/src/libsimaka/simaka_crypto.c b/src/libsimaka/simaka_crypto.c
index 0a92cb342..532655e3b 100644
--- a/src/libsimaka/simaka_crypto.c
+++ b/src/libsimaka/simaka_crypto.c
@@ -133,7 +133,12 @@ METHOD(simaka_crypto_t, derive_keys_full, bool,
str = chunk_alloca(this->prf->get_block_size(this->prf) * 3);
for (i = 0; i < 3; i++)
{
- this->prf->get_bytes(this->prf, chunk_empty, str.ptr + str.len / 3 * i);
+ if (!this->prf->get_bytes(this->prf, chunk_empty,
+ str.ptr + str.len / 3 * i))
+ {
+ chunk_clear(mk);
+ return FALSE;
+ }
}
k_encr = chunk_create(str.ptr, KENCR_LEN);
@@ -166,7 +171,11 @@ METHOD(simaka_crypto_t, derive_keys_reauth, bool,
str = chunk_alloca(this->prf->get_block_size(this->prf) * 2);
for (i = 0; i < 2; i++)
{
- this->prf->get_bytes(this->prf, chunk_empty, str.ptr + str.len / 2 * i);
+ if (!this->prf->get_bytes(this->prf, chunk_empty,
+ str.ptr + str.len / 2 * i))
+ {
+ return FALSE;
+ }
}
k_encr = chunk_create(str.ptr, KENCR_LEN);
k_auth = chunk_create(str.ptr + KENCR_LEN, KAUTH_LEN);
@@ -202,7 +211,11 @@ METHOD(simaka_crypto_t, derive_keys_reauth_msk, bool,
str = chunk_alloca(this->prf->get_block_size(this->prf) * 2);
for (i = 0; i < 2; i++)
{
- this->prf->get_bytes(this->prf, chunk_empty, str.ptr + str.len / 2 * i);
+ if (!this->prf->get_bytes(this->prf, chunk_empty,
+ str.ptr + str.len / 2 * i))
+ {
+ return FALSE;
+ }
}
*msk = chunk_create(str.ptr, MSK_LEN);
DBG3(DBG_LIB, "MSK %B", msk);