|
wpa_supplicant / hostapd 2.0
|
00001 00010 #ifndef EAP_PSK_COMMON_H 00011 #define EAP_PSK_COMMON_H 00012 00013 00014 #define EAP_PSK_RAND_LEN 16 00015 #define EAP_PSK_MAC_LEN 16 00016 #define EAP_PSK_TEK_LEN 16 00017 #define EAP_PSK_PSK_LEN 16 00018 #define EAP_PSK_AK_LEN 16 00019 #define EAP_PSK_KDK_LEN 16 00020 00021 #define EAP_PSK_R_FLAG_CONT 1 00022 #define EAP_PSK_R_FLAG_DONE_SUCCESS 2 00023 #define EAP_PSK_R_FLAG_DONE_FAILURE 3 00024 #define EAP_PSK_E_FLAG 0x20 00025 00026 #define EAP_PSK_FLAGS_GET_T(flags) (((flags) & 0xc0) >> 6) 00027 #define EAP_PSK_FLAGS_SET_T(t) ((u8) (t) << 6) 00028 00029 #ifdef _MSC_VER 00030 #pragma pack(push, 1) 00031 #endif /* _MSC_VER */ 00032 00033 /* EAP-PSK First Message (AS -> Supplicant) */ 00034 struct eap_psk_hdr_1 { 00035 u8 flags; 00036 u8 rand_s[EAP_PSK_RAND_LEN]; 00037 /* Followed by variable length ID_S */ 00038 } STRUCT_PACKED; 00039 00040 /* EAP-PSK Second Message (Supplicant -> AS) */ 00041 struct eap_psk_hdr_2 { 00042 u8 flags; 00043 u8 rand_s[EAP_PSK_RAND_LEN]; 00044 u8 rand_p[EAP_PSK_RAND_LEN]; 00045 u8 mac_p[EAP_PSK_MAC_LEN]; 00046 /* Followed by variable length ID_P */ 00047 } STRUCT_PACKED; 00048 00049 /* EAP-PSK Third Message (AS -> Supplicant) */ 00050 struct eap_psk_hdr_3 { 00051 u8 flags; 00052 u8 rand_s[EAP_PSK_RAND_LEN]; 00053 u8 mac_s[EAP_PSK_MAC_LEN]; 00054 /* Followed by variable length PCHANNEL */ 00055 } STRUCT_PACKED; 00056 00057 /* EAP-PSK Fourth Message (Supplicant -> AS) */ 00058 struct eap_psk_hdr_4 { 00059 u8 flags; 00060 u8 rand_s[EAP_PSK_RAND_LEN]; 00061 /* Followed by variable length PCHANNEL */ 00062 } STRUCT_PACKED; 00063 00064 #ifdef _MSC_VER 00065 #pragma pack(pop) 00066 #endif /* _MSC_VER */ 00067 00068 00069 int __must_check eap_psk_key_setup(const u8 *psk, u8 *ak, u8 *kdk); 00070 int __must_check eap_psk_derive_keys(const u8 *kdk, const u8 *rand_p, u8 *tek, 00071 u8 *msk, u8 *emsk); 00072 00073 #endif /* EAP_PSK_COMMON_H */ 00074
1.7.3