9 #ifndef IEEE802_1X_KAY_I_H 10 #define IEEE802_1X_KAY_I_H 12 #include "utils/list.h" 13 #include "common/defs.h" 14 #include "common/ieee802_1x_defs.h" 16 #define MKA_VERSION_ID 1 19 enum mka_packet_type {
20 MKA_BASIC_PARAMETER_SET = MKA_VERSION_ID,
21 MKA_LIVE_PEER_LIST = 1,
22 MKA_POTENTIAL_PEER_LIST = 2,
24 MKA_DISTRIBUTED_SAK = 4,
25 MKA_DISTRIBUTED_CAK = 5,
28 MKA_ICV_INDICATOR = 255
32 #define SAK_WRAPPED_LEN 24 34 #define DEFAULT_DIS_SAK_BODY_LENGTH (SAK_WRAPPED_LEN + 4) 35 #define MAX_RETRY_CNT 5 49 Boolean is_key_server;
50 u8 key_server_priority;
51 Boolean macsec_desired;
52 enum macsec_cap macsec_capability;
60 enum macsec_cap capable;
73 int (*cak_trfm)(
const u8 *msk,
const u8 *mac1,
const u8 *mac2, u8 *cak);
74 int (*ckn_trfm)(
const u8 *msk,
const u8 *mac1,
const u8 *mac2,
75 const u8 *sid,
size_t sid_len, u8 *ckn);
76 int (*kek_trfm)(
const u8 *cak,
const u8 *ckn,
size_t ckn_len, u8 *kek);
77 int (*ick_trfm)(
const u8 *cak,
const u8 *ckn,
size_t ckn_len, u8 *ick);
78 int (*icv_hash)(
const u8 *ick,
const u8 *msg,
size_t msg_len, u8 *icv);
83 #define DEFAULT_MKA_ALG_INDEX 0 97 enum { DEFAULT, DISABLED, ON_OPER_UP, ALWAYS } activate;
102 struct dl_list potential_peers;
120 Boolean is_key_server;
121 Boolean is_obliged_key_server;
122 Boolean can_be_key_server;
141 Boolean advised_desired;
142 enum macsec_cap advised_capability;
156 #if __BYTE_ORDER == __LITTLE_ENDIAN 159 #elif __BYTE_ORDER == __BIG_ENDIAN 163 #error "Please fix <bits/endian.h>" 169 #define MKA_HDR_LEN sizeof(struct ieee802_1x_mka_hdr) 193 #if __BYTE_ORDER == __LITTLE_ENDIAN 195 u8 macsec_capability:2;
198 #elif __BYTE_ORDER == __BIG_ENDIAN 201 u8 macsec_capability:2;
230 #if __BYTE_ORDER == __LITTLE_ENDIAN 233 #elif __BYTE_ORDER == __BIG_ENDIAN 270 #if __BYTE_ORDER == __LITTLE_ENDIAN 277 #elif __BYTE_ORDER == __BIG_ENDIAN 287 #if __BYTE_ORDER == __LITTLE_ENDIAN 293 #elif __BYTE_ORDER == __BIG_ENDIAN 338 #if __BYTE_ORDER == __LITTLE_ENDIAN 342 #elif __BYTE_ORDER == __BIG_ENDIAN 348 #if __BYTE_ORDER == __LITTLE_ENDIAN 351 #elif __BYTE_ORDER == __BIG_ENDIAN 385 #if __BYTE_ORDER == __LITTLE_ENDIAN 388 #elif __BYTE_ORDER == __BIG_ENDIAN 408 #if __BYTE_ORDER == __LITTLE_ENDIAN 411 #elif __BYTE_ORDER == __BIG_ENDIAN Definition: ieee802_1x_kay_i.h:402
Definition: ieee802_1x_kay.h:48
Definition: ieee802_1x_kay_i.h:44
Definition: ieee802_1x_kay_i.h:66
Definition: ieee802_1x_kay_i.h:57
Definition: ieee802_1x_kay.h:43
struct ieee802_1x_mka_basic_body - Basic Parameter Set (Figure 11-8)
Definition: ieee802_1x_kay_i.h:187
Definition: ieee802_1x_kay_i.h:150
Definition: ieee802_1x_kay.h:58
Definition: ieee802_1x_kay.h:169
Definition: ieee802_1x_kay_i.h:86
Definition: ieee802_1x_kay.h:38
struct dl_list - Doubly-linked list
Definition: list.h:15
struct ieee802_1x_mka_dist_sak_body - Distributed SAK parameter set (GCM-AES-128, Figure 11-11) : Par...
Definition: ieee802_1x_kay_i.h:334
struct ieee802_1x_mka_peer_body - Live Peer List and Potential Peer List parameter sets (Figure 11-9)...
Definition: ieee802_1x_kay_i.h:224
struct ieee802_1x_mka_dist_cak_body - Distributed CAK parameter set (Figure 11-13) : Parameter set ty...
Definition: ieee802_1x_kay_i.h:379
Definition: ieee802_1x_kay.h:79
struct ieee802_1x_mka_ki - Key Identifier (KI) : Key Server's Member Identifier : Key Number...
Definition: ieee802_1x_kay.h:33
struct ieee802_1x_mka_sak_use_body - MACsec SAK Use parameter set (Figure 11-10) : MKA message type :...
Definition: ieee802_1x_kay_i.h:266
Definition: ieee802_1x_kay_i.h:39