Extended nonce payload for IKEv1 support
This commit is contained in:
parent
717333da98
commit
bcfb0f4096
|
@ -57,6 +57,11 @@ struct private_nonce_payload_t {
|
|||
* The contained nonce value.
|
||||
*/
|
||||
chunk_t nonce;
|
||||
|
||||
/**
|
||||
* Payload type, NONCE or NONCE_V1
|
||||
*/
|
||||
payload_type_t type;
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -115,7 +120,7 @@ METHOD(payload_t, get_encoding_rules, void,
|
|||
METHOD(payload_t, get_type, payload_type_t,
|
||||
private_nonce_payload_t *this)
|
||||
{
|
||||
return NONCE;
|
||||
return this->type;
|
||||
}
|
||||
|
||||
METHOD(payload_t, get_next_type, payload_type_t,
|
||||
|
@ -159,7 +164,7 @@ METHOD2(payload_t, nonce_payload_t, destroy, void,
|
|||
/*
|
||||
* Described in header
|
||||
*/
|
||||
nonce_payload_t *nonce_payload_create()
|
||||
nonce_payload_t *nonce_payload_create(payload_type_t type)
|
||||
{
|
||||
private_nonce_payload_t *this;
|
||||
|
||||
|
@ -180,6 +185,7 @@ nonce_payload_t *nonce_payload_create()
|
|||
},
|
||||
.next_payload = NO_PAYLOAD,
|
||||
.payload_length = NONCE_PAYLOAD_HEADER_LENGTH,
|
||||
.type = type,
|
||||
);
|
||||
return &this->public;
|
||||
}
|
||||
|
|
|
@ -38,9 +38,7 @@ typedef struct nonce_payload_t nonce_payload_t;
|
|||
#define NONCE_PAYLOAD_HEADER_LENGTH 4
|
||||
|
||||
/**
|
||||
* Object representing an IKEv2 Nonce payload.
|
||||
*
|
||||
* The Nonce payload format is described in RFC section 3.3.
|
||||
* Object representing an IKEv1/IKEv2 Nonce payload.
|
||||
*/
|
||||
struct nonce_payload_t {
|
||||
/**
|
||||
|
@ -71,8 +69,9 @@ struct nonce_payload_t {
|
|||
/**
|
||||
* Creates an empty nonce_payload_t object
|
||||
*
|
||||
* @return nonce_payload_t object
|
||||
* @param type NONCE or NONCE_V1
|
||||
* @return nonce_payload_t object
|
||||
*/
|
||||
nonce_payload_t *nonce_payload_create(void);
|
||||
nonce_payload_t *nonce_payload_create(payload_type_t type);
|
||||
|
||||
#endif /** NONCE_PAYLOAD_H_ @}*/
|
||||
|
|
|
@ -180,7 +180,8 @@ payload_t *payload_create(payload_type_t type)
|
|||
case TRANSFORM_ATTRIBUTE_V1:
|
||||
return (payload_t*)transform_attribute_create(type);
|
||||
case NONCE:
|
||||
return (payload_t*)nonce_payload_create();
|
||||
case NONCE_V1:
|
||||
return (payload_t*)nonce_payload_create(type);
|
||||
case ID_INITIATOR:
|
||||
case ID_RESPONDER:
|
||||
#ifdef ME
|
||||
|
|
|
@ -539,7 +539,7 @@ static void build_payloads(private_child_create_t *this, message_t *message)
|
|||
/* add nonce payload if not in IKE_AUTH */
|
||||
if (message->get_exchange_type(message) == CREATE_CHILD_SA)
|
||||
{
|
||||
nonce_payload = nonce_payload_create();
|
||||
nonce_payload = nonce_payload_create(NONCE);
|
||||
nonce_payload->set_nonce(nonce_payload, this->my_nonce);
|
||||
message->add_payload(message, (payload_t*)nonce_payload);
|
||||
}
|
||||
|
|
|
@ -148,7 +148,7 @@ static void build_payloads(private_ike_init_t *this, message_t *message)
|
|||
}
|
||||
message->add_payload(message, (payload_t*)sa_payload);
|
||||
|
||||
nonce_payload = nonce_payload_create();
|
||||
nonce_payload = nonce_payload_create(NONCE);
|
||||
nonce_payload->set_nonce(nonce_payload, this->my_nonce);
|
||||
ke_payload = ke_payload_create_from_diffie_hellman(this->dh);
|
||||
|
||||
|
|
Loading…
Reference in New Issue