aboutsummaryrefslogtreecommitdiffstats
path: root/src/libsimaka/simaka_crypto.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/libsimaka/simaka_crypto.c')
-rw-r--r--src/libsimaka/simaka_crypto.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/libsimaka/simaka_crypto.c b/src/libsimaka/simaka_crypto.c
index f6b177d51..0a92cb342 100644
--- a/src/libsimaka/simaka_crypto.c
+++ b/src/libsimaka/simaka_crypto.c
@@ -140,7 +140,11 @@ METHOD(simaka_crypto_t, derive_keys_full, bool,
k_auth = chunk_create(str.ptr + KENCR_LEN, KAUTH_LEN);
DBG3(DBG_LIB, "K_encr %B\nK_auth %B\nMSK %B", &k_encr, &k_auth, &msk);
- this->signer->set_key(this->signer, k_auth);
+ if (!this->signer->set_key(this->signer, k_auth))
+ {
+ chunk_clear(mk);
+ return FALSE;
+ }
this->crypter->set_key(this->crypter, k_encr);
*msk = chunk_create(str.ptr + KENCR_LEN + KAUTH_LEN, MSK_LEN);
@@ -168,7 +172,10 @@ METHOD(simaka_crypto_t, derive_keys_reauth, bool,
k_auth = chunk_create(str.ptr + KENCR_LEN, KAUTH_LEN);
DBG3(DBG_LIB, "K_encr %B\nK_auth %B", &k_encr, &k_auth);
- this->signer->set_key(this->signer, k_auth);
+ if (!this->signer->set_key(this->signer, k_auth))
+ {
+ return FALSE;
+ }
this->crypter->set_key(this->crypter, k_encr);
call_hook(this, k_encr, k_auth);