Lines Matching refs:body

85 static void set_mka_param_body_len(void *body, unsigned int len)
87 struct ieee802_1x_mka_hdr *hdr = body;
93 static unsigned int get_mka_param_body_len(const void *body)
95 const struct ieee802_1x_mka_hdr *hdr = body;
100 static u8 get_mka_param_body_type(const void *body)
102 const struct ieee802_1x_mka_hdr *hdr = body;
139 ieee802_1x_mka_dump_basic_body(struct ieee802_1x_mka_basic_body *body)
143 if (!body)
147 body_len = get_mka_param_body_len(body);
149 wpa_printf(MSG_DEBUG, "\tMKA Version Identifier: %d", body->version);
150 wpa_printf(MSG_DEBUG, "\tKey Server Priority: %d", body->priority);
151 wpa_printf(MSG_DEBUG, "\tKey Server: %d", body->key_server);
152 wpa_printf(MSG_DEBUG, "\tMACsec Desired: %d", body->macsec_desired);
154 body->macsec_capability);
155 wpa_printf(MSG_DEBUG, "\tParameter set body length: %zu", body_len);
156 wpa_printf(MSG_DEBUG, "\tSCI: %s", sci_txt(&body->actor_sci));
158 mi_txt(body->actor_mi));
160 be_to_host32(body->actor_mn));
162 algo_agility_txt(body->algo_agility));
163 wpa_hexdump(MSG_DEBUG, "\tCAK Name", body->ckn,
164 body_len + MKA_HDR_LEN - sizeof(*body));
172 ieee802_1x_mka_dump_peer_body(struct ieee802_1x_mka_peer_body *body)
179 if (body == NULL)
183 body_len = get_mka_param_body_len(body);
184 if (body->type == MKA_LIVE_PEER_LIST) {
187 } else if (body->type == MKA_POTENTIAL_PEER_LIST) {
193 mi = body->peer + i;
205 ieee802_1x_mka_dump_dist_sak_body(struct ieee802_1x_mka_dist_sak_body *body)
209 if (body == NULL)
213 body_len = get_mka_param_body_len(body);
215 wpa_printf(MSG_DEBUG, "\tDistributed AN........: %d", body->dan);
217 body->confid_offset);
223 be_to_host32(body->kn));
225 wpa_hexdump(MSG_DEBUG, "\tAES Key Wrap of SAK...:", body->sak, 24);
239 ieee802_1x_mka_dump_sak_use_body(struct ieee802_1x_mka_sak_use_body *body)
243 if (body == NULL)
247 body_len = get_mka_param_body_len(body);
249 wpa_printf(MSG_DEBUG, "\tLatest Key AN....: %d", body->lan);
250 wpa_printf(MSG_DEBUG, "\tLatest Key Tx....: %s", yes_no(body->ltx));
251 wpa_printf(MSG_DEBUG, "\tLatest Key Rx....: %s", yes_no(body->lrx));
252 wpa_printf(MSG_DEBUG, "\tOld Key AN.......: %d", body->oan);
253 wpa_printf(MSG_DEBUG, "\tOld Key Tx.......: %s", yes_no(body->otx));
254 wpa_printf(MSG_DEBUG, "\tOld Key Rx.......: %s", yes_no(body->orx));
255 wpa_printf(MSG_DEBUG, "\tPlain Tx.........: %s", yes_no(body->ptx));
256 wpa_printf(MSG_DEBUG, "\tPlain Rx.........: %s", yes_no(body->prx));
258 yes_no(body->delay_protect));
263 wpa_printf(MSG_DEBUG, "\tKey Server MI....: %s", mi_txt(body->lsrv_mi));
265 be_to_host32(body->lkn));
267 be_to_host32(body->llpn));
268 wpa_printf(MSG_DEBUG, "\tOld Key Server MI: %s", mi_txt(body->osrv_mi));
270 be_to_host32(body->okn));
272 be_to_host32(body->olpn));
739 struct ieee802_1x_mka_basic_body *body;
744 body = wpabuf_put(buf, MKA_ALIGN_LENGTH(length));
746 body->version = kay->mka_version;
747 body->priority = kay->actor_priority;
751 body->key_server = participant->is_key_server;
753 body->key_server = participant->can_be_key_server;
755 body->macsec_desired = kay->macsec_desired;
756 body->macsec_capability = kay->macsec_capable;
757 set_mka_param_body_len(body, length - MKA_HDR_LEN);
759 os_memcpy(body->actor_sci.addr, kay->actor_sci.addr,
761 body->actor_sci.port = kay->actor_sci.port;
763 os_memcpy(body->actor_mi, participant->mi, sizeof(body->actor_mi));
765 body->actor_mn = host_to_be32(participant->mn);
766 os_memcpy(body->algo_agility, kay->algo_agility,
767 sizeof(body->algo_agility));
769 os_memcpy(body->ckn, participant->ckn.name, participant->ckn.len);
771 ieee802_1x_mka_dump_basic_body(body);
796 const struct ieee802_1x_mka_basic_body *body;
801 body = (const struct ieee802_1x_mka_basic_body *) mka_msg;
803 if (body->version > MKA_VERSION_ID) {
806 body->version, MKA_VERSION_ID);
808 if (kay->is_obliged_key_server && body->key_server) {
813 body_len = get_mka_param_body_len(body);
815 wpa_printf(MSG_DEBUG, "KaY: Too small body length %zu",
821 participant = ieee802_1x_kay_get_participant(kay, body->ckn, ckn_len);
829 if (os_memcmp(body->actor_mi, participant->mi, MI_LEN) == 0) {
837 os_memcpy(participant->current_peer_id.mi, body->actor_mi, MI_LEN);
838 participant->current_peer_id.mn = body->actor_mn;
839 os_memcpy(participant->current_peer_sci.addr, body->actor_sci.addr,
841 participant->current_peer_sci.port = body->actor_sci.port;
844 peer = ieee802_1x_kay_get_peer(participant, body->actor_mi);
866 &body->actor_sci);
881 participant, body->actor_mi,
882 be_to_host32(body->actor_mn));
889 peer->macsec_desired = body->macsec_desired;
890 peer->macsec_capability = body->macsec_capability;
891 peer->is_key_server = (Boolean) body->key_server;
892 peer->key_server_priority = body->priority;
893 } else if (peer->mn < be_to_host32(body->actor_mn)) {
894 peer->mn = be_to_host32(body->actor_mn);
895 peer->macsec_desired = body->macsec_desired;
896 peer->macsec_capability = body->macsec_capability;
897 peer->is_key_server = (Boolean) body->key_server;
898 peer->key_server_priority = body->priority;
946 struct ieee802_1x_mka_peer_body *body;
952 body = wpabuf_put(buf, sizeof(struct ieee802_1x_mka_peer_body));
954 body->type = MKA_LIVE_PEER_LIST;
955 set_mka_param_body_len(body, length - MKA_HDR_LEN);
965 ieee802_1x_mka_dump_peer_body(body);
1006 struct ieee802_1x_mka_peer_body *body;
1012 body = wpabuf_put(buf, sizeof(struct ieee802_1x_mka_peer_body));
1014 body->type = MKA_POTENTIAL_PEER_LIST;
1015 set_mka_param_body_len(body, length - MKA_HDR_LEN);
1025 ieee802_1x_mka_dump_peer_body(body);
1287 struct ieee802_1x_mka_sak_use_body *body;
1293 body = wpabuf_put(buf, length);
1295 body->type = MKA_SAK_USE;
1296 set_mka_param_body_len(body, length - MKA_HDR_LEN);
1299 body->ptx = TRUE;
1300 body->prx = TRUE;
1301 body->lan = 0;
1302 body->lrx = FALSE;
1303 body->ltx = FALSE;
1304 body->delay_protect = FALSE;
1309 body->delay_protect = kay->mka_hello_time <= MKA_BOUNDED_HELLO_TIME;
1318 body->llpn = host_to_be32(pn);
1320 body->olpn = host_to_be32(pn);
1323 body->ptx = !kay->macsec_protect;
1324 body->prx = kay->macsec_validate != Strict;
1327 body->lan = participant->lan;
1328 os_memcpy(body->lsrv_mi, participant->lki.mi, sizeof(body->lsrv_mi));
1329 body->lkn = host_to_be32(participant->lki.kn);
1330 body->lrx = participant->lrx;
1331 body->ltx = participant->ltx;
1334 body->oan = participant->oan;
1337 body->otx = TRUE;
1338 body->orx = TRUE;
1339 os_memcpy(body->osrv_mi, participant->oki.mi,
1340 sizeof(body->osrv_mi));
1341 body->okn = host_to_be32(participant->oki.kn);
1343 body->otx = FALSE;
1344 body->orx = FALSE;
1348 if (body->ltx) {
1352 if (body->lrx)
1355 ieee802_1x_mka_dump_sak_use_body(body);
1369 struct ieee802_1x_mka_sak_use_body *body;
1396 body = (struct ieee802_1x_mka_sak_use_body *) mka_msg;
1397 ieee802_1x_mka_dump_sak_use_body(body);
1415 if (body->prx)
1418 if (body->ptx)
1422 if (body->ltx || body->lrx) {
1424 os_memcpy(ki.mi, body->lsrv_mi, sizeof(ki.mi));
1425 ki.kn = be_to_host32(body->lkn);
1437 if (os_memcmp(participant->lki.mi, body->lsrv_mi,
1439 be_to_host32(body->lkn) == participant->lki.kn &&
1440 body->lan == participant->lan) {
1443 if (body->ltx && peer->is_key_server) {
1450 if (participant->oki.kn != 0 && (body->otx || body->orx)) {
1451 if (os_memcmp(participant->oki.mi, body->osrv_mi,
1453 be_to_host32(body->okn) != participant->oki.kn ||
1454 body->oan != participant->oan) {
1461 if (body->delay_protect &&
1462 (!be_to_host32(body->llpn) || !be_to_host32(body->olpn))) {
1484 lpn = be_to_host32(body->llpn);
1512 if (body->delay_protect) {
1575 struct ieee802_1x_mka_dist_sak_body *body;
1582 body = wpabuf_put(buf, length);
1583 body->type = MKA_DISTRIBUTED_SAK;
1584 set_mka_param_body_len(body, length - MKA_HDR_LEN);
1586 body->confid_offset = 0;
1587 body->dan = 0;
1597 body->confid_offset = sak->confidentiality_offset;
1598 body->dan = sak->an;
1599 body->kn = host_to_be32(sak->key_identifier.kn);
1608 os_memcpy(body->sak, &cs, CS_ID_LEN);
1613 sak->key, body->sak + sak_pos)) {
1618 ieee802_1x_mka_dump_dist_sak_body(body);
1647 struct ieee802_1x_mka_dist_sak_body *body;
1714 body = (struct ieee802_1x_mka_dist_sak_body *)mka_msg;
1715 ieee802_1x_mka_dump_dist_sak_body(body);
1720 sa_key->key_identifier.kn == be_to_host32(body->kn)) {
1729 wrap_sak = body->sak;
1735 cs = ieee802_1x_kay_get_cipher_suite(participant, body->sak,
1743 wrap_sak = body->sak + CS_ID_LEN;
1769 sa_key->key_identifier.kn = be_to_host32(body->kn);
1774 sa_key->confidentiality_offset = body->confid_offset;
1775 sa_key->an = body->dan;
1783 ieee802_1x_cp_set_offset(kay->cp, body->confid_offset);
1786 ieee802_1x_cp_set_distributedan(kay->cp, body->dan);
1834 struct ieee802_1x_mka_icv_body *body;
1842 body = wpabuf_put(buf, MKA_HDR_LEN);
1843 body->type = MKA_ICV_INDICATOR;
1845 set_mka_param_body_len(body, length);
1869 const struct ieee802_1x_mka_icv_body *body;
1891 body = (const struct ieee802_1x_mka_icv_body *) pos;
1896 return body->icv;
3033 struct ieee802_1x_mka_basic_body *body;
3081 body = (struct ieee802_1x_mka_basic_body *) mka_hdr;
3082 body_len = get_mka_param_body_len(body);
3083 /* EAPOL-MKA body should comprise basic parameter set and ICV */
3093 wpa_printf(MSG_DEBUG, "KaY: Too small body length %zu",
3106 ieee802_1x_mka_dump_basic_body(body);
3109 participant = ieee802_1x_kay_get_participant(kay, body->ckn, ckn_len);
3116 if (os_memcmp(body->algo_agility, mka_algo_agility,
3117 sizeof(body->algo_agility)) != 0) {
3120 algo_agility_txt(body->algo_agility));
3126 * The ICV will comprise the final octets of the packet body, whatever
3128 * packet body length.
3257 "KaY: Ignore duplicated body type %u",
3287 "KaY: The body type %d is not supported in this MKA version %d",