7#ifndef __PACKET_MKA_H__
8#define __PACKET_MKA_H__
12#define MKA_MI_LEN_PUB 12U
13#define MKA_MAX_CKN_LEN_PUB 32U
15#define AES128_KEY_LEN 16
16#define AES256_KEY_LEN 32
20#define MACSEC_SCI_LEN 8U
21#define MACSEC_XPN_SALT_LEN 12U
23#define MACSEC_GCM_AES_128 UINT64_C(0x0080C20001000001)
24#define MACSEC_GCM_AES_256 UINT64_C(0x0080C20001000002)
25#define MACSEC_GCM_AES_XPN_128 UINT64_C(0x0080C20001000003)
26#define MACSEC_GCM_AES_XPN_256 UINT64_C(0x0080C20001000004)
28#define MKA_CAK_AES_GCM_128_LEN (AES128_KEY_LEN)
29#define MKA_CAK_AES_GCM_256_LEN (AES256_KEY_LEN)
30#define MKA_MAX_CAK_LEN (MKA_CAK_AES_GCM_256_LEN)
32#define MKA_MAX_KEK_LEN (MKA_CAK_AES_GCM_256_LEN)
33#define MKA_MAX_ICK_LEN (MKA_CAK_AES_GCM_256_LEN)
34#define MKA_MAX_SAK_LEN (MKA_CAK_AES_GCM_256_LEN)
38 unsigned char sak[MKA_MAX_SAK_LEN];
41 uint8_t ki[MKA_KI_LEN];
49 unsigned char salt[MACSEC_XPN_SALT_LEN];
51 uint64_t cipher_suite;
57 unsigned char kek[MKA_MAX_KEK_LEN];
61 unsigned char ick[MKA_MAX_ICK_LEN];
78 mka_ckn_info_key_t key;
85 const mka_ckn_info_t *ckn_info;
88 uint8_t ckn[MKA_MAX_CKN_LEN_PUB];
95 uint8_t actor_sci[MACSEC_SCI_LEN];
96 uint8_t actor_mi[MKA_MI_LEN_PUB];
104 uint32_t dist_sak_kn;
105 uint8_t dist_sak_ki[MKA_KI_LEN];
106 uint8_t dist_sak[MKA_MAX_SAK_LEN];
107 unsigned dist_sak_len;
114 bool latest_ki_valid;
115 uint8_t latest_ki[MKA_KI_LEN];
120 uint8_t old_ki[MKA_KI_LEN];
128const mka_ckn_info_t * get_mka_ckn_table(
void);
129unsigned get_mka_ckn_table_count(
void);
131mka_sak_info_key_t *mka_get_sak_info(
const mka_ckn_info_t *ckn_info,
unsigned an, uint32_t frame_num);
137uint64_t mka_get_lpn(
const mka_sak_info_key_t *sak_info,
const uint8_t *sci, uint32_t frame_num);
struct _wmem_array_t wmem_array_t
Opaque type representing a dynamically resizable array in the wmem system.
Definition wmem_array.h:42
struct _wmem_map_t wmem_map_t
Opaque type representing a wmem-managed hash map.
Definition wmem_map.h:46
Definition packet-mka.h:82
Definition packet-mka.h:55
Definition packet-mka.h:65
Definition packet-mka.h:36