aboutsummaryrefslogtreecommitdiffstats
path: root/src/eap_server
diff options
context:
space:
mode:
authorDmitry Shmidt <dimitrysh@google.com>2015-05-26 16:02:19 -0700
committerDmitry Shmidt <dimitrysh@google.com>2015-05-26 16:02:19 -0700
commit8bd70b7d6ba220544ee2f0e201e5df23e277fa1d (patch)
tree9ac10b099a5b8679c7715dd515b9d42c0ac8c1cf /src/eap_server
parent05df46a3aef489a33f92efb91b091c1aa6d16f95 (diff)
downloadandroid_external_wpa_supplicant_8-8bd70b7d6ba220544ee2f0e201e5df23e277fa1d.tar.gz
android_external_wpa_supplicant_8-8bd70b7d6ba220544ee2f0e201e5df23e277fa1d.tar.bz2
android_external_wpa_supplicant_8-8bd70b7d6ba220544ee2f0e201e5df23e277fa1d.zip
Cumulative patch from commit b4342ca4d8f21af51d4923ca15910d3211bfdc7e
b4342ca P2P: Use p2p_init_wpa_s for P2P command redirection over D-Bus 96512a0 P2P: Fix D-Bus PresenceRequest to use group interface b740401 P2P: Fix wpas_remove_persistent_peer() to use P2P mgmt interface 1e0a029 P2P: Fix wpas_p2p_add_persistent_group_client() to use P2P mgmt interface 86b91c8 P2P: Fix wpas_p2p_set_own_freq_preference() to use P2P mgmt interface 4367749 P2P: Use the P2P Device management interface in wpas_p2p_remove_client() 7b642dc P2P: Add D-Bus FindStopped to notify P2P-FIND-STOPPED event d63f141 P2P: Advertize cross connection to WLAN AP on a non-P2P interface ca24117 EAP-EKE: Add Session-Id 7f2f3a6 Increase DH key size in the hostapd.conf example 567098e ACS: Scan only channels specified in the channel list c7dafdf WPS: Fix build without CONFIG_WPS=y Change-Id: I7bcd69f71b239e7f907eccdb925bd954e72d8758 Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>
Diffstat (limited to 'src/eap_server')
-rw-r--r--src/eap_server/eap_server_eke.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/eap_server/eap_server_eke.c b/src/eap_server/eap_server_eke.c
index 966f511d..ba82be9c 100644
--- a/src/eap_server/eap_server_eke.c
+++ b/src/eap_server/eap_server_eke.c
@@ -766,6 +766,29 @@ static Boolean eap_eke_isSuccess(struct eap_sm *sm, void *priv)
}
+static u8 * eap_eke_get_session_id(struct eap_sm *sm, void *priv, size_t *len)
+{
+ struct eap_eke_data *data = priv;
+ u8 *sid;
+ size_t sid_len;
+
+ if (data->state != SUCCESS)
+ return NULL;
+
+ sid_len = 1 + 2 * data->sess.nonce_len;
+ sid = os_malloc(sid_len);
+ if (sid == NULL)
+ return NULL;
+ sid[0] = EAP_TYPE_EKE;
+ os_memcpy(sid + 1, data->nonce_p, data->sess.nonce_len);
+ os_memcpy(sid + 1 + data->sess.nonce_len, data->nonce_s,
+ data->sess.nonce_len);
+ *len = sid_len;
+
+ return sid;
+}
+
+
int eap_server_eke_register(void)
{
struct eap_method *eap;
@@ -785,6 +808,7 @@ int eap_server_eke_register(void)
eap->getKey = eap_eke_getKey;
eap->isSuccess = eap_eke_isSuccess;
eap->get_emsk = eap_eke_get_emsk;
+ eap->getSessionId = eap_eke_get_session_id;
ret = eap_server_method_register(eap);
if (ret)