From: Tobias Brunner Date: Tue, 27 Oct 2015 16:28:20 +0000 (+0100) Subject: ikev2: Don't do online revocation checks in pubkey authenticator if requested X-Git-Tag: 5.4.0rc1~10^2~7 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a05cff1ec0c7473bee147a5213de9dd0317cb5ec;p=thirdparty%2Fstrongswan.git ikev2: Don't do online revocation checks in pubkey authenticator if requested We also update the auth config so the constraints are not enforced. --- diff --git a/src/libcharon/sa/ikev2/authenticators/pubkey_authenticator.c b/src/libcharon/sa/ikev2/authenticators/pubkey_authenticator.c index dca80a4d80..04ccd4f4f0 100644 --- a/src/libcharon/sa/ikev2/authenticators/pubkey_authenticator.c +++ b/src/libcharon/sa/ikev2/authenticators/pubkey_authenticator.c @@ -365,6 +365,7 @@ METHOD(authenticator_t, process, status_t, status_t status = NOT_FOUND; keymat_v2_t *keymat; const char *reason = "unsupported"; + bool online; auth_payload = (auth_payload_t*)message->get_payload(message, PLV2_AUTH); if (!auth_payload) @@ -408,8 +409,10 @@ METHOD(authenticator_t, process, status_t, return FAILED; } auth = this->ike_sa->get_auth_cfg(this->ike_sa, FALSE); + online = !this->ike_sa->has_condition(this->ike_sa, + COND_ONLINE_VALIDATION_SUSPENDED); enumerator = lib->credmgr->create_public_enumerator(lib->credmgr, - key_type, id, auth, TRUE); + key_type, id, auth, online); while (enumerator->enumerate(enumerator, &public, ¤t_auth)) { if (public->verify(public, scheme, octets, auth_data)) @@ -421,6 +424,10 @@ METHOD(authenticator_t, process, status_t, auth->merge(auth, current_auth, FALSE); auth->add(auth, AUTH_RULE_AUTH_CLASS, AUTH_CLASS_PUBKEY); auth->add(auth, AUTH_RULE_IKE_SIGNATURE_SCHEME, (uintptr_t)scheme); + if (!online) + { + auth->add(auth, AUTH_RULE_CERT_VALIDATION_SUSPENDED, TRUE); + } break; } else