Main Page | Data Structures | File List | Data Fields | Globals | Related Pages

message.h File Reference

#include "common.h"
#include "session.h"

Go to the source code of this file.

Data Structures

struct  CertList
 Structure for storing certifacate list in raw format. More...
struct  ParseMsgResult
 Result structure for ParseMsg function. More...
struct  IKEv2Header
 Structure which represent IKEv2 header. The format of the IKE header (see IKEv2 Protocol):. More...

Defines

#define IKEv2_MAJOR_VERSION   2
#define IKEv2_MINOR_VERSION   0
#define NONCE_LEN   128
#define TB_SIZE   4092
#define IKEv2_EXT_IKE_SA_INIT   34
#define IKEv2_EXT_IKE_AUTH   35
#define IKEv2_EXT_CREATE_CHILD_SA   36
#define IKEv2_EXT_INFORMATIONAL   37
#define IKEv2_HDF_INITIATOR   (1<<3)
#define IKEv2_HDF_VERSION   (1<<4)
#define IKEv2_HDF_RESPONSE   (1<<5)

Functions

int IKEv2IBuild_SA_Init (const struct ikev2_ctx *i2, uint8_t **out, uint32_t *olen, struct IKEv2Session *session, uint16_t DHGroup)
 Create an IKEv2 SA_INIT msg for initiator.
int IKEv2RBuild_SA_Init (const struct ikev2_ctx *i2, uint8_t *oldMsg, uint8_t **out, uint32_t *olen, struct Proposal *selTrans, struct IKEv2Session *session, BIGNUM *pubk)
 Create an IKEv2 SA_INIT msg for responder.
int IKEv2IBuild_Auth (const struct ikev2_ctx *i2, uint8_t **out, uint32_t *olen, struct IKEv2Session *session)
 Create an IKEv2 AUTH msg for initiator.
int IKEv2RBuild_Auth (const struct ikev2_ctx *i2, uint8_t **out, uint32_t *olen, uint8_t *in, struct IKEv2Session *session)
 Create an IKEv2 AUTH msg for responder.
int IKEv2Build_Informational (uint8_t **out, uint32_t *olen, struct IKEv2Session *session, uint8_t first, uint8_t *payloads, uint32_t plsize)
 Create an IKEv2 informational message.
int IKEv2RespondInformational (uint8_t **out, uint32_t *olen, uint8_t *inf)
 Create a response to a IKEv2 informational message.
int IKEv2BuildErrorMsg (uint8_t **out, uint32_t *olen, struct IKEv2Session *session, struct ParseMsgResult *res)
 Build IKEv2 message with error notification.
int IKEv2BuildErrorResponseMsg (uint8_t **out, uint32_t *olen, uint8_t *in, struct ParseMsgResult *res, struct IKEv2Session *session, int enc)
 Build a response to a msg containing an error notification.
int IKEv2ICreateChildSA (const struct ikev2_ctx *i2, uint8_t **out, uint32_t *olen, struct IKEv2Session *session, int DHGroup)
 Create an IKEv2 CREATE_CHILD_SA initiator message for rekeying.
int IKEv2RCreateChildSA (uint8_t *oldMsg, uint8_t **out, uint32_t *olen, struct IKEv2Session *session, struct Proposal *selTrans, int DHGroup)
 Create an IKEv2 CREATE_CHILD_SA responder message for rekeying.
ParseMsgResultParseSAInitMsg (const struct ikev2_ctx *i2, struct IKEv2Session *session, uint8_t *p)
 Parses a SA_INIT message and returns result.
ParseMsgResultParseAuthMsg (const struct ikev2_ctx *i2, struct IKEv2Session *session, uint8_t *p)
 Parses a AUTH message and returns result.
ParseMsgResultParseInformationalMsg (const struct ikev2_ctx *i2, struct IKEv2Session *session, uint8_t *p)
 Parses an informational message and returns result.
ParseMsgResultParseChildSAMsg (const struct ikev2_ctx *i2, struct IKEv2Session *session, uint8_t *p)
 Parses a CREATE_CHILD_SA message for rekeying and returns result.
void FreeMsgResult (struct ParseMsgResult *res)

Variables

IKEv2Header packed
 Structure which represent IKEv2 header. The format of the IKE header (see IKEv2 Protocol):.


Define Documentation

#define IKEv2_EXT_CREATE_CHILD_SA   36
 

#define IKEv2_EXT_IKE_AUTH   35
 

#define IKEv2_EXT_IKE_SA_INIT   34
 

#define IKEv2_EXT_INFORMATIONAL   37
 

#define IKEv2_HDF_INITIATOR   (1<<3)
 

#define IKEv2_HDF_RESPONSE   (1<<5)
 

#define IKEv2_HDF_VERSION   (1<<4)
 

#define IKEv2_MAJOR_VERSION   2
 

#define IKEv2_MINOR_VERSION   0
 

#define NONCE_LEN   128
 

#define TB_SIZE   4092
 


Function Documentation

void FreeMsgResult struct ParseMsgResult res  ) 
 

int IKEv2Build_Informational uint8_t **  out,
uint32_t *  olen,
struct IKEv2Session session,
uint8_t  first,
uint8_t *  payloads,
uint32_t  plsize
 

Create an IKEv2 informational message.

Parameters:
**out ptr to a char* variable, which will be filled with the buffer start address
*olen out data len
*session current IKEv2 session
first type of first payload
*payloads ptr to payloads for informational exchange
plsize size of payloads
Returns:
0 on success

int IKEv2BuildErrorMsg uint8_t **  out,
uint32_t *  olen,
struct IKEv2Session session,
struct ParseMsgResult res
 

Build IKEv2 message with error notification.

Parameters:
**out ptr to a char* variable, which will be filled with the buffer start address
*olen out data len
*session current IKEv2 session
*res result struct from parse msg
Returns:
0 on success

int IKEv2BuildErrorResponseMsg uint8_t **  out,
uint32_t *  olen,
uint8_t *  in,
struct ParseMsgResult res,
struct IKEv2Session session,
int  enc
 

Build a response to a msg containing an error notification.

Parameters:
**out ptr to a char* variable, which will be filled with the buffer start address
*olen out data len
*in msg to respond
*res result struct for parsing 'in'
*session current IKEv2 session
enc encrypt?
Returns:
0 on success

int IKEv2IBuild_Auth const struct ikev2_ctx i2,
uint8_t **  out,
uint32_t *  olen,
struct IKEv2Session session
 

Create an IKEv2 AUTH msg for initiator.

Parameters:
*i2 IKEv2 context data
**out ptr to a char* variable, which will be filled with the buffer start address
*olen out data len
*session current IKEv2 session
Returns:
0 on success

int IKEv2IBuild_SA_Init const struct ikev2_ctx i2,
uint8_t **  out,
uint32_t *  olen,
struct IKEv2Session session,
uint16_t  DHGroup
 

Create an IKEv2 SA_INIT msg for initiator.

Parameters:
*i2 IKEv2 context data
**out result message
*olen result length
*session current IKEv2 session data
DHGroup DH group identifier
Returns:
0 on success

int IKEv2ICreateChildSA const struct ikev2_ctx i2,
uint8_t **  out,
uint32_t *  olen,
struct IKEv2Session session,
int  DHGroup
 

Create an IKEv2 CREATE_CHILD_SA initiator message for rekeying.

Parameters:
*i2 IKEv2 context data
**out ptr to a char* variable, which will be filled with the buffer start address
*olen out data len
*session current IKEv2 session
DHGroup which DH group should we use for dh exchange?
Returns:
0 in success

int IKEv2RBuild_Auth const struct ikev2_ctx i2,
uint8_t **  out,
uint32_t *  olen,
uint8_t *  in,
struct IKEv2Session session
 

Create an IKEv2 AUTH msg for responder.

Parameters:
*i2 IKEv2 context data
**out ptr to a char* variable, which will be filled with the buffer start address
*olen out data len
*in msg to respond
*session current IKEv2 session
Returns:
0 on success

int IKEv2RBuild_SA_Init const struct ikev2_ctx i2,
uint8_t *  oldMsg,
uint8_t **  out,
uint32_t *  olen,
struct Proposal selTrans,
struct IKEv2Session session,
BIGNUM *  pubk
 

Create an IKEv2 SA_INIT msg for responder.

Parameters:
*i2 IKEv2 context data
*oldMsg received message, for which a respond should be created
**out result message
*olen result length
*selTrans selected transforms
*session current IKEv2 session
*pubk DH public key
Returns:
0 on success

int IKEv2RCreateChildSA uint8_t *  oldMsg,
uint8_t **  out,
uint32_t *  olen,
struct IKEv2Session session,
struct Proposal selTrans,
int  DHGroup
 

Create an IKEv2 CREATE_CHILD_SA responder message for rekeying.

Parameters:
*oldMsg ??ptr to the old IKEv2 message
**out ptr to a char* variable, which will be filled with the buffer start address
*olen out data len
*session current IKEv2 session
*selTrans selected transforms
DHGroup which DH group should we use for dh exchange?
Returns:
0 on success

int IKEv2RespondInformational uint8_t **  out,
uint32_t *  olen,
uint8_t *  inf
 

Create a response to a IKEv2 informational message.

Parameters:
**out ptr to a char* variable, which will be filled with the buffer start address
*olen out data len
*inf received informational message
Returns:
0 in success

struct ParseMsgResult* ParseAuthMsg const struct ikev2_ctx i2,
struct IKEv2Session session,
uint8_t *  p
 

Parses a AUTH message and returns result.

Parameters:
*i2 IKEv2 context data
*session current IKEv2 session
*p ptr to message
Returns:
filled ParseMsgResult structure or NULL on error

struct ParseMsgResult* ParseChildSAMsg const struct ikev2_ctx i2,
struct IKEv2Session session,
uint8_t *  p
 

Parses a CREATE_CHILD_SA message for rekeying and returns result.

Parameters:
*i2 IKEv2 context data
*session current IKEv2 session
*p ptr to message
Returns:
filled ParseMsgResult structure or NULL on error

struct ParseMsgResult* ParseInformationalMsg const struct ikev2_ctx i2,
struct IKEv2Session session,
uint8_t *  p
 

Parses an informational message and returns result.

Parameters:
*i2 IKEv2 context data
*session current IKEv2 session
*p ptr to message
Returns:
filled ParseMsgResult structure or NULL on error

struct ParseMsgResult* ParseSAInitMsg const struct ikev2_ctx i2,
struct IKEv2Session session,
uint8_t *  p
 

Parses a SA_INIT message and returns result.

Parameters:
*i2 IKEv2 context data
*session current IKEv2 session
*p ptr to message
Returns:
filled ParseMsgResult structure or NULL on error


Variable Documentation

struct IKEv2Header packed
 

Structure which represent IKEv2 header. The format of the IKE header (see IKEv2 Protocol):.

  0                   1                   2                   3
  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                       InitiatorSPI                            |
 |                                                               |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                       ResponderSPI                            |
 |                                                               |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |  NextPayload  | MjVer | MnVer |  ExchangeType |    Flags      |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                         MessageID                             |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                          Length                               |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 


Project hosted by: SourceForge.net Logo