Provide CRLs received in CERT payloads to trustchain verification

This commit is contained in:
Martin Willi
2011-01-05 16:46:06 +01:00
parent 1a79d76abc
commit 3a89b3c52f
2 changed files with 22 additions and 6 deletions
+13 -5
View File
@@ -206,13 +206,21 @@ METHOD(cert_payload_t, get_cert_encoding, cert_encoding_t,
METHOD(cert_payload_t, get_cert, certificate_t*,
private_cert_payload_t *this)
{
if (this->encoding != ENC_X509_SIGNATURE)
int type;
switch (this->encoding)
{
return NULL;
case ENC_X509_SIGNATURE:
type = CERT_X509;
break;
case ENC_CRL:
type = CERT_X509_CRL;
break;
default:
return NULL;
}
return lib->creds->create(lib->creds, CRED_CERTIFICATE, CERT_X509,
BUILD_BLOB_ASN1_DER, this->data,
BUILD_END);
return lib->creds->create(lib->creds, CRED_CERTIFICATE, type,
BUILD_BLOB_ASN1_DER, this->data, BUILD_END);
}
METHOD(cert_payload_t, get_hash, chunk_t,
+9 -1
View File
@@ -253,11 +253,19 @@ static void process_certs(private_ike_cert_pre_t *this, message_t *message)
}
break;
}
case ENC_CRL:
cert = cert_payload->get_cert(cert_payload);
if (cert)
{
DBG1(DBG_IKE, "received CRL \"%Y\"",
cert->get_subject(cert));
auth->add(auth, AUTH_HELPER_REVOCATION_CERT, cert);
}
break;
case ENC_PKCS7_WRAPPED_X509:
case ENC_PGP:
case ENC_DNS_SIGNED_KEY:
case ENC_KERBEROS_TOKEN:
case ENC_CRL:
case ENC_ARL:
case ENC_SPKI:
case ENC_X509_ATTRIBUTE: