Parse CRL extensions in a switch statement
This commit is contained in:
@@ -258,35 +258,41 @@ static bool parse(private_x509_crl_t *this)
|
|||||||
break;
|
break;
|
||||||
case CRL_OBJ_CRL_ENTRY_EXTN_VALUE:
|
case CRL_OBJ_CRL_ENTRY_EXTN_VALUE:
|
||||||
case CRL_OBJ_EXTN_VALUE:
|
case CRL_OBJ_EXTN_VALUE:
|
||||||
{
|
{
|
||||||
int extn_oid = asn1_known_oid(extnID);
|
int extn_oid = asn1_known_oid(extnID);
|
||||||
|
|
||||||
if (revoked && extn_oid == OID_CRL_REASON_CODE)
|
switch (extn_oid)
|
||||||
{
|
{
|
||||||
if (*object.ptr == ASN1_ENUMERATED &&
|
case OID_CRL_REASON_CODE:
|
||||||
asn1_length(&object) == 1)
|
if (revoked)
|
||||||
{
|
{
|
||||||
revoked->reason = *object.ptr;
|
if (object.len && *object.ptr == ASN1_ENUMERATED &&
|
||||||
|
asn1_length(&object) == 1)
|
||||||
|
{
|
||||||
|
revoked->reason = *object.ptr;
|
||||||
|
}
|
||||||
|
DBG2(DBG_LIB, " '%N'", crl_reason_names,
|
||||||
|
revoked->reason);
|
||||||
}
|
}
|
||||||
DBG2(DBG_LIB, " '%N'", crl_reason_names,
|
break;
|
||||||
revoked->reason);
|
case OID_AUTHORITY_KEY_ID:
|
||||||
}
|
this->authKeyIdentifier =
|
||||||
else if (extn_oid == OID_AUTHORITY_KEY_ID)
|
x509_parse_authorityKeyIdentifier(
|
||||||
{
|
object, level, &this->authKeySerialNumber);
|
||||||
this->authKeyIdentifier = x509_parse_authorityKeyIdentifier(object,
|
break;
|
||||||
level, &this->authKeySerialNumber);
|
case OID_CRL_NUMBER:
|
||||||
}
|
|
||||||
else if (extn_oid == OID_CRL_NUMBER)
|
|
||||||
{
|
|
||||||
if (!asn1_parse_simple_object(&object, ASN1_INTEGER,
|
if (!asn1_parse_simple_object(&object, ASN1_INTEGER,
|
||||||
level, "crlNumber"))
|
level, "crlNumber"))
|
||||||
{
|
{
|
||||||
goto end;
|
goto end;
|
||||||
}
|
}
|
||||||
this->crlNumber = object;
|
this->crlNumber = object;
|
||||||
}
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
case CRL_OBJ_ALGORITHM:
|
case CRL_OBJ_ALGORITHM:
|
||||||
{
|
{
|
||||||
this->algorithm = asn1_parse_algorithmIdentifier(object, level, NULL);
|
this->algorithm = asn1_parse_algorithmIdentifier(object, level, NULL);
|
||||||
|
|||||||
Reference in New Issue
Block a user