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

message.c File Reference

#include "common.h"
#include <netinet/in.h>
#include <string.h>
#include <assert.h>
#include "message.h"
#include "payload.h"
#include "session.h"
#include "integ.h"
#include "auth.h"
#include "dh.h"
#include "enums.h"

Functions

uint16_t GenerateErrorData (uint8_t **data, uint16_t *dlen, struct ParseMsgResult *res)
 Get an error and generate correspondig error data.
void MergeParseMsgResults (struct ParseMsgResult *result, struct ParseMsgResult *result2)
 Merges two ParseMsgResult structs.
void FreeCertList (struct CertList *l)
ParseMsgResultParseMsg (const struct ikev2_ctx *i2, struct IKEv2Session *session, uint8_t *p)
 Parses a message and returns result.
ProposalCloneProposal (struct Proposal *prop, struct Proposal *ref)
 Clone proposal prop with first transform of each type, which is also in ref.
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 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 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 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.
void FreeMsgResult (struct ParseMsgResult *res)
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.

Function Documentation

struct Proposal * CloneProposal struct Proposal prop,
struct Proposal ref
 

Clone proposal prop with first transform of each type, which is also in ref.

Parameters:
*prop source
*ref reference
Returns:
result proposal

void FreeCertList struct CertList l  ) 
 

void FreeMsgResult struct ParseMsgResult res  ) 
 

uint16_t GenerateErrorData uint8_t **  data,
uint16_t *  dlen,
struct ParseMsgResult res
 

Get an error and generate correspondig error data.

Parameters:
**data ptr to error data
*dlen length of data
*res result struct from parse msg
Returns:
type of error

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

void MergeParseMsgResults struct ParseMsgResult result,
struct ParseMsgResult result2
 

Merges two ParseMsgResult structs.

   if( result2.x )
     result.x = result2.x  

Parameters:
*result first ParseMsgResult struct to merge and result
*result2 second ParseMsgResult struct to merge

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 * ParseMsg const struct ikev2_ctx i2,
struct IKEv2Session session,
uint8_t *  p
 

Parses a 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


Project hosted by: SourceForge.net Logo