ikev1: Add an option to accept unencrypted ID/HASH payloads
Even in Main Mode, some Sonicwall boxes seem to send ID/HASH payloads in unencrypted form, probably to allow PSK lookup based on the ID payloads. We by default reject that, but accept it if the charon.accept_unencrypted_mainmode_messages option is set in strongswan.conf. Initial patch courtesy of Paul Stewart.
This commit is contained in:
@@ -1922,6 +1922,24 @@ static status_t decrypt_and_extract(private_message_t *this, keymat_t *keymat,
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
/**
|
||||
* Do we accept unencrypted ID/HASH payloads in Main Mode, as seen from
|
||||
* some SonicWall boxes?
|
||||
*/
|
||||
static bool accept_unencrypted_mm(private_message_t *this, payload_type_t type)
|
||||
{
|
||||
if (this->exchange_type == ID_PROT)
|
||||
{
|
||||
if (type == ID_V1 || type == HASH_V1)
|
||||
{
|
||||
return lib->settings->get_bool(lib->settings,
|
||||
"%s.accept_unencrypted_mainmode_messages",
|
||||
FALSE, lib->ns);
|
||||
}
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/**
|
||||
* Decrypt payload from the encryption payload
|
||||
*/
|
||||
@@ -1978,7 +1996,8 @@ static status_t decrypt_payloads(private_message_t *this, keymat_t *keymat)
|
||||
this->exchange_type != AGGRESSIVE)
|
||||
{
|
||||
rule = get_payload_rule(this, type);
|
||||
if (!rule || rule->encrypted)
|
||||
if ((!rule || rule->encrypted) &&
|
||||
!accept_unencrypted_mm(this, type))
|
||||
{
|
||||
DBG1(DBG_ENC, "payload type %N was not encrypted",
|
||||
payload_type_names, type);
|
||||
|
||||
Reference in New Issue
Block a user