diff options
author | Martin Willi <martin@revosec.ch> | 2012-07-18 16:46:05 +0200 |
---|---|---|
committer | Martin Willi <martin@revosec.ch> | 2012-07-18 16:46:05 +0200 |
commit | 09e3717525420d62d5636962c29808d665aa8d13 (patch) | |
tree | 53790a4da8425222bd78876843326659b10dd2ed /src/libcharon/plugins/eap_mschapv2/eap_mschapv2.c | |
parent | e7600ca696356bf789d6eb7c816e5b4bb708f664 (diff) | |
download | strongswan-09e3717525420d62d5636962c29808d665aa8d13.tar.bz2 strongswan-09e3717525420d62d5636962c29808d665aa8d13.tar.xz |
Fix EAP-MSCHAPv2 master key derivation, broken with 87dd205b
Diffstat (limited to 'src/libcharon/plugins/eap_mschapv2/eap_mschapv2.c')
-rw-r--r-- | src/libcharon/plugins/eap_mschapv2/eap_mschapv2.c | 16 |
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; |