wpa_supplicant / hostapd 2.0

eap_psk_common.h

Go to the documentation of this file.
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 
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Defines