Encrypt INFORMATIONAL exchange if needed
This commit is contained in:
@@ -1459,24 +1459,35 @@ METHOD(message_t, generate, status_t,
|
|||||||
hash_payload->set_hash(hash_payload, hash);
|
hash_payload->set_hash(hash_payload, hash);
|
||||||
this->payloads->insert_first(this->payloads,
|
this->payloads->insert_first(this->payloads,
|
||||||
(payload_t*)hash_payload);
|
(payload_t*)hash_payload);
|
||||||
|
|
||||||
|
if (this->exchange_type == INFORMATIONAL_V1)
|
||||||
|
{
|
||||||
|
DBG3(DBG_ENC, "encrypting IKEv1 INFORMATIONAL exchange message");
|
||||||
|
this->is_encrypted = TRUE;
|
||||||
|
encrypted = TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
chunk_free(&hash);
|
chunk_free(&hash);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* if at least one payload requires encryption, encrypt the message.
|
if (!encrypted)
|
||||||
* if we have no key material available, the flag will be reset below */
|
|
||||||
enumerator = this->payloads->create_enumerator(this->payloads);
|
|
||||||
while (enumerator->enumerate(enumerator, (void**)&payload))
|
|
||||||
{
|
{
|
||||||
payload_rule_t *rule;
|
/* if at least one payload requires encryption, encrypt the message.
|
||||||
rule = get_payload_rule(this, payload->get_type(payload));
|
* if we have no key material available, the flag will be reset below */
|
||||||
if (rule && rule->encrypted)
|
enumerator = this->payloads->create_enumerator(this->payloads);
|
||||||
|
while (enumerator->enumerate(enumerator, (void**)&payload))
|
||||||
{
|
{
|
||||||
this->is_encrypted = TRUE;
|
payload_rule_t *rule;
|
||||||
encrypted = TRUE;
|
rule = get_payload_rule(this, payload->get_type(payload));
|
||||||
break;
|
if (rule && rule->encrypted)
|
||||||
|
{
|
||||||
|
this->is_encrypted = TRUE;
|
||||||
|
encrypted = TRUE;
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
enumerator->destroy(enumerator);
|
||||||
}
|
}
|
||||||
enumerator->destroy(enumerator);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
DBG1(DBG_ENC, "generating %s", get_string(this, str, sizeof(str)));
|
DBG1(DBG_ENC, "generating %s", get_string(this, str, sizeof(str)));
|
||||||
|
|||||||
Reference in New Issue
Block a user