aboutsummaryrefslogtreecommitdiffstats
path: root/src/eap_common
diff options
context:
space:
mode:
authorDmitry Shmidt <dimitrysh@google.com>2015-04-03 10:03:11 -0700
committerDmitry Shmidt <dimitrysh@google.com>2015-04-03 10:03:11 -0700
commitaf9da3180dc20f57df1fc1e1811f3df9fa9e6ab5 (patch)
treeeafc749f94d3b6b83947e0379055678943ac5fd4 /src/eap_common
parent912c6ecf72fb2c84fbf17dbd0666492778dbd9fc (diff)
downloadandroid_external_wpa_supplicant_8-af9da3180dc20f57df1fc1e1811f3df9fa9e6ab5.tar.gz
android_external_wpa_supplicant_8-af9da3180dc20f57df1fc1e1811f3df9fa9e6ab5.tar.bz2
android_external_wpa_supplicant_8-af9da3180dc20f57df1fc1e1811f3df9fa9e6ab5.zip
Cumulative patch from commit 681278246232029c334117bd6dc7e74c6b179f96
6812782 hlr_auc_gw: Allow Milenage RES length to be reduced 4839f7c wpa_cli: Fix a typo in usage text a20a361 wpa_supplicant: Clear blacklist on connect 0144ecb Android: wpa_ctrl missing include for sys/stat.h 0bb20ef HS 2.0R2: Allow user to specify spp.xsd file location 97c9991 HS 2.0R2: Add more debugging messages to hs20-osu-client 93c2e60 HS 2.0R2 CA: Improve setup.sh and .conf for more flexibility 02e122a Reschedule scan from wpas_stop_pno if it was postponed 80fd9c3 EAP-PEAP server: Add support for negotiating vendor for Phase 2 a867082 EAP peer: Use 32-bit EAP method type for Phase 2 processing 56dfc49 Fix a typo in configuration parameter documentation c4b45c6 TLS: Fix memory leaks on tls_connection_set_params() error paths af85191 Make tls_connection_get_keyblock_size() internal to tls_*.c 94f1fe6 Remove master key extraction from tls_connection_get_keys() fa0e715 Use tls_connection_prf() for all EAP TLS-based key derivation df8191d Rename HT 20/40 coex variable to be more descriptive 1d0f42a EAP server: Add debug prints to help asleap testing 2c1cf90 Add wpa_snprintf_hex_sep() 5955cfa ms_funcs: Make challenge_hash() non-static Change-Id: I0f3e5e5170a61e458949a675641946d95598dc5d Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>
Diffstat (limited to 'src/eap_common')
-rw-r--r--src/eap_common/eap_fast_common.c41
1 files changed, 5 insertions, 36 deletions
diff --git a/src/eap_common/eap_fast_common.c b/src/eap_common/eap_fast_common.c
index fceb1b0a..151cc785 100644
--- a/src/eap_common/eap_fast_common.c
+++ b/src/eap_common/eap_fast_common.c
@@ -96,49 +96,18 @@ void eap_fast_derive_master_secret(const u8 *pac_key, const u8 *server_random,
u8 * eap_fast_derive_key(void *ssl_ctx, struct tls_connection *conn,
const char *label, size_t len)
{
- struct tls_keys keys;
- u8 *rnd = NULL, *out;
- int block_size;
+ u8 *out;
- block_size = tls_connection_get_keyblock_size(ssl_ctx, conn);
- if (block_size < 0)
- return NULL;
-
- out = os_malloc(block_size + len);
+ out = os_malloc(len);
if (out == NULL)
return NULL;
- if (tls_connection_prf(ssl_ctx, conn, label, 1, out, block_size + len)
- == 0) {
- os_memmove(out, out + block_size, len);
- return out;
+ if (tls_connection_prf(ssl_ctx, conn, label, 1, 1, out, len)) {
+ os_free(out);
+ return NULL;
}
- if (tls_connection_get_keys(ssl_ctx, conn, &keys))
- goto fail;
-
- rnd = os_malloc(keys.client_random_len + keys.server_random_len);
- if (rnd == NULL)
- goto fail;
-
- os_memcpy(rnd, keys.server_random, keys.server_random_len);
- os_memcpy(rnd + keys.server_random_len, keys.client_random,
- keys.client_random_len);
-
- wpa_hexdump_key(MSG_MSGDUMP, "EAP-FAST: master_secret for key "
- "expansion", keys.master_key, keys.master_key_len);
- if (tls_prf_sha1_md5(keys.master_key, keys.master_key_len,
- label, rnd, keys.client_random_len +
- keys.server_random_len, out, block_size + len))
- goto fail;
- os_free(rnd);
- os_memmove(out, out + block_size, len);
return out;
-
-fail:
- os_free(rnd);
- os_free(out);
- return NULL;
}