diff options
| author | Dmitry Shmidt <dimitrysh@google.com> | 2015-05-26 16:02:19 -0700 |
|---|---|---|
| committer | Dmitry Shmidt <dimitrysh@google.com> | 2015-05-26 16:02:19 -0700 |
| commit | 8bd70b7d6ba220544ee2f0e201e5df23e277fa1d (patch) | |
| tree | 9ac10b099a5b8679c7715dd515b9d42c0ac8c1cf /src/eap_server | |
| parent | 05df46a3aef489a33f92efb91b091c1aa6d16f95 (diff) | |
| download | android_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.c | 24 |
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) |
