Lines Matching refs:participant

291 	struct ieee802_1x_mka_participant *participant;  in ieee802_1x_kay_get_participant()  local
293 dl_list_for_each(participant, &kay->participant_list, in ieee802_1x_kay_get_participant()
295 if (participant->ckn.len == len && in ieee802_1x_kay_get_participant()
296 os_memcmp(participant->ckn.name, ckn, in ieee802_1x_kay_get_participant()
297 participant->ckn.len) == 0) in ieee802_1x_kay_get_participant()
298 return participant; in ieee802_1x_kay_get_participant()
313 struct ieee802_1x_mka_participant *participant; in ieee802_1x_kay_get_principal_participant() local
315 dl_list_for_each(participant, &kay->participant_list, in ieee802_1x_kay_get_principal_participant()
317 if (participant->principal) in ieee802_1x_kay_get_principal_participant()
318 return participant; in ieee802_1x_kay_get_principal_participant()
345 struct ieee802_1x_mka_participant *participant, const u8 *mi) in ieee802_1x_kay_get_potential_peer() argument
347 return get_peer_mi(&participant->potential_peers, mi); in ieee802_1x_kay_get_potential_peer()
355 ieee802_1x_kay_get_live_peer(struct ieee802_1x_mka_participant *participant, in ieee802_1x_kay_get_live_peer() argument
358 return get_peer_mi(&participant->live_peers, mi); in ieee802_1x_kay_get_live_peer()
367 struct ieee802_1x_mka_participant *participant, const u8 *mi) in ieee802_1x_kay_is_in_potential_peer() argument
369 return ieee802_1x_kay_get_potential_peer(participant, mi) != NULL; in ieee802_1x_kay_is_in_potential_peer()
378 struct ieee802_1x_mka_participant *participant, const u8 *mi) in ieee802_1x_kay_is_in_live_peer() argument
380 return ieee802_1x_kay_get_live_peer(participant, mi) != NULL; in ieee802_1x_kay_is_in_live_peer()
388 ieee802_1x_kay_get_peer(struct ieee802_1x_mka_participant *participant, in ieee802_1x_kay_get_peer() argument
393 peer = ieee802_1x_kay_get_live_peer(participant, mi); in ieee802_1x_kay_get_peer()
397 return ieee802_1x_kay_get_potential_peer(participant, mi); in ieee802_1x_kay_get_peer()
405 ieee802_1x_kay_get_cipher_suite(struct ieee802_1x_mka_participant *participant, in ieee802_1x_kay_get_cipher_suite() argument
448 ieee802_1x_kay_get_peer_sci(struct ieee802_1x_mka_participant *participant, in ieee802_1x_kay_get_peer_sci() argument
453 dl_list_for_each(peer, &participant->live_peers, in ieee802_1x_kay_get_peer_sci()
459 dl_list_for_each(peer, &participant->potential_peers, in ieee802_1x_kay_get_peer_sci()
569 struct ieee802_1x_mka_participant *participant, struct receive_sc *psc) in ieee802_1x_kay_deinit_receive_sc() argument
576 ieee802_1x_delete_receive_sa(participant->kay, psa); in ieee802_1x_kay_deinit_receive_sc()
579 secy_delete_receive_sc(participant->kay, psc); in ieee802_1x_kay_deinit_receive_sc()
616 ieee802_1x_kay_create_live_peer(struct ieee802_1x_mka_participant *participant, in ieee802_1x_kay_create_live_peer() argument
626 os_memcpy(&peer->sci, &participant->current_peer_sci, in ieee802_1x_kay_create_live_peer()
635 if (secy_create_receive_sc(participant->kay, rxsc)) { in ieee802_1x_kay_create_live_peer()
640 dl_list_add(&participant->live_peers, &peer->list); in ieee802_1x_kay_create_live_peer()
641 dl_list_add(&participant->rxsc_list, &rxsc->list); in ieee802_1x_kay_create_live_peer()
655 struct ieee802_1x_mka_participant *participant, const u8 *mi, u32 mn) in ieee802_1x_kay_create_potential_peer() argument
663 dl_list_add(&participant->potential_peers, &peer->list); in ieee802_1x_kay_create_potential_peer()
676 ieee802_1x_kay_move_live_peer(struct ieee802_1x_mka_participant *participant, in ieee802_1x_kay_move_live_peer() argument
682 peer = ieee802_1x_kay_get_potential_peer(participant, mi); in ieee802_1x_kay_move_live_peer()
686 rxsc = ieee802_1x_kay_init_receive_sc(&participant->current_peer_sci); in ieee802_1x_kay_move_live_peer()
690 os_memcpy(&peer->sci, &participant->current_peer_sci, in ieee802_1x_kay_move_live_peer()
699 if (secy_create_receive_sc(participant->kay, rxsc)) { in ieee802_1x_kay_move_live_peer()
705 dl_list_add_tail(&participant->live_peers, &peer->list); in ieee802_1x_kay_move_live_peer()
707 dl_list_add(&participant->rxsc_list, &rxsc->list); in ieee802_1x_kay_move_live_peer()
719 struct ieee802_1x_mka_participant *participant) in ieee802_1x_mka_basic_body_present() argument
729 ieee802_1x_mka_basic_body_length(struct ieee802_1x_mka_participant *participant) in ieee802_1x_mka_basic_body_length() argument
734 length += participant->ckn.len; in ieee802_1x_mka_basic_body_length()
744 struct ieee802_1x_mka_participant *participant, in ieee802_1x_mka_encode_basic_body() argument
748 struct ieee802_1x_kay *kay = participant->kay; in ieee802_1x_mka_encode_basic_body()
751 length += participant->ckn.len; in ieee802_1x_mka_encode_basic_body()
758 if (participant->is_elected) in ieee802_1x_mka_encode_basic_body()
759 body->key_server = participant->is_key_server; in ieee802_1x_mka_encode_basic_body()
761 body->key_server = participant->can_be_key_server; in ieee802_1x_mka_encode_basic_body()
771 os_memcpy(body->actor_mi, participant->mi, sizeof(body->actor_mi)); in ieee802_1x_mka_encode_basic_body()
772 participant->mn = participant->mn + 1; in ieee802_1x_mka_encode_basic_body()
773 body->actor_mn = host_to_be32(participant->mn); in ieee802_1x_mka_encode_basic_body()
777 os_memcpy(body->ckn, participant->ckn.name, participant->ckn.len); in ieee802_1x_mka_encode_basic_body()
786 reset_participant_mi(struct ieee802_1x_mka_participant *participant) in reset_participant_mi() argument
788 if (os_get_random(participant->mi, sizeof(participant->mi)) < 0) in reset_participant_mi()
790 participant->mn = 0; in reset_participant_mi()
803 struct ieee802_1x_mka_participant *participant; in ieee802_1x_mka_decode_basic_body() local
829 participant = ieee802_1x_kay_get_participant(kay, body->ckn, ckn_len); in ieee802_1x_mka_decode_basic_body()
830 if (!participant) { in ieee802_1x_mka_decode_basic_body()
837 if (os_memcmp(body->actor_mi, participant->mi, MI_LEN) == 0) { in ieee802_1x_mka_decode_basic_body()
838 if (!reset_participant_mi(participant)) in ieee802_1x_mka_decode_basic_body()
842 mi_txt(participant->mi)); in ieee802_1x_mka_decode_basic_body()
845 os_memcpy(participant->current_peer_id.mi, body->actor_mi, MI_LEN); in ieee802_1x_mka_decode_basic_body()
846 participant->current_peer_id.mn = body->actor_mn; in ieee802_1x_mka_decode_basic_body()
847 os_memcpy(participant->current_peer_sci.addr, body->actor_sci.addr, in ieee802_1x_mka_decode_basic_body()
848 sizeof(participant->current_peer_sci.addr)); in ieee802_1x_mka_decode_basic_body()
849 participant->current_peer_sci.port = body->actor_sci.port; in ieee802_1x_mka_decode_basic_body()
852 peer = ieee802_1x_kay_get_peer(participant, body->actor_mi); in ieee802_1x_mka_decode_basic_body()
873 peer = ieee802_1x_kay_get_peer_sci(participant, in ieee802_1x_mka_decode_basic_body()
889 participant, body->actor_mi, in ieee802_1x_mka_decode_basic_body()
913 return participant; in ieee802_1x_mka_decode_basic_body()
922 struct ieee802_1x_mka_participant *participant) in ieee802_1x_mka_live_peer_body_present() argument
924 return !dl_list_empty(&participant->live_peers); in ieee802_1x_mka_live_peer_body_present()
933 struct ieee802_1x_mka_participant *participant) in ieee802_1x_mka_get_live_peer_length() argument
938 dl_list_for_each(peer, &participant->live_peers, in ieee802_1x_mka_get_live_peer_length()
951 struct ieee802_1x_mka_participant *participant, in ieee802_1x_mka_encode_live_peer_body() argument
959 length = ieee802_1x_mka_get_live_peer_length(participant); in ieee802_1x_mka_encode_live_peer_body()
965 dl_list_for_each(peer, &participant->live_peers, in ieee802_1x_mka_encode_live_peer_body()
982 struct ieee802_1x_mka_participant *participant) in ieee802_1x_mka_potential_peer_body_present() argument
984 return !dl_list_empty(&participant->potential_peers); in ieee802_1x_mka_potential_peer_body_present()
993 struct ieee802_1x_mka_participant *participant) in ieee802_1x_mka_get_potential_peer_length() argument
998 dl_list_for_each(peer, &participant->potential_peers, in ieee802_1x_mka_get_potential_peer_length()
1011 struct ieee802_1x_mka_participant *participant, in ieee802_1x_mka_encode_potential_peer_body() argument
1019 length = ieee802_1x_mka_get_potential_peer_length(participant); in ieee802_1x_mka_encode_potential_peer_body()
1025 dl_list_for_each(peer, &participant->potential_peers, in ieee802_1x_mka_encode_potential_peer_body()
1042 ieee802_1x_mka_i_in_peerlist(struct ieee802_1x_mka_participant *participant, in ieee802_1x_mka_i_in_peerlist() argument
1089 if (os_memcmp(peer_mi->mi, participant->mi, in ieee802_1x_mka_i_in_peerlist()
1095 mn, participant->mn); in ieee802_1x_mka_i_in_peerlist()
1104 if (mn == participant->mn || in ieee802_1x_mka_i_in_peerlist()
1105 (participant->mn > 1 && in ieee802_1x_mka_i_in_peerlist()
1106 mn == participant->mn - 1)) in ieee802_1x_mka_i_in_peerlist()
1120 struct ieee802_1x_mka_participant *participant, in ieee802_1x_mka_decode_live_peer_body() argument
1130 participant, participant->current_peer_id.mi); in ieee802_1x_mka_decode_live_peer_body()
1150 if (os_memcmp(peer_mi, participant->mi, MI_LEN) == 0) { in ieee802_1x_mka_decode_live_peer_body()
1152 if (peer_mn > participant->mn && in ieee802_1x_mka_decode_live_peer_body()
1153 !reset_participant_mi(participant)) in ieee802_1x_mka_decode_live_peer_body()
1161 peer = ieee802_1x_kay_get_peer(participant, peer_mi->mi); in ieee802_1x_mka_decode_live_peer_body()
1165 participant, peer_mi->mi, peer_mn)) { in ieee802_1x_mka_decode_live_peer_body()
1179 struct ieee802_1x_mka_participant *participant, in ieee802_1x_mka_decode_potential_peer_body() argument
1204 if (os_memcmp(peer_mi, participant->mi, MI_LEN) == 0) { in ieee802_1x_mka_decode_potential_peer_body()
1206 if (peer_mn > participant->mn && in ieee802_1x_mka_decode_potential_peer_body()
1207 !reset_participant_mi(participant)) in ieee802_1x_mka_decode_potential_peer_body()
1222 struct ieee802_1x_mka_participant *participant) in ieee802_1x_mka_sak_use_body_present() argument
1224 return participant->to_use_sak; in ieee802_1x_mka_sak_use_body_present()
1233 struct ieee802_1x_mka_participant *participant) in ieee802_1x_mka_get_sak_use_length() argument
1237 if (participant->kay->macsec_desired && participant->advised_desired) in ieee802_1x_mka_get_sak_use_length()
1292 struct ieee802_1x_mka_participant *participant, in ieee802_1x_mka_encode_sak_use_body() argument
1296 struct ieee802_1x_kay *kay = participant->kay; in ieee802_1x_mka_encode_sak_use_body()
1300 length = ieee802_1x_mka_get_sak_use_length(participant); in ieee802_1x_mka_encode_sak_use_body()
1319 olpn = ieee802_1x_mka_get_lpn(participant, &participant->oki); in ieee802_1x_mka_encode_sak_use_body()
1321 llpn = ieee802_1x_mka_get_lpn(participant, &participant->lki); in ieee802_1x_mka_encode_sak_use_body()
1323 if (participant->is_key_server) { in ieee802_1x_mka_encode_sak_use_body()
1328 if (participant->lrx) { in ieee802_1x_mka_encode_sak_use_body()
1332 participant->new_sak = true; in ieee802_1x_mka_encode_sak_use_body()
1338 participant->new_sak = true; in ieee802_1x_mka_encode_sak_use_body()
1348 body->lan = participant->lan; in ieee802_1x_mka_encode_sak_use_body()
1349 os_memcpy(body->lsrv_mi, participant->lki.mi, sizeof(body->lsrv_mi)); in ieee802_1x_mka_encode_sak_use_body()
1350 body->lkn = host_to_be32(participant->lki.kn); in ieee802_1x_mka_encode_sak_use_body()
1351 body->lrx = participant->lrx; in ieee802_1x_mka_encode_sak_use_body()
1352 body->ltx = participant->ltx; in ieee802_1x_mka_encode_sak_use_body()
1355 body->oan = participant->oan; in ieee802_1x_mka_encode_sak_use_body()
1356 if (participant->oki.kn != participant->lki.kn && in ieee802_1x_mka_encode_sak_use_body()
1357 participant->oki.kn != 0) { in ieee802_1x_mka_encode_sak_use_body()
1360 os_memcpy(body->osrv_mi, participant->oki.mi, in ieee802_1x_mka_encode_sak_use_body()
1362 body->okn = host_to_be32(participant->oki.kn); in ieee802_1x_mka_encode_sak_use_body()
1386 struct ieee802_1x_mka_participant *participant, in ieee802_1x_mka_decode_sak_use_body() argument
1396 struct ieee802_1x_kay *kay = participant->kay; in ieee802_1x_mka_decode_sak_use_body()
1399 if (!participant->principal) { in ieee802_1x_mka_decode_sak_use_body()
1403 peer = ieee802_1x_kay_get_live_peer(participant, in ieee802_1x_mka_decode_sak_use_body()
1404 participant->current_peer_id.mi); in ieee802_1x_mka_decode_sak_use_body()
1408 mi_txt(participant->current_peer_id.mi)); in ieee802_1x_mka_decode_sak_use_body()
1455 sa_key = dl_list_first(&participant->sak_list, struct data_key, list); in ieee802_1x_mka_decode_sak_use_body()
1494 if (participant->is_key_server) { in ieee802_1x_mka_decode_sak_use_body()
1501 dl_list_for_each(peer_iter, &participant->live_peers, in ieee802_1x_mka_decode_sak_use_body()
1509 participant->to_dist_sak = false; in ieee802_1x_mka_decode_sak_use_body()
1526 if (participant->is_key_server && lpn > kay->pn_exhaustion) { in ieee802_1x_mka_decode_sak_use_body()
1527 participant->new_sak = true; in ieee802_1x_mka_decode_sak_use_body()
1541 dl_list_for_each(rxsc, &participant->rxsc_list, in ieee802_1x_mka_decode_sak_use_body()
1554 secy_get_receive_lowest_pn(participant->kay, rxsa); in ieee802_1x_mka_decode_sak_use_body()
1557 secy_set_receive_lowest_pn(participant->kay, in ieee802_1x_mka_decode_sak_use_body()
1583 struct ieee802_1x_mka_participant *participant) in ieee802_1x_mka_dist_sak_body_present() argument
1585 return participant->is_key_server && participant->to_dist_sak && in ieee802_1x_mka_dist_sak_body_present()
1586 participant->new_key; in ieee802_1x_mka_dist_sak_body_present()
1595 struct ieee802_1x_mka_participant *participant) in ieee802_1x_mka_get_dist_sak_length() argument
1598 unsigned int cs_index = participant->kay->macsec_csindex; in ieee802_1x_mka_get_dist_sak_length()
1600 if (participant->advised_desired && cs_index < CS_TABLE_SIZE) { in ieee802_1x_mka_get_dist_sak_length()
1617 struct ieee802_1x_mka_participant *participant, in ieee802_1x_mka_encode_dist_sak_body() argument
1626 length = ieee802_1x_mka_get_dist_sak_length(participant); in ieee802_1x_mka_encode_dist_sak_body()
1636 sak = participant->new_key; in ieee802_1x_mka_encode_dist_sak_body()
1645 cs_index = participant->kay->macsec_csindex; in ieee802_1x_mka_encode_dist_sak_body()
1656 if (aes_wrap(participant->kek.key, participant->kek.len, in ieee802_1x_mka_encode_dist_sak_body()
1688 struct ieee802_1x_mka_participant *participant, in ieee802_1x_mka_decode_dist_sak_body() argument
1700 struct ieee802_1x_kay *kay = participant->kay; in ieee802_1x_mka_decode_dist_sak_body()
1711 if (!participant->principal) { in ieee802_1x_mka_decode_dist_sak_body()
1716 if (participant->is_key_server) { in ieee802_1x_mka_decode_dist_sak_body()
1728 peer = ieee802_1x_kay_get_live_peer(participant, in ieee802_1x_mka_decode_dist_sak_body()
1729 participant->current_peer_id.mi); in ieee802_1x_mka_decode_dist_sak_body()
1744 participant->advised_desired = false; in ieee802_1x_mka_decode_dist_sak_body()
1748 participant->to_use_sak = false; in ieee802_1x_mka_decode_dist_sak_body()
1752 participant->advised_desired = true; in ieee802_1x_mka_decode_dist_sak_body()
1761 dl_list_for_each(sa_key, &participant->sak_list, struct data_key, list) in ieee802_1x_mka_decode_dist_sak_body()
1764 participant->current_peer_id.mi, MI_LEN) == 0 && in ieee802_1x_mka_decode_dist_sak_body()
1780 cs = ieee802_1x_kay_get_cipher_suite(participant, body->sak, in ieee802_1x_mka_decode_dist_sak_body()
1797 if (aes_unwrap(participant->kek.key, participant->kek.len, in ieee802_1x_mka_decode_dist_sak_body()
1812 os_memcpy(&sa_key->key_identifier.mi, &participant->current_peer_id.mi, in ieee802_1x_mka_decode_dist_sak_body()
1824 dl_list_add(&participant->sak_list, &sa_key->list); in ieee802_1x_mka_decode_dist_sak_body()
1836 participant->to_use_sak = true; in ieee802_1x_mka_decode_dist_sak_body()
1858 ieee802_1x_mka_icv_body_present(struct ieee802_1x_mka_participant *participant) in ieee802_1x_mka_icv_body_present() argument
1868 ieee802_1x_mka_get_icv_length(struct ieee802_1x_mka_participant *participant) in ieee802_1x_mka_get_icv_length() argument
1873 if (mka_alg_tbl[participant->kay->mka_algindex].icv_len != in ieee802_1x_mka_get_icv_length()
1878 length += mka_alg_tbl[participant->kay->mka_algindex].icv_len; in ieee802_1x_mka_get_icv_length()
1888 ieee802_1x_mka_encode_icv_body(struct ieee802_1x_mka_participant *participant, in ieee802_1x_mka_encode_icv_body() argument
1895 length = ieee802_1x_mka_get_icv_length(participant); in ieee802_1x_mka_encode_icv_body()
1896 if (mka_alg_tbl[participant->kay->mka_algindex].icv_len != in ieee802_1x_mka_encode_icv_body()
1905 if (mka_alg_tbl[participant->kay->mka_algindex].icv_hash( in ieee802_1x_mka_encode_icv_body()
1906 participant->ick.key, participant->ick.len, in ieee802_1x_mka_encode_icv_body()
1922 ieee802_1x_mka_decode_icv_body(struct ieee802_1x_mka_participant *participant, in ieee802_1x_mka_decode_icv_body() argument
1950 < mka_alg_tbl[participant->kay->mka_algindex].icv_len) in ieee802_1x_mka_decode_icv_body()
1965 struct ieee802_1x_mka_participant *participant, in ieee802_1x_mka_decode_dist_cak_body() argument
1989 struct ieee802_1x_mka_participant *participant, in ieee802_1x_mka_decode_kmd_body() argument
2012 struct ieee802_1x_mka_participant *participant, in ieee802_1x_mka_decode_announce_body() argument
2020 int (*body_tx)(struct ieee802_1x_mka_participant *participant,
2022 int (*body_rx)(struct ieee802_1x_mka_participant *participant,
2024 int (*body_length)(struct ieee802_1x_mka_participant *participant);
2025 bool (*body_present)(struct ieee802_1x_mka_participant *participant);
2135 ieee802_1x_kay_generate_new_sak(struct ieee802_1x_mka_participant *participant) in ieee802_1x_kay_generate_new_sak() argument
2139 struct ieee802_1x_kay *kay = participant->kay; in ieee802_1x_kay_generate_new_sak()
2151 if (dl_list_empty(&participant->live_peers)) { in ieee802_1x_kay_generate_new_sak()
2180 dl_list_for_each(peer, &participant->live_peers, in ieee802_1x_kay_generate_new_sak()
2183 ctx_len += sizeof(participant->mi); in ieee802_1x_kay_generate_new_sak()
2194 dl_list_for_each(peer, &participant->live_peers, in ieee802_1x_kay_generate_new_sak()
2199 os_memcpy(context + ctx_offset, participant->mi, in ieee802_1x_kay_generate_new_sak()
2200 sizeof(participant->mi)); in ieee802_1x_kay_generate_new_sak()
2201 ctx_offset += sizeof(participant->mi); in ieee802_1x_kay_generate_new_sak()
2205 if (ieee802_1x_sak_aes_cmac(participant->cak.key, in ieee802_1x_kay_generate_new_sak()
2206 participant->cak.len, in ieee802_1x_kay_generate_new_sak()
2229 os_memcpy(sa_key->key_identifier.mi, participant->mi, MI_LEN); in ieee802_1x_kay_generate_new_sak()
2236 participant->new_key = sa_key; in ieee802_1x_kay_generate_new_sak()
2239 dl_list_add(&participant->sak_list, &sa_key->list); in ieee802_1x_kay_generate_new_sak()
2250 dl_list_for_each(peer, &participant->live_peers, in ieee802_1x_kay_generate_new_sak()
2287 ieee802_1x_kay_elect_key_server(struct ieee802_1x_mka_participant *participant) in ieee802_1x_kay_elect_key_server() argument
2291 struct ieee802_1x_kay *kay = participant->kay; in ieee802_1x_kay_elect_key_server()
2295 if (participant->is_obliged_key_server) { in ieee802_1x_kay_elect_key_server()
2296 participant->new_sak = true; in ieee802_1x_kay_elect_key_server()
2297 participant->to_dist_sak = false; in ieee802_1x_kay_elect_key_server()
2303 dl_list_for_each(peer, &participant->live_peers, in ieee802_1x_kay_elect_key_server()
2319 if (key_server && participant->can_be_key_server) { in ieee802_1x_kay_elect_key_server()
2332 } else if (participant->can_be_key_server) { in ieee802_1x_kay_elect_key_server()
2343 participant->is_key_server = true; in ieee802_1x_kay_elect_key_server()
2344 participant->principal = true; in ieee802_1x_kay_elect_key_server()
2345 participant->new_sak = true; in ieee802_1x_kay_elect_key_server()
2347 participant->to_dist_sak = false; in ieee802_1x_kay_elect_key_server()
2348 participant->is_elected = true; in ieee802_1x_kay_elect_key_server()
2363 participant->is_key_server = false; in ieee802_1x_kay_elect_key_server()
2364 participant->principal = true; in ieee802_1x_kay_elect_key_server()
2365 participant->is_elected = true; in ieee802_1x_kay_elect_key_server()
2371 participant->principal = false; in ieee802_1x_kay_elect_key_server()
2372 participant->is_key_server = false; in ieee802_1x_kay_elect_key_server()
2373 participant->is_elected = false; in ieee802_1x_kay_elect_key_server()
2388 struct ieee802_1x_mka_participant *participant) in ieee802_1x_kay_decide_macsec_use() argument
2390 struct ieee802_1x_kay *kay = participant->kay; in ieee802_1x_kay_decide_macsec_use()
2395 if (!participant->is_key_server) in ieee802_1x_kay_decide_macsec_use()
2400 participant->advised_desired = false; in ieee802_1x_kay_decide_macsec_use()
2404 participant->advised_desired = false; in ieee802_1x_kay_decide_macsec_use()
2411 dl_list_for_each(peer, &participant->live_peers, in ieee802_1x_kay_decide_macsec_use()
2425 participant->advised_desired = true; in ieee802_1x_kay_decide_macsec_use()
2426 participant->advised_capability = less_capability; in ieee802_1x_kay_decide_macsec_use()
2433 participant->advised_desired = false; in ieee802_1x_kay_decide_macsec_use()
2434 participant->advised_capability = MACSEC_CAP_NOT_IMPLEMENTED; in ieee802_1x_kay_decide_macsec_use()
2435 participant->to_use_sak = false; in ieee802_1x_kay_decide_macsec_use()
2463 ieee802_1x_kay_encode_mkpdu(struct ieee802_1x_mka_participant *participant, in ieee802_1x_kay_encode_mkpdu() argument
2472 os_memcpy(ether_hdr->src, participant->kay->actor_sci.addr, in ieee802_1x_kay_encode_mkpdu()
2491 mka_body_handler[i].body_present(participant)) { in ieee802_1x_kay_encode_mkpdu()
2492 if (mka_body_handler[i].body_tx(participant, pbuf)) in ieee802_1x_kay_encode_mkpdu()
2506 struct ieee802_1x_mka_participant *participant) in ieee802_1x_participant_send_mkpdu() argument
2509 struct ieee802_1x_kay *kay = participant->kay; in ieee802_1x_participant_send_mkpdu()
2518 mka_body_handler[i].body_present(participant)) in ieee802_1x_participant_send_mkpdu()
2519 length += mka_body_handler[i].body_length(participant); in ieee802_1x_participant_send_mkpdu()
2528 if (ieee802_1x_kay_encode_mkpdu(participant, buf)) { in ieee802_1x_participant_send_mkpdu()
2538 participant->active = true; in ieee802_1x_participant_send_mkpdu()
2560 struct ieee802_1x_mka_participant *participant; in ieee802_1x_participant_timer() local
2569 participant = (struct ieee802_1x_mka_participant *)eloop_ctx; in ieee802_1x_participant_timer()
2570 kay = participant->kay; in ieee802_1x_participant_timer()
2573 if (participant->cak_life) { in ieee802_1x_participant_timer()
2574 if (now > participant->cak_life) in ieee802_1x_participant_timer()
2580 if (participant->mka_life) { in ieee802_1x_participant_timer()
2581 if (dl_list_empty(&participant->live_peers)) { in ieee802_1x_participant_timer()
2582 if (now > participant->mka_life) in ieee802_1x_participant_timer()
2585 participant->mka_life = 0; in ieee802_1x_participant_timer()
2591 dl_list_for_each_safe(peer, pre_peer, &participant->live_peers, in ieee802_1x_participant_timer()
2597 &participant->rxsc_list, in ieee802_1x_participant_timer()
2601 participant, rxsc); in ieee802_1x_participant_timer()
2622 if (!reset_participant_mi(participant)) in ieee802_1x_participant_timer()
2631 if (dl_list_empty(&participant->live_peers)) { in ieee802_1x_participant_timer()
2632 participant->advised_desired = false; in ieee802_1x_participant_timer()
2633 participant->advised_capability = in ieee802_1x_participant_timer()
2635 participant->to_use_sak = false; in ieee802_1x_participant_timer()
2636 participant->ltx = false; in ieee802_1x_participant_timer()
2637 participant->lrx = false; in ieee802_1x_participant_timer()
2638 participant->otx = false; in ieee802_1x_participant_timer()
2639 participant->orx = false; in ieee802_1x_participant_timer()
2640 participant->is_key_server = false; in ieee802_1x_participant_timer()
2641 participant->is_elected = false; in ieee802_1x_participant_timer()
2654 &participant->txsc->sa_list, in ieee802_1x_participant_timer()
2662 ieee802_1x_kay_elect_key_server(participant); in ieee802_1x_participant_timer()
2663 ieee802_1x_kay_decide_macsec_use(participant); in ieee802_1x_participant_timer()
2667 dl_list_for_each_safe(peer, pre_peer, &participant->potential_peers, in ieee802_1x_participant_timer()
2677 if (participant->new_sak && participant->is_key_server) { in ieee802_1x_participant_timer()
2678 if (!ieee802_1x_kay_generate_new_sak(participant)) in ieee802_1x_participant_timer()
2679 participant->to_dist_sak = true; in ieee802_1x_participant_timer()
2681 participant->new_sak = false; in ieee802_1x_participant_timer()
2684 if (participant->retry_count < MAX_RETRY_CNT || in ieee802_1x_participant_timer()
2685 participant->mode == PSK) { in ieee802_1x_participant_timer()
2686 ieee802_1x_participant_send_mkpdu(participant); in ieee802_1x_participant_timer()
2687 participant->retry_count++; in ieee802_1x_participant_timer()
2692 participant, NULL); in ieee802_1x_participant_timer()
2700 ieee802_1x_kay_delete_mka(kay, &participant->ckn); in ieee802_1x_participant_timer()
2794 struct ieee802_1x_mka_participant *participant, struct transmit_sc *psc) in ieee802_1x_kay_deinit_transmit_sc() argument
2800 ieee802_1x_delete_transmit_sa(participant->kay, psa); in ieee802_1x_kay_deinit_transmit_sc()
2802 secy_delete_transmit_sc(participant->kay, psc); in ieee802_1x_kay_deinit_transmit_sc()
3110 struct ieee802_1x_mka_participant *participant; in ieee802_1x_kay_mkpdu_validity_check() local
3184 participant = ieee802_1x_kay_get_participant(kay, body->ckn, ckn_len); in ieee802_1x_kay_mkpdu_validity_check()
3185 if (!participant) { in ieee802_1x_kay_mkpdu_validity_check()
3207 participant->ick.key, participant->ick.len, in ieee802_1x_kay_mkpdu_validity_check()
3213 msg_icv = ieee802_1x_mka_decode_icv_body(participant, in ieee802_1x_kay_mkpdu_validity_check()
3241 struct ieee802_1x_mka_participant *participant; in ieee802_1x_kay_decode_mkpdu() local
3263 participant = ieee802_1x_mka_decode_basic_body(kay, pos, left_len); in ieee802_1x_kay_decode_mkpdu()
3264 if (!participant) in ieee802_1x_kay_decode_mkpdu()
3276 i_in_peerlist = ieee802_1x_mka_i_in_peerlist(participant, pos, in ieee802_1x_kay_decode_mkpdu()
3279 participant, participant->current_peer_id.mi); in ieee802_1x_kay_decode_mkpdu()
3285 participant, participant->current_peer_id.mi); in ieee802_1x_kay_decode_mkpdu()
3288 participant, in ieee802_1x_kay_decode_mkpdu()
3289 participant->current_peer_id.mi, in ieee802_1x_kay_decode_mkpdu()
3290 be_to_host32(participant-> in ieee802_1x_kay_decode_mkpdu()
3294 participant, participant->current_peer_id.mi, in ieee802_1x_kay_decode_mkpdu()
3295 be_to_host32(participant-> in ieee802_1x_kay_decode_mkpdu()
3300 ieee802_1x_kay_elect_key_server(participant); in ieee802_1x_kay_decode_mkpdu()
3301 ieee802_1x_kay_decide_macsec_use(participant); in ieee802_1x_kay_decode_mkpdu()
3341 (participant, pos, left_len) != 0) { in ieee802_1x_kay_decode_mkpdu()
3371 if (!reset_participant_mi(participant)) in ieee802_1x_kay_decode_mkpdu()
3376 mi_txt(participant->mi)); in ieee802_1x_kay_decode_mkpdu()
3381 peer = ieee802_1x_kay_get_live_peer(participant, in ieee802_1x_kay_decode_mkpdu()
3382 participant->current_peer_id.mi); in ieee802_1x_kay_decode_mkpdu()
3412 peer = ieee802_1x_kay_get_peer(participant, in ieee802_1x_kay_decode_mkpdu()
3413 participant->current_peer_id.mi); in ieee802_1x_kay_decode_mkpdu()
3428 participant->retry_count = 0; in ieee802_1x_kay_decode_mkpdu()
3429 participant->active = true; in ieee802_1x_kay_decode_mkpdu()
3620 struct ieee802_1x_mka_participant *participant; in ieee802_1x_kay_deinit() local
3628 participant = dl_list_entry(kay->participant_list.next, in ieee802_1x_kay_deinit()
3631 ieee802_1x_kay_delete_mka(kay, &participant->ckn); in ieee802_1x_kay_deinit()
3669 struct ieee802_1x_mka_participant *participant; in ieee802_1x_kay_create_mka() local
3695 participant = os_zalloc(sizeof(*participant)); in ieee802_1x_kay_create_mka()
3696 if (!participant) { in ieee802_1x_kay_create_mka()
3701 participant->ckn.len = ckn->len; in ieee802_1x_kay_create_mka()
3702 os_memcpy(participant->ckn.name, ckn->name, ckn->len); in ieee802_1x_kay_create_mka()
3703 wpa_hexdump(MSG_DEBUG, "KaY: CKN", participant->ckn.name, in ieee802_1x_kay_create_mka()
3704 participant->ckn.len); in ieee802_1x_kay_create_mka()
3705 participant->cak.len = cak->len; in ieee802_1x_kay_create_mka()
3706 os_memcpy(participant->cak.key, cak->key, cak->len); in ieee802_1x_kay_create_mka()
3707 wpa_hexdump_key(MSG_DEBUG, "KaY: CAK", participant->cak.key, in ieee802_1x_kay_create_mka()
3708 participant->cak.len); in ieee802_1x_kay_create_mka()
3710 participant->cak_life = life + time(NULL); in ieee802_1x_kay_create_mka()
3715 participant->is_obliged_key_server = true; in ieee802_1x_kay_create_mka()
3716 participant->can_be_key_server = true; in ieee802_1x_kay_create_mka()
3717 participant->is_key_server = true; in ieee802_1x_kay_create_mka()
3718 participant->principal = true; in ieee802_1x_kay_create_mka()
3723 participant->is_elected = true; in ieee802_1x_kay_create_mka()
3725 participant->is_obliged_key_server = false; in ieee802_1x_kay_create_mka()
3726 participant->can_be_key_server = false; in ieee802_1x_kay_create_mka()
3727 participant->is_key_server = false; in ieee802_1x_kay_create_mka()
3728 participant->is_elected = true; in ieee802_1x_kay_create_mka()
3733 participant->is_obliged_key_server = false; in ieee802_1x_kay_create_mka()
3734 participant->can_be_key_server = true; in ieee802_1x_kay_create_mka()
3735 participant->is_key_server = true; in ieee802_1x_kay_create_mka()
3736 participant->is_elected = false; in ieee802_1x_kay_create_mka()
3740 participant->cached = false; in ieee802_1x_kay_create_mka()
3742 participant->active = false; in ieee802_1x_kay_create_mka()
3743 participant->participant = false; in ieee802_1x_kay_create_mka()
3744 participant->retain = false; in ieee802_1x_kay_create_mka()
3745 participant->activate = DEFAULT; in ieee802_1x_kay_create_mka()
3747 if (participant->is_key_server) in ieee802_1x_kay_create_mka()
3748 participant->principal = true; in ieee802_1x_kay_create_mka()
3750 dl_list_init(&participant->live_peers); in ieee802_1x_kay_create_mka()
3751 dl_list_init(&participant->potential_peers); in ieee802_1x_kay_create_mka()
3753 participant->retry_count = 0; in ieee802_1x_kay_create_mka()
3754 participant->kay = kay; in ieee802_1x_kay_create_mka()
3756 if (!reset_participant_mi(participant)) in ieee802_1x_kay_create_mka()
3759 mi_txt(participant->mi)); in ieee802_1x_kay_create_mka()
3761 participant->lrx = false; in ieee802_1x_kay_create_mka()
3762 participant->ltx = false; in ieee802_1x_kay_create_mka()
3763 participant->orx = false; in ieee802_1x_kay_create_mka()
3764 participant->otx = false; in ieee802_1x_kay_create_mka()
3765 participant->to_dist_sak = false; in ieee802_1x_kay_create_mka()
3766 participant->to_use_sak = false; in ieee802_1x_kay_create_mka()
3767 participant->new_sak = false; in ieee802_1x_kay_create_mka()
3768 dl_list_init(&participant->sak_list); in ieee802_1x_kay_create_mka()
3769 participant->new_key = NULL; in ieee802_1x_kay_create_mka()
3770 dl_list_init(&participant->rxsc_list); in ieee802_1x_kay_create_mka()
3771 participant->txsc = ieee802_1x_kay_init_transmit_sc(&kay->actor_sci); in ieee802_1x_kay_create_mka()
3776 if (secy_create_transmit_sc(kay, participant->txsc)) in ieee802_1x_kay_create_mka()
3780 participant->kek.len = participant->cak.len; in ieee802_1x_kay_create_mka()
3781 if (mka_alg_tbl[kay->mka_algindex].kek_trfm(participant->cak.key, in ieee802_1x_kay_create_mka()
3782 participant->cak.len, in ieee802_1x_kay_create_mka()
3783 participant->ckn.name, in ieee802_1x_kay_create_mka()
3784 participant->ckn.len, in ieee802_1x_kay_create_mka()
3785 participant->kek.key, in ieee802_1x_kay_create_mka()
3786 participant->kek.len)) { in ieee802_1x_kay_create_mka()
3791 participant->kek.key, participant->kek.len); in ieee802_1x_kay_create_mka()
3794 participant->ick.len = participant->cak.len; in ieee802_1x_kay_create_mka()
3795 if (mka_alg_tbl[kay->mka_algindex].ick_trfm(participant->cak.key, in ieee802_1x_kay_create_mka()
3796 participant->cak.len, in ieee802_1x_kay_create_mka()
3797 participant->ckn.name, in ieee802_1x_kay_create_mka()
3798 participant->ckn.len, in ieee802_1x_kay_create_mka()
3799 participant->ick.key, in ieee802_1x_kay_create_mka()
3800 participant->ick.len)) { in ieee802_1x_kay_create_mka()
3805 participant->ick.key, participant->ick.len); in ieee802_1x_kay_create_mka()
3807 dl_list_add(&kay->participant_list, &participant->list); in ieee802_1x_kay_create_mka()
3811 participant, NULL); in ieee802_1x_kay_create_mka()
3819 participant->mka_life = MKA_LIFE_TIME / 1000 + time(NULL) + in ieee802_1x_kay_create_mka()
3822 participant->mode = mode; in ieee802_1x_kay_create_mka()
3824 return participant; in ieee802_1x_kay_create_mka()
3827 os_free(participant->txsc); in ieee802_1x_kay_create_mka()
3828 os_free(participant); in ieee802_1x_kay_create_mka()
3839 struct ieee802_1x_mka_participant *participant; in ieee802_1x_kay_delete_mka() local
3850 participant = ieee802_1x_kay_get_participant(kay, ckn->name, ckn->len); in ieee802_1x_kay_delete_mka()
3851 if (!participant) { in ieee802_1x_kay_delete_mka()
3857 eloop_cancel_timeout(ieee802_1x_participant_timer, participant, NULL); in ieee802_1x_kay_delete_mka()
3858 dl_list_del(&participant->list); in ieee802_1x_kay_delete_mka()
3861 while (!dl_list_empty(&participant->live_peers)) { in ieee802_1x_kay_delete_mka()
3862 peer = dl_list_entry(participant->live_peers.next, in ieee802_1x_kay_delete_mka()
3869 while (!dl_list_empty(&participant->potential_peers)) { in ieee802_1x_kay_delete_mka()
3870 peer = dl_list_entry(participant->potential_peers.next, in ieee802_1x_kay_delete_mka()
3877 while (!dl_list_empty(&participant->sak_list)) { in ieee802_1x_kay_delete_mka()
3878 sak = dl_list_entry(participant->sak_list.next, in ieee802_1x_kay_delete_mka()
3883 while (!dl_list_empty(&participant->rxsc_list)) { in ieee802_1x_kay_delete_mka()
3884 rxsc = dl_list_entry(participant->rxsc_list.next, in ieee802_1x_kay_delete_mka()
3886 ieee802_1x_kay_deinit_receive_sc(participant, rxsc); in ieee802_1x_kay_delete_mka()
3888 ieee802_1x_kay_deinit_transmit_sc(participant, participant->txsc); in ieee802_1x_kay_delete_mka()
3890 os_memset(&participant->cak, 0, sizeof(participant->cak)); in ieee802_1x_kay_delete_mka()
3891 os_memset(&participant->kek, 0, sizeof(participant->kek)); in ieee802_1x_kay_delete_mka()
3892 os_memset(&participant->ick, 0, sizeof(participant->ick)); in ieee802_1x_kay_delete_mka()
3893 os_free(participant); in ieee802_1x_kay_delete_mka()
3903 struct ieee802_1x_mka_participant *participant; in ieee802_1x_kay_mka_participate() local
3908 participant = ieee802_1x_kay_get_participant(kay, ckn->name, ckn->len); in ieee802_1x_kay_mka_participate()
3909 if (!participant) in ieee802_1x_kay_mka_participate()
3912 participant->active = status; in ieee802_1x_kay_mka_participate()
3922 struct ieee802_1x_mka_participant *participant; in ieee802_1x_kay_new_sak() local
3927 participant = ieee802_1x_kay_get_principal_participant(kay); in ieee802_1x_kay_new_sak()
3928 if (!participant) in ieee802_1x_kay_new_sak()
3931 participant->new_sak = true; in ieee802_1x_kay_new_sak()
3945 struct ieee802_1x_mka_participant *participant; in ieee802_1x_kay_change_cipher_suite() local
3971 participant = ieee802_1x_kay_get_principal_participant(kay); in ieee802_1x_kay_change_cipher_suite()
3972 if (participant) { in ieee802_1x_kay_change_cipher_suite()
3974 participant->new_sak = true; in ieee802_1x_kay_change_cipher_suite()
4072 yes_no(p->participant), in ieee802_1x_kay_get_status()