diff options
Diffstat (limited to 'src/libsimaka/simaka_crypto.c')
-rw-r--r-- | src/libsimaka/simaka_crypto.c | 11 |
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); |