Home | History | Annotate | Download | only in eap_peer

Lines Matching refs:erp

423 	struct eap_erp_key *erp;
425 dl_list_for_each(erp, &sm->erp_keys, struct eap_erp_key, list) {
428 pos = os_strchr(erp->keyname_nai, '@');
433 return erp;
443 struct eap_erp_key *erp;
445 dl_list_for_each(erp, &sm->erp_keys, struct eap_erp_key, list) {
446 if (os_strcmp(erp->keyname_nai, nai) == 0)
447 return erp;
454 static void eap_peer_erp_free_key(struct eap_erp_key *erp)
456 dl_list_del(&erp->list);
457 bin_clear_free(erp, sizeof(*erp));
463 struct eap_erp_key *erp;
465 while ((erp = eap_erp_get_key(sm, realm)) != NULL) {
466 wpa_printf(MSG_DEBUG, "EAP: Delete old ERP key %s",
467 erp->keyname_nai);
468 eap_peer_erp_free_key(erp);
478 struct eap_erp_key *erp, *tmp;
480 dl_list_for_each_safe(erp, tmp, &sm->erp_keys, struct eap_erp_key, list)
481 eap_peer_erp_free_key(erp);
495 struct eap_erp_key *erp = NULL;
502 wpa_printf(MSG_DEBUG, "EAP: Realm for ERP keyName-NAI: %s", realm);
512 "EAP: Too long realm for ERP keyName-NAI maximum length");
516 erp = os_zalloc(sizeof(*erp) + nai_buf_len);
517 if (erp == NULL)
523 "EAP: No suitable EMSK available for ERP");
538 pos = wpa_snprintf_hex(erp->keyname_nai, nai_buf_len,
540 erp->keyname_nai[pos] = '@';
541 os_memcpy(&erp->keyname_nai[pos + 1], realm, realm_len);
546 len, sizeof(len), erp->rRK, emsk_len) < 0) {
547 wpa_printf(MSG_DEBUG, "EAP: Could not derive rRK for ERP");
550 erp->rRK_len = emsk_len;
551 wpa_hexdump_key(MSG_DEBUG, "EAP: ERP rRK", erp->rRK, erp->rRK_len);
554 WPA_PUT_BE16(&ctx[1], erp->rRK_len);
555 if (hmac_sha256_kdf(erp->rRK, erp->rRK_len,
557 ctx, sizeof(ctx), erp->rIK, erp->rRK_len) < 0) {
558 wpa_printf(MSG_DEBUG, "EAP: Could not derive rIK for ERP");
561 erp->rIK_len = erp->rRK_len;
562 wpa_hexdump_key(MSG_DEBUG, "EAP: ERP rIK", erp->rIK, erp->rIK_len);
564 wpa_printf(MSG_DEBUG, "EAP: Stored ERP keys %s", erp->keyname_nai);
565 dl_list_add(&sm->erp_keys, &erp->list);
566 erp = NULL;
569 bin_clear_free(erp, sizeof(*erp));
579 struct eap_erp_key *erp;
587 erp = eap_erp_get_key(sm, realm);
590 if (!erp)
593 if (erp->next_seq >= 65536)
598 ERP key found %s (SEQ=%u)",
599 erp->keyname_nai, erp->next_seq);
602 1 + 2 + 2 + os_strlen(erp->keyname_nai) + 1 + 16,
608 wpabuf_put_be16(msg, erp->next_seq);
611 wpabuf_put_u8(msg, os_strlen(erp->keyname_nai));
612 wpabuf_put_str(msg, erp->keyname_nai);
616 if (hmac_sha256(erp->rIK, erp->rIK_len,
623 sm->erp_seq = erp->next_seq;
624 erp->next_seq++;
626 wpa_hexdump_buf(MSG_DEBUG, "ERP: EAP-Initiate/Re-auth", msg);
724 if (config->erp && sm->m->get_emsk && sm->eapSessionId)
1591 "EAP: EAP-Initiate/Re-auth-Start - No suitable ERP keys available - try to start full EAP authentication");
1607 struct eap_erp_key *erp;
1667 erp = eap_erp_get_key_nai(sm, nai);
1668 if (!erp) {
1669 wpa_printf(MSG_DEBUG, "EAP: No matching ERP key found for %s",
1692 if (hmac_sha256(erp->rIK, erp->rIK_len, (const u8 *) hdr,
1723 "EAP: Drop ERP key to try full authentication on next attempt");
1724 eap_peer_erp_free_key(erp);
1730 sm->eapKeyData = os_malloc(erp->rRK_len);
1733 sm->eapKeyDataLen = erp->rRK_len;
1736 WPA_PUT_BE16(&seed[2], erp->rRK_len);
1737 if (hmac_sha256_kdf(erp->rRK, erp->rRK_len,
1740 sm->eapKeyData, erp->rRK_len) < 0) {
1741 wpa_printf(MSG_DEBUG, "EAP: Could not derive rMSK for ERP");
1745 wpa_hexdump_key(MSG_DEBUG, "EAP: ERP rMSK",