8#include "wpa_supplicant_i.h"
9#include "utils/eloop.h"
11#define ETH_TYPE_WAI 0x88B4
16#define WAI_FLAG_BK_UPDATE BIT(0)
17#define WAI_FLAG_PRE_AUTH BIT(1)
18#define WAI_FLAG_CERT_REQ BIT(2)
19#define WAI_FLAG_OPT_FIELD BIT(3)
20#define WAI_FLAG_USK_UPDATE BIT(4)
21#define WAI_FLAG_STAKEY_NEG BIT(5)
22#define WAI_FLAG_STAKEY_DEL BIT(6)
23#define WAI_FLAG_RESERVED BIT(7)
25#define MAX_KEYDATA_SIZE 256
26#define WAI_AUTH_ID_SIZE 32
27#define WAI_FLAG_SIZE 1
28#define WAI_CHALLENGE_SIZE 32
29#define WAI_KEY_LENGTH_SIZE 1
30#define WAI_BKID_SIZE 16
32#define WAI_ADDID_SIZE 12
33#define WAI_USKID_SIZE 1
34#define WAI_MSKID_SIZE 1
35#define WAI_USK_PN_IV_SIZE 16
36#define WAI_MSK_ANNO_IV_SIZE 16
37#define WAI_DATA_SERIAL_NUMBER 16
38#define WAI_MIC_SIZE 20
39#define WAI_UEK_UCK_SIZE 32
40#define WAI_MAK_SIZE 16
41#define WAI_KEK_SIZE 16
42#define WAI_MSK_SIZE 32
43#define WAI_NMK_SIZE 16
44#define WAI_MAX_TX_COUNT 3
45#define WAI_USKSA_CNT 2
46#define WAI_PRE_PSK_SIZE 128
48#define WAPI_IE_ID 0x44
49#define WAPI_IE_ID_SIZE 1
50#define WAPI_IE_LENGTH_SIZE 1
51#define WAPI_IE_VERSION_SIZE 2
52#define WAPI_IE_OUI_SIZE 3
53#define WAPI_IE_AKM_CNT_LEN 2
54#define WAPI_IE_AKM_SUIT_LEN 1
55#define WAPI_IE_AKM_SUIT_PSK 0x00147202
56#define WAPI_IE_CIPHER_CNT_LEN 2
57#define WAPI_IE_CIPHER_SUIT_LEN 1
58#define WAPI_IE_MIN_SIZE 16
59#define WAPI_IE_MAX_SIZE 255
60#define WAI_USK_DERIVATION_SIZE 96
62#define WAI_AUTH_TIMEOUT 10
65#define WAPI_FAILED (-1)
115struct wpa_supplicant;
116struct l2_packet_data;
120struct wpa_driver_associate_params;
123 const unsigned char *payload,
unsigned int payload_len);
162 const unsigned char *key,
unsigned int keylen,
163 const unsigned char *input,
unsigned int inlen,
164 unsigned char *output,
unsigned int *outlen);
185 struct wpa_supplicant *
wpa;
221 struct wpa_ie_data *ie_data);
224 const unsigned char *assoc_ie,
size_t assoc_ie_len);
osal_u32 ie_len
Definition oal_net.h:0
wai_dispose_func handler
Definition wapi.h:127
unsigned char msgid
Definition wapi.h:126
wapi_msksa_stru msksa
Definition wapi.h:209
size_t wapi_ie_len
Definition wapi.h:212
struct l2_packet_data * wapi_l2
Definition wapi.h:186
unsigned char bssid[6]
Definition wapi.h:201
struct wpa_supplicant * wpa
Definition wapi.h:185
const wapi_cipher_suite_stru * mcast_cipher_suite
Definition wapi.h:191
unsigned char ae_next_nonce[32]
Definition wapi.h:204
unsigned char wai_flag
Definition wapi.h:198
wapi_bksa_stru bksa
Definition wapi.h:207
size_t assoc_wapi_ie_len
Definition wapi.h:214
const wapi_cipher_suite_stru * ucast_cipher_suite
Definition wapi.h:190
unsigned short next_frame_seq
Definition wapi.h:196
struct wpabuf * tx_framebuf
Definition wapi.h:187
unsigned char bk[16]
Definition wapi.h:205
wapi_usksa_stru usksa
Definition wapi.h:208
unsigned char addid[12]
Definition wapi.h:202
unsigned char asue_nonce[32]
Definition wapi.h:203
wai_state_enum state
Definition wapi.h:193
unsigned char own_mac[6]
Definition wapi.h:200
auth_type_enum auth_type
Definition wapi.h:194
unsigned char wapi_ie[255]
Definition wapi.h:211
unsigned int tx_count
Definition wapi.h:188
unsigned char assoc_wapi_ie[255]
Definition wapi.h:213
unsigned short tx_frame_seq
Definition wapi.h:197
unsigned char bk[16]
Definition wapi.h:133
unsigned char bkid[16]
Definition wapi.h:132
unsigned char ae_mac[6]
Definition wapi.h:134
unsigned char asue_mac[6]
Definition wapi.h:135
int wpa_alg_type
Definition wapi.h:158
int(* wai_decrypt_cb)(const unsigned char *iv, unsigned int ivlen, const unsigned char *key, unsigned int keylen, const unsigned char *input, unsigned int inlen, unsigned char *output, unsigned int *outlen)
Definition wapi.h:161
int wpa_cipher_flag
Definition wapi.h:159
int wai_cipher_type
Definition wapi.h:160
unsigned char msk_seq_pn[16]
Definition wapi.h:153
unsigned char msk_anno_iv[16]
Definition wapi.h:154
unsigned char mskid
Definition wapi.h:152
unsigned char kek[16]
Definition wapi.h:141
unsigned char uek_uck[32]
Definition wapi.h:139
unsigned char mak[16]
Definition wapi.h:140
unsigned char uskid
Definition wapi.h:146
wapi_usk_stru usk
Definition wapi.h:147
struct wai_sm_hdl wai_sm_hdl_stru
int wapi_event_process(struct wapi_asue_struct *wapi, conn_status_enum action, const unsigned char *assoc_ie, size_t assoc_ie_len)
Definition wapi.c:272
struct wapi_cipher_suite wapi_cipher_suite_stru
void wapi_iface_init(struct wapi_asue_struct *wapi)
Definition wapi.c:45
wai_operation_t
Definition wapi.h:85
@ WAI_DECRYPT
Definition wapi.h:87
@ WAI_ENCRYPT
Definition wapi.h:88
@ WAI_OPERATION_NONE
Definition wapi.h:86
#define WAPI_IE_MAX_SIZE
Definition wapi.h:59
int wapi_init_ie(struct wpa_supplicant *wpa)
Definition wapi.c:72
#define WAI_BK_SIZE
Definition wapi.h:31
wai_state_enum
Definition wapi.h:91
@ WAISM_USKNEG_RES
Definition wapi.h:94
@ WAISM_USKNEG_CONFIRM
Definition wapi.h:95
@ WAISM_FINSHED
Definition wapi.h:96
@ WAISM_ALREADY_ASSOC
Definition wapi.h:93
@ WAISM_INIT
Definition wapi.h:92
keyslot_engine
Definition wapi.h:71
@ KEYSLOT_ENGINE_SM4
Definition wapi.h:73
@ KEYSLOT_ENGINE_HMAC_SHA1
Definition wapi.h:74
@ KEYSLOT_ENGINE_HMAC_SHA256
Definition wapi.h:75
@ KEYSLOT_ENGINE_HMAC_SHA512
Definition wapi.h:77
@ KEYSLOT_ENGINE_AES_ABRK1_REE
Definition wapi.h:81
@ KEYSLOT_ENGINE_HMAC_SM3
Definition wapi.h:78
@ KEYSLOT_ENGINE_AES
Definition wapi.h:72
@ KEYSLOT_ENGINE_HMAC_SHA384
Definition wapi.h:76
struct wapi_usk wapi_usk_stru
#define WAI_CHALLENGE_SIZE
Definition wapi.h:28
struct wapi_usksa wapi_usksa_stru
struct wapi_msksa wapi_msksa_stru
#define WAI_BKID_SIZE
Definition wapi.h:30
#define WAI_DATA_SERIAL_NUMBER
Definition wapi.h:37
#define ETH_ALEN
Definition wapi.h:68
#define WAI_MSK_ANNO_IV_SIZE
Definition wapi.h:36
enum _auth_type_enum auth_type_enum
#define WAI_ADDID_SIZE
Definition wapi.h:32
int wapi_generate_addid(struct wapi_asue_struct *wapi, struct wpa_bss *bss)
Definition wapi.c:256
#define WAI_KEK_SIZE
Definition wapi.h:41
int wapi_parse_ie(const unsigned char *wapi_ie, unsigned int ie_len, struct wpa_ie_data *ie_data)
Definition wapi.c:131
#define WAI_UEK_UCK_SIZE
Definition wapi.h:39
_auth_type_enum
Definition wapi.h:167
@ AUTH_TYPE_WAPI_CERT
Definition wapi.h:169
@ AUTH_TYPE_NONE_WAPI
Definition wapi.h:168
@ AUTH_TYPE_WAPI_PSK
Definition wapi.h:170
enum _wai_frame_enum wai_frame_enum
conn_status_enum
Definition wapi.h:179
@ CONN_DISASSOC
Definition wapi.h:181
@ CONN_ASSOC
Definition wapi.h:180
enum _cipher_type_enum cipher_type_enum
_cipher_type_enum
Definition wapi.h:173
@ CIPHER_TYPE_SM4_OFB
Definition wapi.h:175
@ CIPHER_TYPE_NONE
Definition wapi.h:174
@ CIPHER_TYPE_MAX
Definition wapi.h:176
#define WAI_MAK_SIZE
Definition wapi.h:40
_wai_frame_enum
Definition wapi.h:99
@ WAI_SUBTYPE_MAX
Definition wapi.h:112
@ WAI_MSK_ANNOUNCEMENT_RESPONSE
Definition wapi.h:111
@ WAI_CERT_AUTH_REQUEST
Definition wapi.h:105
@ WAI_MSK_ANNOUNCEMENT
Definition wapi.h:110
@ WAI_ACCESS_AUTH_RESPONSE
Definition wapi.h:104
@ WAI_STAKEY_REQUEST
Definition wapi.h:101
@ WAI_PREAUTH_START
Definition wapi.h:100
@ WAI_ACCESS_AUTH_REQUEST
Definition wapi.h:103
@ WAI_AUTH_ACTIVE
Definition wapi.h:102
@ WAI_USK_NEGOTIATION_CONFIRM
Definition wapi.h:109
@ WAI_CERT_AUTH_RESPONSE
Definition wapi.h:106
@ WAI_USK_NEGOTIATION_REQUEST
Definition wapi.h:107
@ WAI_USK_NEGOTIATION_RESPONSE
Definition wapi.h:108
void wapi_iface_deinit(struct wapi_asue_struct *wapi)
Definition wapi.c:57
struct wapi_bksa wapi_bksa_stru
int(* wai_dispose_func)(struct wpa_supplicant *wpa, const unsigned char *payload, unsigned int payload_len)
Definition wapi.h:122