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

connector.h File Reference

#include "common.h"
#include <stdlib.h>
#include <stdio.h>
#include <openssl/rand.h>
#include "session.h"
#include "payload.h"
#include "message.h"
#include "IKEv2.h"
#include "conf_utils.h"
#include "enums.h"
#include "auth.h"

Go to the source code of this file.

Data Structures

struct  EAPHeader
 EAP header structure. More...
struct  IKEv2Data
 IKEv2 data structure. More...

Defines

#define EAP_CODE_REQUEST   1
#define EAP_CODE_RESPONSE   2
#define EAP_CODE_SUCCESS   3
#define EAP_CODE_FAILURE   4
#define EAP_HDF_LENGTHINCLUDED   (1<<0)
#define EAP_HDF_MOREFRAGMENTS   (1<<1)
#define EAP_HDF_INTEGRITYINCLUDED   (1<<2)
#define EAPIKEv2_TYPE   47

Functions

int CertInit (struct ikev2_ctx *i2)
 Cert, private key, crl init.
int IKEv2Init (struct ikev2_ctx *i2)
 Init IKEv2.
void IKEv2Shutdown (void)
 shutdown IKEv2
int GenEapKeys (struct IKEv2Session *s, int len)
 Generate MSK (key which is used to protect communication between user and NAS. Function set proper value of s->eapKeyData.
uint32_t CreateIKEv2Message (const ikev2_ctx *i2, uint8_t *ikemsg, uint32_t imlen, bool response, uint8_t msgid, struct IKEv2Session *session, uint8_t **out)
int ExtractData (const uint8_t *in, uint8_t **data, uint32_t *dlen, uint32_t ilen)
 extract data from a eap message
int ParseIKEv2Message (const uint8_t *in, uint8_t **ikemsg, uint32_t *imlen, struct IKEv2Session *session)
 parse an IKEv2 message
uint32_t CreateResultMessage (bool succ, struct IKEv2Session *session, uint8_t **out)
 Create success and failure messages.
uint16_t CreateFragmentAck (const uint8_t *in, uint8_t **out, struct IKEv2Session *session)
 Create a fragment acknoledge message.
int ParseFragmentAck (const uint8_t *in, struct IKEv2Session *session)
 Parse fragmen acknowledgement message.
IKEv2DataIKEv2Data_new (struct ikev2_ctx *i2, struct IKEv2Session *s)
 Create and init IKEv2Data structure.

Variables

EAPHeader packed
 EAP header structure.


Define Documentation

#define EAP_CODE_FAILURE   4
 

#define EAP_CODE_REQUEST   1
 

#define EAP_CODE_RESPONSE   2
 

#define EAP_CODE_SUCCESS   3
 

#define EAP_HDF_INTEGRITYINCLUDED   (1<<2)
 

#define EAP_HDF_LENGTHINCLUDED   (1<<0)
 

eap header flags

 *   0 1 2 3 4 5 6 7
 *  +-+-+-+-+-+-+-+-+
 *  |L M I 0 0 0 0 0|
 *  +-+-+-+-+-+-+-+-+
 *  

L = Length included M = More fragments I = Integrity Checksum Data included

#define EAP_HDF_MOREFRAGMENTS   (1<<1)
 

#define EAPIKEv2_TYPE   47
 


Function Documentation

int CertInit struct ikev2_ctx i2  ) 
 

Cert, private key, crl init.

Parameters:
*i2 ikev2 context structure
Returns:
0 on success, 1 otherwise

uint16_t CreateFragmentAck const uint8_t *  in,
uint8_t **  out,
struct IKEv2Session session
 

Create a fragment acknoledge message.

Parameters:
*in ptr to received message
**out ptr to outcoming message
*session session data
Returns:
length of the created message, or <=0 on failure
Todo:
check error status on return when called

uint32_t CreateIKEv2Message const ikev2_ctx i2,
uint8_t *  ikemsg,
uint32_t  imlen,
bool  response,
uint8_t  msgid,
struct IKEv2Session session,
uint8_t **  out
 

uint32_t CreateResultMessage bool  succ,
struct IKEv2Session session,
uint8_t **  out
 

Create success and failure messages.

Parameters:
succ true success message, false failure message
session ptr to current session
out ptr to out message
Returns:
length of the message ( EAP_RESULT_MESSAGE_SIZE ), or 0 if fail

int ExtractData const uint8_t *  in,
uint8_t **  data,
uint32_t *  dlen,
uint32_t  ilen
 

extract data from a eap message

Parameters:
in ptr to message
data ptr to data
dlen length of data
ilen integrity field length
Returns:
0 on success, -1 otherwise

int GenEapKeys struct IKEv2Session s,
int  len
 

Generate MSK (key which is used to protect communication between user and NAS. Function set proper value of s->eapKeyData.

Parameters:
*s IKEv2 session data
len key len
Returns:
1 when keys successfully generated, 0 otherwise.

struct IKEv2Data* IKEv2Data_new struct ikev2_ctx i2,
struct IKEv2Session s
 

Create and init IKEv2Data structure.

Parameters:
*i2 IKEv2 context data
*s session data
Returns:
new allocated IKEv2Data structure

int IKEv2Init struct ikev2_ctx i2  ) 
 

Init IKEv2.

Deprecated:
kwz:Czy ta funkcja naprawde jest nam potrzebna ? Chyba nie bardzo

void IKEv2Shutdown void   ) 
 

shutdown IKEv2

Deprecated:

int ParseFragmentAck const uint8_t *  in,
struct IKEv2Session session
 

Parse fragmen acknowledgement message.

Parameters:
*in ptr to message
*session session data
Returns:
0 on success, 1 otherwise

int ParseIKEv2Message const uint8_t *  in,
uint8_t **  ikemsg,
uint32_t *  imlen,
struct IKEv2Session session
 

parse an IKEv2 message

  • checking eap headers, lenght fields, fragmentation and integration
  • setting ikemsg if received full ikev2 message (all fragments), else NULL

Parameters:
*in ptr to message
**ikemsg IKEv2 message
*imlen length of ikemsg
*session session data
Returns:
0 on success, -1 otherwise


Variable Documentation

struct IKEv2CertReqPayload packed
 

EAP header structure.

  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
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |  NextPayload  |C|   RESERVED  |         PayloadLength         |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
 


Project hosted by: SourceForge.net Logo