/** @file
The common definition of IPsec Key Exchange (IKE).
Copyright (c) 2010, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
**/
#ifndef _IKE_H_
#define _IKE_H_
#include <Library/UdpIoLib.h>
#include <Library/BaseCryptLib.h>
#include "IpSecImpl.h"
//
// Protocol Value Use in IKEv1 and IKEv2
//
//
// For Algorithm search in support list.Last two types are for IKEv2 only.
//
#define IKE_ENCRYPT_TYPE 0
//
// Encryption Algorithm present in IKEv1 phasrs2 and IKEv2 transform payload (Transform Type 1)
//
#define IKE_XCG_TYPE_NONE 0
//
// Deafult IKE SA lifetime and CHILD SA lifetime
//
//
// Next payload type presented within Proposal payload
//
#define IKE_PROPOSAL_NEXT_PAYLOAD_NONE 0
//
// Next payload type presented within Transform payload
//
#define IKE_TRANSFORM_NEXT_PAYLOAD_NONE 0
//
// Max size of the SA attribute
//
//
// The definition for Information Message ID.
//
//
// Type for the IKE SESSION COMMON
//
typedef enum {
//
// The DH Group ID defined RFC3526 and RFC 2409
//
typedef enum {
//
// IKE Header
//
#pragma pack(1)
typedef struct {
} IKE_HEADER;
#pragma pack()
typedef union {
//
// SA Attribute present in Transform Payload
//
#pragma pack(1)
typedef struct {
#pragma pack()
//
// Contains the IKE packet information.
//
typedef struct {
} IKE_PACKET;
//
// The generic structure to all kinds of IKE payloads.
//
typedef struct {
} IKE_PAYLOAD;
//
// Udp Service
//
typedef struct {
//
// Each IKE session has its own Key sets for local peer and remote peer.
//
typedef struct {
} SA_KEYMATS;
//
// Each algorithm has its own Id, Guid, BlockSize and KeyLength.
// This struct contains these information for each algorithm. It is generic structure
// for both encryption and authentication algorithm.
// For authentication algorithm, the AlgSize means IcvSize. For encryption algorithm,
// it means IvSize.
//
#pragma pack(1)
typedef struct {
#pragma pack()
//
// Structure used to store the DH group
//
typedef struct {
} MODP_GROUP;
/**
This is prototype definition of general interface to phase the payloads
@param[in] SessionCommon Point to the SessionCommon
@param[in] PayloadBuf Point to the buffer of Payload.
@param[in] PayloadSize The size of the PayloadBuf in bytes.
@param[in] PayloadType The type of Payload.
**/
typedef
);
#endif