18d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt/*
28d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * EAP-IKEv2 definitions
38d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * Copyright (c) 2007, Jouni Malinen <j@w1.fi>
48d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt *
5c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidt * This software may be distributed under the terms of the BSD license.
6c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidt * See README for more details.
78d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt */
88d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
98d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#ifndef EAP_IKEV2_COMMON_H
108d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#define EAP_IKEV2_COMMON_H
118d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
128d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#ifdef CCNS_PL
138d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt/* incorrect bit order */
148d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#define IKEV2_FLAGS_LENGTH_INCLUDED 0x01
158d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#define IKEV2_FLAGS_MORE_FRAGMENTS 0x02
168d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#define IKEV2_FLAGS_ICV_INCLUDED 0x04
178d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#else /* CCNS_PL */
188d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#define IKEV2_FLAGS_LENGTH_INCLUDED 0x80
198d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#define IKEV2_FLAGS_MORE_FRAGMENTS 0x40
208d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#define IKEV2_FLAGS_ICV_INCLUDED 0x20
218d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#endif /* CCNS_PL */
228d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
238d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#define IKEV2_FRAGMENT_SIZE 1400
248d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
258d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstruct ikev2_keys;
268d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
278d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtint eap_ikev2_derive_keymat(int prf, struct ikev2_keys *keys,
288d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt			    const u8 *i_nonce, size_t i_nonce_len,
298d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt			    const u8 *r_nonce, size_t r_nonce_len,
308d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt			    u8 *keymat);
318d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstruct wpabuf * eap_ikev2_build_frag_ack(u8 id, u8 code);
328d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtint eap_ikev2_validate_icv(int integ_alg, struct ikev2_keys *keys,
338d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt			   int initiator, const struct wpabuf *msg,
348d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt			   const u8 *pos, const u8 *end);
358d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
368d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#endif /* EAP_IKEV2_COMMON_H */
37