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*, METHOD(cert_payload_t, get_cert, certificate_t*,
private_cert_payload_t *this) 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, return lib->creds->create(lib->creds, CRED_CERTIFICATE, type,
BUILD_BLOB_ASN1_DER, this->data, BUILD_BLOB_ASN1_DER, this->data, BUILD_END);
BUILD_END);
} }
METHOD(cert_payload_t, get_hash, chunk_t, 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; 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_PKCS7_WRAPPED_X509:
case ENC_PGP: case ENC_PGP:
case ENC_DNS_SIGNED_KEY: case ENC_DNS_SIGNED_KEY:
case ENC_KERBEROS_TOKEN: case ENC_KERBEROS_TOKEN:
case ENC_CRL:
case ENC_ARL: case ENC_ARL:
case ENC_SPKI: case ENC_SPKI:
case ENC_X509_ATTRIBUTE: case ENC_X509_ATTRIBUTE: