mirror of
https://git.kernel.org/pub/scm/network/wireless/iwd.git
synced 2024-12-30 06:02:39 +01:00
eap-wsc: Store PSK1 & PSK2
We will need to use PSK1 & PSK2 when computing R_Hash1 & R_Hash2 when processing M4 & M6.
This commit is contained in:
parent
9a47f98ccd
commit
48c3f4a55a
@ -70,6 +70,8 @@ struct eap_wsc_state {
|
||||
char *device_password;
|
||||
uint8_t e_snonce1[16];
|
||||
uint8_t e_snonce2[16];
|
||||
uint8_t psk1[16];
|
||||
uint8_t psk2[16];
|
||||
enum state state;
|
||||
struct l_checksum *hmac_auth_key;
|
||||
struct l_cipher *aes_cbc_128;
|
||||
@ -270,8 +272,6 @@ static void eap_wsc_send_m3(struct eap_state *eap,
|
||||
{
|
||||
struct eap_wsc_state *wsc = eap_get_data(eap);
|
||||
struct wsc_m2 *m2 = wsc->m2;
|
||||
uint8_t psk1[16];
|
||||
uint8_t psk2[16];
|
||||
size_t len;
|
||||
size_t len_half1;
|
||||
struct wsc_m3 m3;
|
||||
@ -292,11 +292,11 @@ static void eap_wsc_send_m3(struct eap_state *eap,
|
||||
len_half1 += 1;
|
||||
|
||||
l_checksum_update(wsc->hmac_auth_key, wsc->device_password, len_half1);
|
||||
l_checksum_get_digest(wsc->hmac_auth_key, psk1, sizeof(psk1));
|
||||
l_checksum_get_digest(wsc->hmac_auth_key, wsc->psk1, sizeof(wsc->psk1));
|
||||
|
||||
l_checksum_update(wsc->hmac_auth_key, wsc->device_password + len_half1,
|
||||
len / 2);
|
||||
l_checksum_get_digest(wsc->hmac_auth_key, psk2, sizeof(psk2));
|
||||
l_checksum_get_digest(wsc->hmac_auth_key, wsc->psk2, sizeof(wsc->psk2));
|
||||
|
||||
m3.version2 = true;
|
||||
memcpy(m3.registrar_nonce, m2->registrar_nonce,
|
||||
@ -310,8 +310,8 @@ static void eap_wsc_send_m3(struct eap_state *eap,
|
||||
*/
|
||||
iov[0].iov_base = wsc->e_snonce1;
|
||||
iov[0].iov_len = sizeof(wsc->e_snonce1);
|
||||
iov[1].iov_base = psk1;
|
||||
iov[1].iov_len = sizeof(psk1);
|
||||
iov[1].iov_base = wsc->psk1;
|
||||
iov[1].iov_len = sizeof(wsc->psk1);
|
||||
iov[2].iov_base = wsc->m1->public_key;
|
||||
iov[2].iov_len = sizeof(wsc->m1->public_key);
|
||||
iov[3].iov_base = m2->public_key;
|
||||
@ -322,8 +322,8 @@ static void eap_wsc_send_m3(struct eap_state *eap,
|
||||
|
||||
iov[0].iov_base = wsc->e_snonce2;
|
||||
iov[0].iov_len = sizeof(wsc->e_snonce2);
|
||||
iov[1].iov_base = psk2;
|
||||
iov[1].iov_len = sizeof(psk2);
|
||||
iov[1].iov_base = wsc->psk2;
|
||||
iov[1].iov_len = sizeof(wsc->psk2);
|
||||
l_checksum_updatev(wsc->hmac_auth_key, iov, 4);
|
||||
l_checksum_get_digest(wsc->hmac_auth_key,
|
||||
m3.e_hash2, sizeof(m3.e_hash2));
|
||||
|
Loading…
Reference in New Issue
Block a user