xref: /freebsd-src/contrib/wpa/src/eap_common/eap_ikev2_common.h (revision 39beb93c3f8bdbf72a61fda42300b5ebed7390c8)
1*39beb93cSSam Leffler /*
2*39beb93cSSam Leffler  * EAP-IKEv2 definitions
3*39beb93cSSam Leffler  * Copyright (c) 2007, Jouni Malinen <j@w1.fi>
4*39beb93cSSam Leffler  *
5*39beb93cSSam Leffler  * This program is free software; you can redistribute it and/or modify
6*39beb93cSSam Leffler  * it under the terms of the GNU General Public License version 2 as
7*39beb93cSSam Leffler  * published by the Free Software Foundation.
8*39beb93cSSam Leffler  *
9*39beb93cSSam Leffler  * Alternatively, this software may be distributed under the terms of BSD
10*39beb93cSSam Leffler  * license.
11*39beb93cSSam Leffler  *
12*39beb93cSSam Leffler  * See README and COPYING for more details.
13*39beb93cSSam Leffler  */
14*39beb93cSSam Leffler 
15*39beb93cSSam Leffler #ifndef EAP_IKEV2_COMMON_H
16*39beb93cSSam Leffler #define EAP_IKEV2_COMMON_H
17*39beb93cSSam Leffler 
18*39beb93cSSam Leffler #ifdef CCNS_PL
19*39beb93cSSam Leffler /* incorrect bit order */
20*39beb93cSSam Leffler #define IKEV2_FLAGS_LENGTH_INCLUDED 0x01
21*39beb93cSSam Leffler #define IKEV2_FLAGS_MORE_FRAGMENTS 0x02
22*39beb93cSSam Leffler #define IKEV2_FLAGS_ICV_INCLUDED 0x04
23*39beb93cSSam Leffler #else /* CCNS_PL */
24*39beb93cSSam Leffler #define IKEV2_FLAGS_LENGTH_INCLUDED 0x80
25*39beb93cSSam Leffler #define IKEV2_FLAGS_MORE_FRAGMENTS 0x40
26*39beb93cSSam Leffler #define IKEV2_FLAGS_ICV_INCLUDED 0x20
27*39beb93cSSam Leffler #endif /* CCNS_PL */
28*39beb93cSSam Leffler 
29*39beb93cSSam Leffler #define IKEV2_FRAGMENT_SIZE 1400
30*39beb93cSSam Leffler 
31*39beb93cSSam Leffler struct ikev2_keys;
32*39beb93cSSam Leffler 
33*39beb93cSSam Leffler int eap_ikev2_derive_keymat(int prf, struct ikev2_keys *keys,
34*39beb93cSSam Leffler 			    const u8 *i_nonce, size_t i_nonce_len,
35*39beb93cSSam Leffler 			    const u8 *r_nonce, size_t r_nonce_len,
36*39beb93cSSam Leffler 			    u8 *keymat);
37*39beb93cSSam Leffler struct wpabuf * eap_ikev2_build_frag_ack(u8 id, u8 code);
38*39beb93cSSam Leffler int eap_ikev2_validate_icv(int integ_alg, struct ikev2_keys *keys,
39*39beb93cSSam Leffler 			   int initiator, const struct wpabuf *msg,
40*39beb93cSSam Leffler 			   const u8 *pos, const u8 *end);
41*39beb93cSSam Leffler 
42*39beb93cSSam Leffler #endif /* EAP_IKEV2_COMMON_H */
43