aboutsummaryrefslogtreecommitdiffstats
path: root/src/libcharon/plugins/eap_mschapv2/eap_mschapv2.c
diff options
context:
space:
mode:
authorMartin Willi <martin@revosec.ch>2012-07-18 16:46:05 +0200
committerMartin Willi <martin@revosec.ch>2012-07-18 16:46:05 +0200
commit09e3717525420d62d5636962c29808d665aa8d13 (patch)
tree53790a4da8425222bd78876843326659b10dd2ed /src/libcharon/plugins/eap_mschapv2/eap_mschapv2.c
parente7600ca696356bf789d6eb7c816e5b4bb708f664 (diff)
downloadstrongswan-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.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;