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