aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/libcharon/plugins/eap_mschapv2/eap_mschapv2.c16
1 files changed, 12 insertions, 4 deletions
diff --git a/src/libcharon/plugins/eap_mschapv2/eap_mschapv2.c b/src/libcharon/plugins/eap_mschapv2/eap_mschapv2.c
index 8ae20783d..80b39bc62 100644
--- a/src/libcharon/plugins/eap_mschapv2/eap_mschapv2.c
+++ b/src/libcharon/plugins/eap_mschapv2/eap_mschapv2.c
@@ -461,13 +461,21 @@ static status_t GenerateMSK(chunk_t password_hash_hash,
return FAILED;
}
- master = chunk_create(master_key, 16);
concat = chunk_cata("ccc", password_hash_hash, nt_response, magic1);
+ if (!hasher->get_hash(hasher, concat, master_key))
+ {
+ hasher->destroy(hasher);
+ return FAILED;
+ }
+ master = chunk_create(master_key, 16);
concat = chunk_cata("cccc", master, shapad1, magic2, shapad2);
+ if (!hasher->get_hash(hasher, concat, master_receive_key))
+ {
+ hasher->destroy(hasher);
+ return FAILED;
+ }
concat = chunk_cata("cccc", master, shapad1, magic3, shapad2);
- if (!hasher->get_hash(hasher, concat, master_key) ||
- !hasher->get_hash(hasher, concat, master_receive_key) ||
- !hasher->get_hash(hasher, concat, master_send_key))
+ if (!hasher->get_hash(hasher, concat, master_send_key))
{
hasher->destroy(hasher);
return FAILED;