Lines Matching +full:vendor +full:- +full:id

2  * EAP server/peer: EAP-GPSK shared routines
3 * Copyright (c) 2006-2007, Jouni Malinen <j@w1.fi>
19 * eap_gpsk_supported_ciphersuite - Check whether ciphersuite is supported
20 * @vendor: CSuite/Vendor
24 int eap_gpsk_supported_ciphersuite(int vendor, int specifier) in eap_gpsk_supported_ciphersuite() argument
26 if (vendor == EAP_GPSK_VENDOR_IETF && in eap_gpsk_supported_ciphersuite()
30 if (vendor == EAP_GPSK_VENDOR_IETF && in eap_gpsk_supported_ciphersuite()
49 /* M_i = MAC_Y (i || Z); (MAC = AES-CMAC-128) */ in eap_gpsk_gkdf_cmac()
57 n = (len + hashlen - 1) / hashlen; in eap_gpsk_gkdf_cmac()
61 return -1; in eap_gpsk_gkdf_cmac()
65 left -= clen; in eap_gpsk_gkdf_cmac()
84 /* M_i = MAC_Y (i || Z); (MAC = HMAC-SHA256) */ in eap_gpsk_gkdf_sha256()
92 n = (len + hashlen - 1) / hashlen; in eap_gpsk_gkdf_sha256()
96 return -1; in eap_gpsk_gkdf_sha256()
100 left -= clen; in eap_gpsk_gkdf_sha256()
134 return -1; in eap_gpsk_derive_keys_helper()
138 return -1; in eap_gpsk_derive_keys_helper()
143 return -1; in eap_gpsk_derive_keys_helper()
149 WPA_PUT_BE32(pos, EAP_GPSK_VENDOR_IETF); /* CSuite/Vendor = IETF */ in eap_gpsk_derive_keys_helper()
154 wpa_hexdump_key(MSG_DEBUG, "EAP-GPSK: Data to MK derivation", in eap_gpsk_derive_keys_helper()
159 return -1; in eap_gpsk_derive_keys_helper()
162 wpa_hexdump_key(MSG_DEBUG, "EAP-GPSK: MK", mk, mk_len); in eap_gpsk_derive_keys_helper()
165 return -1; in eap_gpsk_derive_keys_helper()
168 wpa_hexdump_key(MSG_DEBUG, "EAP-GPSK: MSK", pos, EAP_MSK_LEN); in eap_gpsk_derive_keys_helper()
172 wpa_hexdump_key(MSG_DEBUG, "EAP-GPSK: EMSK", pos, EAP_EMSK_LEN); in eap_gpsk_derive_keys_helper()
176 wpa_hexdump_key(MSG_DEBUG, "EAP-GPSK: SK", pos, sk_len); in eap_gpsk_derive_keys_helper()
181 wpa_hexdump_key(MSG_DEBUG, "EAP-GPSK: PK", pos, pk_len); in eap_gpsk_derive_keys_helper()
203 * MK = GKDF-16 (PSK[0..15], PL || PSK || CSuite_Sel || inputString) in eap_gpsk_derive_keys_aes()
204 * MSK = GKDF-160 (MK, inputString)[0..63] in eap_gpsk_derive_keys_aes()
205 * EMSK = GKDF-160 (MK, inputString)[64..127] in eap_gpsk_derive_keys_aes()
206 * SK = GKDF-160 (MK, inputString)[128..143] in eap_gpsk_derive_keys_aes()
207 * PK = GKDF-160 (MK, inputString)[144..159] in eap_gpsk_derive_keys_aes()
209 * Method-ID = GKDF-16 (zero, "Method ID" || EAP_Method_Type || in eap_gpsk_derive_keys_aes()
239 * MK = GKDF-32 (PSK[0..31], PL || PSK || CSuite_Sel || inputString) in eap_gpsk_derive_keys_sha256()
240 * MSK = GKDF-160 (MK, inputString)[0..63] in eap_gpsk_derive_keys_sha256()
241 * EMSK = GKDF-160 (MK, inputString)[64..127] in eap_gpsk_derive_keys_sha256()
242 * SK = GKDF-160 (MK, inputString)[128..159] in eap_gpsk_derive_keys_sha256()
244 * Method-ID = GKDF-16 (zero, "Method ID" || EAP_Method_Type || in eap_gpsk_derive_keys_sha256()
260 * eap_gpsk_derive_keys - Derive EAP-GPSK keys
261 * @psk: Pre-shared key
263 * @vendor: CSuite/Vendor
265 * @rand_peer: 32-byte RAND_Peer
266 * @rand_server: 32-byte RAND_Server
271 * @msk: Buffer for 64-byte MSK
272 * @emsk: Buffer for 64-byte EMSK
277 * Returns: 0 on success, -1 on failure
279 int eap_gpsk_derive_keys(const u8 *psk, size_t psk_len, int vendor, in eap_gpsk_derive_keys() argument
290 wpa_printf(MSG_DEBUG, "EAP-GPSK: Deriving keys (%d:%d)", in eap_gpsk_derive_keys()
291 vendor, specifier); in eap_gpsk_derive_keys()
293 if (vendor != EAP_GPSK_VENDOR_IETF) in eap_gpsk_derive_keys()
294 return -1; in eap_gpsk_derive_keys()
296 wpa_hexdump_key(MSG_DEBUG, "EAP-GPSK: PSK", psk, psk_len); in eap_gpsk_derive_keys()
301 wpa_printf(MSG_DEBUG, "EAP-GPSK: Failed to allocate memory " in eap_gpsk_derive_keys()
303 return -1; in eap_gpsk_derive_keys()
315 wpa_hexdump(MSG_DEBUG, "EAP-GPSK: Seed", seed, pos - seed); in eap_gpsk_derive_keys()
319 ret = eap_gpsk_derive_keys_aes(psk, psk_len, seed, pos - seed, in eap_gpsk_derive_keys()
326 pos - seed, in eap_gpsk_derive_keys()
331 wpa_printf(MSG_DEBUG, "EAP-GPSK: Unknown cipher %d:%d used in " in eap_gpsk_derive_keys()
332 "key derivation", vendor, specifier); in eap_gpsk_derive_keys()
333 ret = -1; in eap_gpsk_derive_keys()
364 wpa_printf(MSG_DEBUG, "EAP-GPSK: Unknown cipher %d used in " in eap_gpsk_derive_mid_helper()
365 "Session-Id derivation", csuite_specifier); in eap_gpsk_derive_mid_helper()
366 return -1; in eap_gpsk_derive_mid_helper()
369 #define SID_LABEL "Method ID" in eap_gpsk_derive_mid_helper()
370 /* "Method ID" || EAP_Method_Type || CSuite_Sel || inputString */ in eap_gpsk_derive_mid_helper()
374 return -1; in eap_gpsk_derive_mid_helper()
381 WPA_PUT_BE32(pos, EAP_GPSK_VENDOR_IETF); /* CSuite/Vendor = IETF */ in eap_gpsk_derive_mid_helper()
386 wpa_hexdump(MSG_DEBUG, "EAP-GPSK: Data to Method ID derivation", in eap_gpsk_derive_mid_helper()
391 return -1; in eap_gpsk_derive_mid_helper()
394 wpa_hexdump(MSG_DEBUG, "EAP-GPSK: Method ID", kdf_out, kdf_out_len); in eap_gpsk_derive_mid_helper()
401 * eap_gpsk_session_id - Derive EAP-GPSK Session ID
402 * @psk: Pre-shared key
404 * @vendor: CSuite/Vendor
406 * @rand_peer: 32-byte RAND_Peer
407 * @rand_server: 32-byte RAND_Server
413 * @sid: Buffer for 17-byte Session ID
414 * @sid_len: Buffer for returning length of Session ID
415 * Returns: 0 on success, -1 on failure
417 int eap_gpsk_derive_session_id(const u8 *psk, size_t psk_len, int vendor, in eap_gpsk_derive_session_id() argument
428 wpa_printf(MSG_DEBUG, "EAP-GPSK: Deriving Session ID(%d:%d)", in eap_gpsk_derive_session_id()
429 vendor, specifier); in eap_gpsk_derive_session_id()
431 if (vendor != EAP_GPSK_VENDOR_IETF) in eap_gpsk_derive_session_id()
432 return -1; in eap_gpsk_derive_session_id()
434 wpa_hexdump_key(MSG_DEBUG, "EAP-GPSK: PSK", psk, psk_len); in eap_gpsk_derive_session_id()
440 * Method-ID = GKDF-16 (zero, "Method ID" || EAP_Method_Type || in eap_gpsk_derive_session_id()
445 wpa_printf(MSG_DEBUG, "EAP-GPSK: Failed to allocate memory " in eap_gpsk_derive_session_id()
446 "for Session-Id derivation"); in eap_gpsk_derive_session_id()
447 return -1; in eap_gpsk_derive_session_id()
459 wpa_hexdump(MSG_DEBUG, "EAP-GPSK: Seed", seed, pos - seed); in eap_gpsk_derive_session_id()
463 psk, seed, pos - seed, in eap_gpsk_derive_session_id()
477 * eap_gpsk_mic_len - Get the length of the MIC
478 * @vendor: CSuite/Vendor
482 size_t eap_gpsk_mic_len(int vendor, int specifier) in eap_gpsk_mic_len() argument
484 if (vendor != EAP_GPSK_VENDOR_IETF) in eap_gpsk_mic_len()
504 wpa_printf(MSG_DEBUG, "EAP-GPSK: Invalid SK length %lu for " in eap_gpsk_compute_mic_aes()
505 "AES-CMAC MIC", (unsigned long) sk_len); in eap_gpsk_compute_mic_aes()
506 return -1; in eap_gpsk_compute_mic_aes()
514 * eap_gpsk_compute_mic - Compute EAP-GPSK MIC for an EAP packet
517 * @vendor: CSuite/Vendor
522 * Returns: 0 on success, -1 on failure
524 int eap_gpsk_compute_mic(const u8 *sk, size_t sk_len, int vendor, in eap_gpsk_compute_mic() argument
529 if (vendor != EAP_GPSK_VENDOR_IETF) in eap_gpsk_compute_mic()
530 return -1; in eap_gpsk_compute_mic()
542 wpa_printf(MSG_DEBUG, "EAP-GPSK: Unknown cipher %d:%d used in " in eap_gpsk_compute_mic()
543 "MIC computation", vendor, specifier); in eap_gpsk_compute_mic()
544 ret = -1; in eap_gpsk_compute_mic()
549 wpa_printf(MSG_DEBUG, "EAP-GPSK: Could not compute MIC"); in eap_gpsk_compute_mic()