diff options
Diffstat (limited to 'src/charon/credentials/sets/cert_cache.c')
-rw-r--r-- | src/charon/credentials/sets/cert_cache.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/charon/credentials/sets/cert_cache.c b/src/charon/credentials/sets/cert_cache.c index 5c112c084..a300387bf 100644 --- a/src/charon/credentials/sets/cert_cache.c +++ b/src/charon/credentials/sets/cert_cache.c @@ -132,6 +132,17 @@ static bool certs_filter(cert_data_t *data, relation_t **in, certificate_t **out certificate_t *cert; cert = (*in)->subject; + if (data->key == KEY_ANY && data->id && + (data->cert == CERT_ANY || data->cert == CERT_X509_CRL) && + cert->get_type(cert) == CERT_X509_CRL) + { /* CRL lookup is done using issuer/authkeyidentifier */ + if (cert->has_issuer(cert, data->id)) + { + *out = cert; + return TRUE; + } + } + if ((data->cert == CERT_ANY || cert->get_type(cert) == data->cert) && (!data->id || cert->has_subject(cert, data->id))) { |