Extracting SubjectKeyId and AuthorityKeyId in case of x509 V3 extensions. Updating mbedtls_x509_crt_free function to also free the new dynamic elements (issuer field of AuthorityKeyId).
A few tests are also added which test the feature with a correct certificate and multiple ones with erroneous ASN1 tags. Signed-off-by: toth92g <toth92g@gmail.com>
This commit is contained in:
parent
56f59d749c
commit
a41954d0cf
14 changed files with 437 additions and 2 deletions
|
@ -243,6 +243,17 @@ typedef mbedtls_asn1_named_data mbedtls_x509_name;
|
||||||
*/
|
*/
|
||||||
typedef mbedtls_asn1_sequence mbedtls_x509_sequence;
|
typedef mbedtls_asn1_sequence mbedtls_x509_sequence;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Container for the fields of the Authority Key Identifier object
|
||||||
|
*/
|
||||||
|
typedef struct mbedtls_x509_authority {
|
||||||
|
mbedtls_x509_buf keyIdentifier;
|
||||||
|
mbedtls_x509_name authorityCertIssuer;
|
||||||
|
mbedtls_x509_buf authorityCertSerialNumber;
|
||||||
|
mbedtls_x509_buf raw;
|
||||||
|
}
|
||||||
|
mbedtls_x509_authority;
|
||||||
|
|
||||||
/** Container for date and time (precision in seconds). */
|
/** Container for date and time (precision in seconds). */
|
||||||
typedef struct mbedtls_x509_time {
|
typedef struct mbedtls_x509_time {
|
||||||
int year, mon, day; /**< Date. */
|
int year, mon, day; /**< Date. */
|
||||||
|
|
|
@ -76,6 +76,8 @@ typedef struct mbedtls_x509_crt {
|
||||||
mbedtls_x509_buf subject_id; /**< Optional X.509 v2/v3 subject unique identifier. */
|
mbedtls_x509_buf subject_id; /**< Optional X.509 v2/v3 subject unique identifier. */
|
||||||
mbedtls_x509_buf v3_ext; /**< Optional X.509 v3 extensions. */
|
mbedtls_x509_buf v3_ext; /**< Optional X.509 v3 extensions. */
|
||||||
mbedtls_x509_sequence subject_alt_names; /**< Optional list of raw entries of Subject Alternative Names extension (currently only dNSName, uniformResourceIdentifier, DirectoryName and OtherName are listed). */
|
mbedtls_x509_sequence subject_alt_names; /**< Optional list of raw entries of Subject Alternative Names extension (currently only dNSName, uniformResourceIdentifier, DirectoryName and OtherName are listed). */
|
||||||
|
mbedtls_x509_buf subject_key_id; /**< Optional X.509 v3 extension subject key identifier. */
|
||||||
|
mbedtls_x509_authority authority_key_id; /**< Optional X.509 v3 extension authority key identifier. */
|
||||||
|
|
||||||
mbedtls_x509_sequence certificate_policies; /**< Optional list of certificate policies (Only anyPolicy is printed and enforced, however the rest of the policies are still listed). */
|
mbedtls_x509_sequence certificate_policies; /**< Optional list of certificate policies (Only anyPolicy is printed and enforced, however the rest of the policies are still listed). */
|
||||||
|
|
||||||
|
|
|
@ -319,7 +319,17 @@ static const oid_x509_ext_t oid_x509_ext[] =
|
||||||
MBEDTLS_OID_X509_EXT_CERTIFICATE_POLICIES,
|
MBEDTLS_OID_X509_EXT_CERTIFICATE_POLICIES,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
NULL_OID_DESCRIPTOR,
|
{ ADD_LEN(MBEDTLS_OID_SUBJECT_KEY_IDENTIFIER), "id-ce-subjectKeyIdentifier",
|
||||||
|
"Subject Key Identifier" },
|
||||||
|
MBEDTLS_OID_X509_EXT_SUBJECT_KEY_IDENTIFIER,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
{ ADD_LEN(MBEDTLS_OID_AUTHORITY_KEY_IDENTIFIER), "id-ce-authorityKeyIdentifier",
|
||||||
|
"Authority Key Identifier" },
|
||||||
|
MBEDTLS_OID_X509_EXT_AUTHORITY_KEY_IDENTIFIER,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
{ NULL, 0, NULL, NULL },
|
||||||
0,
|
0,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
|
@ -586,6 +586,227 @@ static int x509_get_ext_key_usage(unsigned char **p,
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* SubjectKeyIdentifier ::= KeyIdentifier
|
||||||
|
*
|
||||||
|
* KeyIdentifier ::= OCTET STRING
|
||||||
|
*/
|
||||||
|
static int x509_get_subject_key_id(unsigned char **p,
|
||||||
|
const unsigned char *end,
|
||||||
|
mbedtls_x509_buf *subject_key_id)
|
||||||
|
{
|
||||||
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
|
size_t len = 0u;
|
||||||
|
|
||||||
|
if ((ret = mbedtls_asn1_get_tag(p, end, &len,
|
||||||
|
MBEDTLS_ASN1_OCTET_STRING)) != 0) {
|
||||||
|
return ret;
|
||||||
|
} else {
|
||||||
|
subject_key_id->len = len;
|
||||||
|
subject_key_id->tag = MBEDTLS_ASN1_OCTET_STRING;
|
||||||
|
subject_key_id->p = *p;
|
||||||
|
*p += len;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* AuthorityKeyIdentifier ::= SEQUENCE {
|
||||||
|
* keyIdentifier [0] KeyIdentifier OPTIONAL,
|
||||||
|
* authorityCertIssuer [1] GeneralNames OPTIONAL,
|
||||||
|
* authorityCertSerialNumber [2] CertificateSerialNumber OPTIONAL }
|
||||||
|
*
|
||||||
|
* KeyIdentifier ::= OCTET STRING
|
||||||
|
*/
|
||||||
|
static int x509_get_authority_key_id(unsigned char **p,
|
||||||
|
unsigned char *end,
|
||||||
|
mbedtls_x509_authority *authority_key_id)
|
||||||
|
{
|
||||||
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
|
size_t len = 0u;
|
||||||
|
|
||||||
|
if ((ret = mbedtls_asn1_get_tag(p, end, &len,
|
||||||
|
MBEDTLS_ASN1_CONSTRUCTED | MBEDTLS_ASN1_SEQUENCE)) != 0) {
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((ret = mbedtls_asn1_get_tag(p, end, &len,
|
||||||
|
MBEDTLS_ASN1_CONTEXT_SPECIFIC)) != 0) {
|
||||||
|
/* KeyIdentifier is an OPTIONAL field */
|
||||||
|
} else {
|
||||||
|
authority_key_id->keyIdentifier.len = len;
|
||||||
|
authority_key_id->keyIdentifier.p = *p;
|
||||||
|
authority_key_id->keyIdentifier.tag = MBEDTLS_ASN1_OCTET_STRING;
|
||||||
|
|
||||||
|
*p += len;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (*p < end) {
|
||||||
|
if ((ret = mbedtls_asn1_get_tag(p, end, &len,
|
||||||
|
MBEDTLS_ASN1_CONTEXT_SPECIFIC | MBEDTLS_ASN1_CONSTRUCTED |
|
||||||
|
MBEDTLS_ASN1_BOOLEAN)) != 0) {
|
||||||
|
/* authorityCertIssuer is an OPTIONAL field */
|
||||||
|
} else {
|
||||||
|
if ((ret = mbedtls_asn1_get_tag(p, end, &len,
|
||||||
|
MBEDTLS_ASN1_CONTEXT_SPECIFIC |
|
||||||
|
MBEDTLS_ASN1_CONSTRUCTED |
|
||||||
|
MBEDTLS_ASN1_OCTET_STRING)) != 0) {
|
||||||
|
return ret;
|
||||||
|
} else {
|
||||||
|
authority_key_id->raw.p = *p;
|
||||||
|
|
||||||
|
if ((ret = mbedtls_asn1_get_tag(p, end, &len,
|
||||||
|
MBEDTLS_ASN1_CONSTRUCTED |
|
||||||
|
MBEDTLS_ASN1_SEQUENCE)) != 0) {
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((ret =
|
||||||
|
mbedtls_x509_get_name(p, *p + len,
|
||||||
|
&authority_key_id->authorityCertIssuer)) != 0) {
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
authority_key_id->raw.len = *p - authority_key_id->raw.p;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (*p < end) {
|
||||||
|
if ((ret = mbedtls_asn1_get_tag(p, end, &len,
|
||||||
|
MBEDTLS_ASN1_CONTEXT_SPECIFIC | MBEDTLS_ASN1_INTEGER)) !=
|
||||||
|
0) {
|
||||||
|
/* authorityCertSerialNumber is an OPTIONAL field, but if there are still data it must be the serial number */
|
||||||
|
return ret;
|
||||||
|
} else {
|
||||||
|
authority_key_id->authorityCertSerialNumber.len = len;
|
||||||
|
authority_key_id->authorityCertSerialNumber.p = *p;
|
||||||
|
authority_key_id->authorityCertSerialNumber.tag = MBEDTLS_ASN1_OCTET_STRING;
|
||||||
|
*p += len;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (*p != end) {
|
||||||
|
return MBEDTLS_ERR_X509_INVALID_EXTENSIONS +
|
||||||
|
MBEDTLS_ERR_ASN1_LENGTH_MISMATCH;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* SubjectAltName ::= GeneralNames
|
||||||
|
*
|
||||||
|
* GeneralNames ::= SEQUENCE SIZE (1..MAX) OF GeneralName
|
||||||
|
*
|
||||||
|
* GeneralName ::= CHOICE {
|
||||||
|
* otherName [0] OtherName,
|
||||||
|
* rfc822Name [1] IA5String,
|
||||||
|
* dNSName [2] IA5String,
|
||||||
|
* x400Address [3] ORAddress,
|
||||||
|
* directoryName [4] Name,
|
||||||
|
* ediPartyName [5] EDIPartyName,
|
||||||
|
* uniformResourceIdentifier [6] IA5String,
|
||||||
|
* iPAddress [7] OCTET STRING,
|
||||||
|
* registeredID [8] OBJECT IDENTIFIER }
|
||||||
|
*
|
||||||
|
* OtherName ::= SEQUENCE {
|
||||||
|
* type-id OBJECT IDENTIFIER,
|
||||||
|
* value [0] EXPLICIT ANY DEFINED BY type-id }
|
||||||
|
*
|
||||||
|
* EDIPartyName ::= SEQUENCE {
|
||||||
|
* nameAssigner [0] DirectoryString OPTIONAL,
|
||||||
|
* partyName [1] DirectoryString }
|
||||||
|
*
|
||||||
|
* NOTE: we list all types, but only use dNSName and otherName
|
||||||
|
* of type HwModuleName, as defined in RFC 4108, at this point.
|
||||||
|
*/
|
||||||
|
static int x509_get_subject_alt_name(unsigned char **p,
|
||||||
|
const unsigned char *end,
|
||||||
|
mbedtls_x509_sequence *subject_alt_name)
|
||||||
|
{
|
||||||
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
|
size_t len, tag_len;
|
||||||
|
mbedtls_asn1_buf *buf;
|
||||||
|
unsigned char tag;
|
||||||
|
mbedtls_asn1_sequence *cur = subject_alt_name;
|
||||||
|
|
||||||
|
/* Get main sequence tag */
|
||||||
|
if ((ret = mbedtls_asn1_get_tag(p, end, &len,
|
||||||
|
MBEDTLS_ASN1_CONSTRUCTED | MBEDTLS_ASN1_SEQUENCE)) != 0) {
|
||||||
|
return MBEDTLS_ERROR_ADD(MBEDTLS_ERR_X509_INVALID_EXTENSIONS, ret);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (*p + len != end) {
|
||||||
|
return MBEDTLS_ERROR_ADD(MBEDTLS_ERR_X509_INVALID_EXTENSIONS,
|
||||||
|
MBEDTLS_ERR_ASN1_LENGTH_MISMATCH);
|
||||||
|
}
|
||||||
|
|
||||||
|
while (*p < end) {
|
||||||
|
mbedtls_x509_subject_alternative_name dummy_san_buf;
|
||||||
|
memset(&dummy_san_buf, 0, sizeof(dummy_san_buf));
|
||||||
|
|
||||||
|
tag = **p;
|
||||||
|
(*p)++;
|
||||||
|
if ((ret = mbedtls_asn1_get_len(p, end, &tag_len)) != 0) {
|
||||||
|
return MBEDTLS_ERROR_ADD(MBEDTLS_ERR_X509_INVALID_EXTENSIONS, ret);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((tag & MBEDTLS_ASN1_TAG_CLASS_MASK) !=
|
||||||
|
MBEDTLS_ASN1_CONTEXT_SPECIFIC) {
|
||||||
|
return MBEDTLS_ERROR_ADD(MBEDTLS_ERR_X509_INVALID_EXTENSIONS,
|
||||||
|
MBEDTLS_ERR_ASN1_UNEXPECTED_TAG);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Check that the SAN is structured correctly.
|
||||||
|
*/
|
||||||
|
ret = mbedtls_x509_parse_subject_alt_name(&(cur->buf), &dummy_san_buf);
|
||||||
|
/*
|
||||||
|
* In case the extension is malformed, return an error,
|
||||||
|
* and clear the allocated sequences.
|
||||||
|
*/
|
||||||
|
if (ret != 0 && ret != MBEDTLS_ERR_X509_FEATURE_UNAVAILABLE) {
|
||||||
|
mbedtls_asn1_sequence_free(subject_alt_name->next);
|
||||||
|
subject_alt_name->next = NULL;
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Allocate and assign next pointer */
|
||||||
|
if (cur->buf.p != NULL) {
|
||||||
|
if (cur->next != NULL) {
|
||||||
|
return MBEDTLS_ERR_X509_INVALID_EXTENSIONS;
|
||||||
|
}
|
||||||
|
|
||||||
|
cur->next = mbedtls_calloc(1, sizeof(mbedtls_asn1_sequence));
|
||||||
|
|
||||||
|
if (cur->next == NULL) {
|
||||||
|
return MBEDTLS_ERROR_ADD(MBEDTLS_ERR_X509_INVALID_EXTENSIONS,
|
||||||
|
MBEDTLS_ERR_ASN1_ALLOC_FAILED);
|
||||||
|
}
|
||||||
|
|
||||||
|
cur = cur->next;
|
||||||
|
}
|
||||||
|
|
||||||
|
buf = &(cur->buf);
|
||||||
|
buf->tag = tag;
|
||||||
|
buf->p = *p;
|
||||||
|
buf->len = tag_len;
|
||||||
|
*p += buf->len;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Set final sequence entry's next pointer to NULL */
|
||||||
|
cur->next = NULL;
|
||||||
|
|
||||||
|
if (*p != end) {
|
||||||
|
return MBEDTLS_ERROR_ADD(MBEDTLS_ERR_X509_INVALID_EXTENSIONS,
|
||||||
|
MBEDTLS_ERR_ASN1_LENGTH_MISMATCH);
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* id-ce-certificatePolicies OBJECT IDENTIFIER ::= { id-ce 32 }
|
* id-ce-certificatePolicies OBJECT IDENTIFIER ::= { id-ce 32 }
|
||||||
*
|
*
|
||||||
|
@ -883,7 +1104,20 @@ static int x509_get_crt_ext(unsigned char **p,
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case MBEDTLS_X509_EXT_SUBJECT_KEY_IDENTIFIER:
|
||||||
|
/* Parse subject key identifier */
|
||||||
|
if ((ret = x509_get_subject_key_id(p, end_ext_data,
|
||||||
|
&crt->subject_key_id)) != 0) {
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case MBEDTLS_X509_EXT_AUTHORITY_KEY_IDENTIFIER:
|
||||||
|
/* Parse authority key identifier */
|
||||||
|
if ((ret = x509_get_authority_key_id(p, end_ext_octet,
|
||||||
|
&crt->authority_key_id)) != 0) {
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
break;
|
||||||
case MBEDTLS_X509_EXT_SUBJECT_ALT_NAME:
|
case MBEDTLS_X509_EXT_SUBJECT_ALT_NAME:
|
||||||
/* Parse subject alt name */
|
/* Parse subject alt name */
|
||||||
if ((ret = mbedtls_x509_get_subject_alt_name(p, end_ext_octet,
|
if ((ret = mbedtls_x509_get_subject_alt_name(p, end_ext_octet,
|
||||||
|
@ -2838,6 +3072,14 @@ void mbedtls_x509_crt_free(mbedtls_x509_crt *crt)
|
||||||
mbedtls_asn1_sequence_free(cert_cur->subject_alt_names.next);
|
mbedtls_asn1_sequence_free(cert_cur->subject_alt_names.next);
|
||||||
mbedtls_asn1_sequence_free(cert_cur->certificate_policies.next);
|
mbedtls_asn1_sequence_free(cert_cur->certificate_policies.next);
|
||||||
|
|
||||||
|
name_cur = cert_cur->authority_key_id.authorityCertIssuer.next;
|
||||||
|
while (name_cur != NULL) {
|
||||||
|
name_prv = name_cur;
|
||||||
|
name_cur = name_cur->next;
|
||||||
|
mbedtls_platform_zeroize(name_prv, sizeof(mbedtls_x509_name));
|
||||||
|
mbedtls_free(name_prv);
|
||||||
|
}
|
||||||
|
|
||||||
if (cert_cur->raw.p != NULL && cert_cur->own_buffer) {
|
if (cert_cur->raw.p != NULL && cert_cur->own_buffer) {
|
||||||
mbedtls_platform_zeroize(cert_cur->raw.p, cert_cur->raw.len);
|
mbedtls_platform_zeroize(cert_cur->raw.p, cert_cur->raw.len);
|
||||||
mbedtls_free(cert_cur->raw.p);
|
mbedtls_free(cert_cur->raw.p);
|
||||||
|
|
21
tests/data_files/authorityKeyId_subjectKeyId.crt
Normal file
21
tests/data_files/authorityKeyId_subjectKeyId.crt
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIDhzCCAm+gAwIBAgIBADANBgkqhkiG9w0BAQUFADA7MQswCQYDVQQGEwJOTDER
|
||||||
|
MA8GA1UEChMIUG9sYXJTU0wxGTAXBgNVBAMTEFBvbGFyU1NMIFRlc3QgQ0EwHhcN
|
||||||
|
MTEwMjEyMTQ0NDAwWhcNMjEwMjEyMTQ0NDAwWjA7MQswCQYDVQQGEwJOTDERMA8G
|
||||||
|
A1UEChMIUG9sYXJTU0wxGTAXBgNVBAMTEFBvbGFyU1NMIFRlc3QgQ0EwggEiMA0G
|
||||||
|
CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDA3zf8F7vglp0/ht6WMn1EpRagzSHx
|
||||||
|
mdTs6st8GFgIlKXsm8WL3xoemTiZhx57wI053zhdcHgH057Zk+i5clHFzqMwUqny
|
||||||
|
50BwFMtEonILwuVA+T7lpg6z+exKY8C4KQB0nFc7qKUEkHHxvYPZP9al4jwqj+8n
|
||||||
|
YMPGn8u67GB9t+aEMr5P+1gmIgNb1LTV+/Xjli5wwOQuvfwu7uJBVcA0Ln0kcmnL
|
||||||
|
R7EUQIN9Z/SG9jGr8XmksrUuEvmEF/Bibyc+E1ixVA0hmnM3oTDPb5Lc9un8rNsu
|
||||||
|
KNF+AksjoBXyOGVkCeoMbo4bF6BxyLObyavpw/LPh5aPgAIynplYb6LVAgMBAAGj
|
||||||
|
gZUwgZIwDAYDVR0TBAUwAwEB/zAdBgNVHQ4EFgQUtFrkpbPe0lL2udWmlQ/rPrzH
|
||||||
|
/f8wYwYDVR0jBFwwWoAUtFrkpbPe0lL2udWmlQ/rPrzH/f+hP6Q9MDsxCzAJBgNV
|
||||||
|
BAYTAk5MMREwDwYDVQQKEwhQb2xhclNTTDEZMBcGA1UEAxMQUG9sYXJTU0wgVGVz
|
||||||
|
dCBDQYIBADANBgkqhkiG9w0BAQUFAAOCAQEAuP1U2ABUkIslsCfdlc2i94QHHYeJ
|
||||||
|
SsR4EdgHtdciUI5I62J6Mom+Y0dT/7a+8S6MVMCZP6C5NyNyXw1GWY/YR82XTJ8H
|
||||||
|
DBJiCTok5DbZ6SzaONBzdWHXwWwmi5vg1dxn7YxrM9d0IjxM27WNKs4sDQhZBQkF
|
||||||
|
pjmfs2cb4oPl4Y9T9meTx/lvdkRYEug61Jfn6cA+qHpyPYdTH+UshITnmp5/Ztkf
|
||||||
|
m/UTSLBNFNHesiTZeH31NcxYGdHSme9Nc/gfidRa0FLOCfWxRlFqAI47zG9jAQCZ
|
||||||
|
7Z2mCGDNMhjQc+BYcdnl0lPXjdDK6V0qCg1dVewhUBcW5gZKzV7e9+DpVA==
|
||||||
|
-----END CERTIFICATE-----
|
|
@ -0,0 +1,3 @@
|
||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIDhzCCAm+gAwIBAgIBADANBgkqhkiG9w0BAQUFADA7MQswCQYDVQQGEwJOTDERMA8GA1UEChMIUG9sYXJTU0wxGTAXBgNVBAMTEFBvbGFyU1NMIFRlc3QgQ0EwHhcNMTEwMjEyMTQ0NDAwWhcNMjEwMjEyMTQ0NDAwWjA7MQswCQYDVQQGEwJOTDERMA8GA1UEChMIUG9sYXJTU0wxGTAXBgNVBAMTEFBvbGFyU1NMIFRlc3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDA3zf8F7vglp0/ht6WMn1EpRagzSHxmdTs6st8GFgIlKXsm8WL3xoemTiZhx57wI053zhdcHgH057Zk+i5clHFzqMwUqny50BwFMtEonILwuVA+T7lpg6z+exKY8C4KQB0nFc7qKUEkHHxvYPZP9al4jwqj+8nYMPGn8u67GB9t+aEMr5P+1gmIgNb1LTV+/Xjli5wwOQuvfwu7uJBVcA0Ln0kcmnLR7EUQIN9Z/SG9jGr8XmksrUuEvmEF/Bibyc+E1ixVA0hmnM3oTDPb5Lc9un8rNsuKNF+AksjoBXyOGVkCeoMbo4bF6BxyLObyavpw/LPh5aPgAIynplYb6LVAgMBAAGjgZUwgZIwDAYDVR0TBAUwAwEB/zAdBgNVHQ4EFgQUtFrkpbPe0lL2udWmlQ/rPrzH/f8wYwYDVR0jBFwwWgAUtFrkpbPe0lL2udWmlQ/rPrzH/f+hP6Q9MDsxCzAJBgNVBAYTAk5MMREwDwYDVQQKEwhQb2xhclNTTDEZMBcGA1UEAxMQUG9sYXJTU0wgVGVzdCBDQYIBADANBgkqhkiG9w0BAQUFAAOCAQEAuP1U2ABUkIslsCfdlc2i94QHHYeJSsR4EdgHtdciUI5I62J6Mom+Y0dT/7a+8S6MVMCZP6C5NyNyXw1GWY/YR82XTJ8HDBJiCTok5DbZ6SzaONBzdWHXwWwmi5vg1dxn7YxrM9d0IjxM27WNKs4sDQhZBQkFpjmfs2cb4oPl4Y9T9meTx/lvdkRYEug61Jfn6cA+qHpyPYdTH+UshITnmp5/Ztkfm/UTSLBNFNHesiTZeH31NcxYGdHSme9Nc/gfidRa0FLOCfWxRlFqAI47zG9jAQCZ7Z2mCGDNMhjQc+BYcdnl0lPXjdDK6V0qCg1dVewhUBcW5gZKzV7e9+DpVA==
|
||||||
|
-----END CERTIFICATE-----
|
|
@ -0,0 +1,3 @@
|
||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIDhzCCAm+gAwIBAgIBADANBgkqhkiG9w0BAQUFADA7MQswCQYDVQQGEwJOTDERMA8GA1UEChMIUG9sYXJTU0wxGTAXBgNVBAMTEFBvbGFyU1NMIFRlc3QgQ0EwHhcNMTEwMjEyMTQ0NDAwWhcNMjEwMjEyMTQ0NDAwWjA7MQswCQYDVQQGEwJOTDERMA8GA1UEChMIUG9sYXJTU0wxGTAXBgNVBAMTEFBvbGFyU1NMIFRlc3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDA3zf8F7vglp0/ht6WMn1EpRagzSHxmdTs6st8GFgIlKXsm8WL3xoemTiZhx57wI053zhdcHgH057Zk+i5clHFzqMwUqny50BwFMtEonILwuVA+T7lpg6z+exKY8C4KQB0nFc7qKUEkHHxvYPZP9al4jwqj+8nYMPGn8u67GB9t+aEMr5P+1gmIgNb1LTV+/Xjli5wwOQuvfwu7uJBVcA0Ln0kcmnLR7EUQIN9Z/SG9jGr8XmksrUuEvmEF/Bibyc+E1ixVA0hmnM3oTDPb5Lc9un8rNsuKNF+AksjoBXyOGVkCeoMbo4bF6BxyLObyavpw/LPh5aPgAIynplYb6LVAgMBAAGjgZUwgZIwDAYDVR0TBAUwAwEB/zAdBgNVHQ4EFgQUtFrkpbPe0lL2udWmlQ/rPrzH/f8wYwYDVR0jBFwAWoAUtFrkpbPe0lL2udWmlQ/rPrzH/f+hP6Q9MDsxCzAJBgNVBAYTAk5MMREwDwYDVQQKEwhQb2xhclNTTDEZMBcGA1UEAxMQUG9sYXJTU0wgVGVzdCBDQYIBADANBgkqhkiG9w0BAQUFAAOCAQEAuP1U2ABUkIslsCfdlc2i94QHHYeJSsR4EdgHtdciUI5I62J6Mom+Y0dT/7a+8S6MVMCZP6C5NyNyXw1GWY/YR82XTJ8HDBJiCTok5DbZ6SzaONBzdWHXwWwmi5vg1dxn7YxrM9d0IjxM27WNKs4sDQhZBQkFpjmfs2cb4oPl4Y9T9meTx/lvdkRYEug61Jfn6cA+qHpyPYdTH+UshITnmp5/Ztkfm/UTSLBNFNHesiTZeH31NcxYGdHSme9Nc/gfidRa0FLOCfWxRlFqAI47zG9jAQCZ7Z2mCGDNMhjQc+BYcdnl0lPXjdDK6V0qCg1dVewhUBcW5gZKzV7e9+DpVA==
|
||||||
|
-----END CERTIFICATE-----
|
|
@ -0,0 +1,3 @@
|
||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIDhzCCAm+gAwIBAgIBADANBgkqhkiG9w0BAQUFADA7MQswCQYDVQQGEwJOTDERMA8GA1UEChMIUG9sYXJTU0wxGTAXBgNVBAMTEFBvbGFyU1NMIFRlc3QgQ0EwHhcNMTEwMjEyMTQ0NDAwWhcNMjEwMjEyMTQ0NDAwWjA7MQswCQYDVQQGEwJOTDERMA8GA1UEChMIUG9sYXJTU0wxGTAXBgNVBAMTEFBvbGFyU1NMIFRlc3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDA3zf8F7vglp0/ht6WMn1EpRagzSHxmdTs6st8GFgIlKXsm8WL3xoemTiZhx57wI053zhdcHgH057Zk+i5clHFzqMwUqny50BwFMtEonILwuVA+T7lpg6z+exKY8C4KQB0nFc7qKUEkHHxvYPZP9al4jwqj+8nYMPGn8u67GB9t+aEMr5P+1gmIgNb1LTV+/Xjli5wwOQuvfwu7uJBVcA0Ln0kcmnLR7EUQIN9Z/SG9jGr8XmksrUuEvmEF/Bibyc+E1ixVA0hmnM3oTDPb5Lc9un8rNsuKNF+AksjoBXyOGVkCeoMbo4bF6BxyLObyavpw/LPh5aPgAIynplYb6LVAgMBAAGjgZUwgZIwDAYDVR0TBAUwAwEB/zAdBgNVHQ4EFgQUtFrkpbPe0lL2udWmlQ/rPrzH/f8wYwYDVR0jBFwwWoAUtFrkpbPe0lL2udWmlQ/rPrzH/f8AP6Q9MDsxCzAJBgNVBAYTAk5MMREwDwYDVQQKEwhQb2xhclNTTDEZMBcGA1UEAxMQUG9sYXJTU0wgVGVzdCBDQYIBADANBgkqhkiG9w0BAQUFAAOCAQEAuP1U2ABUkIslsCfdlc2i94QHHYeJSsR4EdgHtdciUI5I62J6Mom+Y0dT/7a+8S6MVMCZP6C5NyNyXw1GWY/YR82XTJ8HDBJiCTok5DbZ6SzaONBzdWHXwWwmi5vg1dxn7YxrM9d0IjxM27WNKs4sDQhZBQkFpjmfs2cb4oPl4Y9T9meTx/lvdkRYEug61Jfn6cA+qHpyPYdTH+UshITnmp5/Ztkfm/UTSLBNFNHesiTZeH31NcxYGdHSme9Nc/gfidRa0FLOCfWxRlFqAI47zG9jAQCZ7Z2mCGDNMhjQc+BYcdnl0lPXjdDK6V0qCg1dVewhUBcW5gZKzV7e9+DpVA==
|
||||||
|
-----END CERTIFICATE-----
|
|
@ -0,0 +1,3 @@
|
||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIDhzCCAm+gAwIBAgIBADANBgkqhkiG9w0BAQUFADA7MQswCQYDVQQGEwJOTDERMA8GA1UEChMIUG9sYXJTU0wxGTAXBgNVBAMTEFBvbGFyU1NMIFRlc3QgQ0EwHhcNMTEwMjEyMTQ0NDAwWhcNMjEwMjEyMTQ0NDAwWjA7MQswCQYDVQQGEwJOTDERMA8GA1UEChMIUG9sYXJTU0wxGTAXBgNVBAMTEFBvbGFyU1NMIFRlc3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDA3zf8F7vglp0/ht6WMn1EpRagzSHxmdTs6st8GFgIlKXsm8WL3xoemTiZhx57wI053zhdcHgH057Zk+i5clHFzqMwUqny50BwFMtEonILwuVA+T7lpg6z+exKY8C4KQB0nFc7qKUEkHHxvYPZP9al4jwqj+8nYMPGn8u67GB9t+aEMr5P+1gmIgNb1LTV+/Xjli5wwOQuvfwu7uJBVcA0Ln0kcmnLR7EUQIN9Z/SG9jGr8XmksrUuEvmEF/Bibyc+E1ixVA0hmnM3oTDPb5Lc9un8rNsuKNF+AksjoBXyOGVkCeoMbo4bF6BxyLObyavpw/LPh5aPgAIynplYb6LVAgMBAAGjgZUwgZIwDAYDVR0TBAUwAwEB/zAdBgNVHQ4EFgQUtFrkpbPe0lL2udWmlQ/rPrzH/f8wYwYDVR0jBFwwWoAUtFrkpbPe0lL2udWmlQ/rPrzH/f+hPwA9MDsxCzAJBgNVBAYTAk5MMREwDwYDVQQKEwhQb2xhclNTTDEZMBcGA1UEAxMQUG9sYXJTU0wgVGVzdCBDQYIBADANBgkqhkiG9w0BAQUFAAOCAQEAuP1U2ABUkIslsCfdlc2i94QHHYeJSsR4EdgHtdciUI5I62J6Mom+Y0dT/7a+8S6MVMCZP6C5NyNyXw1GWY/YR82XTJ8HDBJiCTok5DbZ6SzaONBzdWHXwWwmi5vg1dxn7YxrM9d0IjxM27WNKs4sDQhZBQkFpjmfs2cb4oPl4Y9T9meTx/lvdkRYEug61Jfn6cA+qHpyPYdTH+UshITnmp5/Ztkfm/UTSLBNFNHesiTZeH31NcxYGdHSme9Nc/gfidRa0FLOCfWxRlFqAI47zG9jAQCZ7Z2mCGDNMhjQc+BYcdnl0lPXjdDK6V0qCg1dVewhUBcW5gZKzV7e9+DpVA==
|
||||||
|
-----END CERTIFICATE-----
|
|
@ -0,0 +1,3 @@
|
||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIDhzCCAm+gAwIBAgIBADANBgkqhkiG9w0BAQUFADA7MQswCQYDVQQGEwJOTDERMA8GA1UEChMIUG9sYXJTU0wxGTAXBgNVBAMTEFBvbGFyU1NMIFRlc3QgQ0EwHhcNMTEwMjEyMTQ0NDAwWhcNMjEwMjEyMTQ0NDAwWjA7MQswCQYDVQQGEwJOTDERMA8GA1UEChMIUG9sYXJTU0wxGTAXBgNVBAMTEFBvbGFyU1NMIFRlc3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDA3zf8F7vglp0/ht6WMn1EpRagzSHxmdTs6st8GFgIlKXsm8WL3xoemTiZhx57wI053zhdcHgH057Zk+i5clHFzqMwUqny50BwFMtEonILwuVA+T7lpg6z+exKY8C4KQB0nFc7qKUEkHHxvYPZP9al4jwqj+8nYMPGn8u67GB9t+aEMr5P+1gmIgNb1LTV+/Xjli5wwOQuvfwu7uJBVcA0Ln0kcmnLR7EUQIN9Z/SG9jGr8XmksrUuEvmEF/Bibyc+E1ixVA0hmnM3oTDPb5Lc9un8rNsuKNF+AksjoBXyOGVkCeoMbo4bF6BxyLObyavpw/LPh5aPgAIynplYb6LVAgMBAAGjgZUwgZIwDAYDVR0TBAUwAwEB/zAdBgNVHQ4EFgQUtFrkpbPe0lL2udWmlQ/rPrzH/f8wYwYDVR0jBFwwWoAUtFrkpbPe0lL2udWmlQ/rPrzH/f+hP6Q9ADsxCzAJBgNVBAYTAk5MMREwDwYDVQQKEwhQb2xhclNTTDEZMBcGA1UEAxMQUG9sYXJTU0wgVGVzdCBDQYIBADANBgkqhkiG9w0BAQUFAAOCAQEAuP1U2ABUkIslsCfdlc2i94QHHYeJSsR4EdgHtdciUI5I62J6Mom+Y0dT/7a+8S6MVMCZP6C5NyNyXw1GWY/YR82XTJ8HDBJiCTok5DbZ6SzaONBzdWHXwWwmi5vg1dxn7YxrM9d0IjxM27WNKs4sDQhZBQkFpjmfs2cb4oPl4Y9T9meTx/lvdkRYEug61Jfn6cA+qHpyPYdTH+UshITnmp5/Ztkfm/UTSLBNFNHesiTZeH31NcxYGdHSme9Nc/gfidRa0FLOCfWxRlFqAI47zG9jAQCZ7Z2mCGDNMhjQc+BYcdnl0lPXjdDK6V0qCg1dVewhUBcW5gZKzV7e9+DpVA==
|
||||||
|
-----END CERTIFICATE-----
|
|
@ -0,0 +1,3 @@
|
||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIDhzCCAm+gAwIBAgIBADANBgkqhkiG9w0BAQUFADA7MQswCQYDVQQGEwJOTDERMA8GA1UEChMIUG9sYXJTU0wxGTAXBgNVBAMTEFBvbGFyU1NMIFRlc3QgQ0EwHhcNMTEwMjEyMTQ0NDAwWhcNMjEwMjEyMTQ0NDAwWjA7MQswCQYDVQQGEwJOTDERMA8GA1UEChMIUG9sYXJTU0wxGTAXBgNVBAMTEFBvbGFyU1NMIFRlc3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDA3zf8F7vglp0/ht6WMn1EpRagzSHxmdTs6st8GFgIlKXsm8WL3xoemTiZhx57wI053zhdcHgH057Zk+i5clHFzqMwUqny50BwFMtEonILwuVA+T7lpg6z+exKY8C4KQB0nFc7qKUEkHHxvYPZP9al4jwqj+8nYMPGn8u67GB9t+aEMr5P+1gmIgNb1LTV+/Xjli5wwOQuvfwu7uJBVcA0Ln0kcmnLR7EUQIN9Z/SG9jGr8XmksrUuEvmEF/Bibyc+E1ixVA0hmnM3oTDPb5Lc9un8rNsuKNF+AksjoBXyOGVkCeoMbo4bF6BxyLObyavpw/LPh5aPgAIynplYb6LVAgMBAAGjgZUwgZIwDAYDVR0TBAUwAwEB/zAdBgNVHQ4EFgQUtFrkpbPe0lL2udWmlQ/rPrzH/f8wYwYDVR0jBFwwWoAUtFrkpbPe0lL2udWmlQ/rPrzH/f+hP6Q9MDsACzAJBgNVBAYTAk5MMREwDwYDVQQKEwhQb2xhclNTTDEZMBcGA1UEAxMQUG9sYXJTU0wgVGVzdCBDQYIBADANBgkqhkiG9w0BAQUFAAOCAQEAuP1U2ABUkIslsCfdlc2i94QHHYeJSsR4EdgHtdciUI5I62J6Mom+Y0dT/7a+8S6MVMCZP6C5NyNyXw1GWY/YR82XTJ8HDBJiCTok5DbZ6SzaONBzdWHXwWwmi5vg1dxn7YxrM9d0IjxM27WNKs4sDQhZBQkFpjmfs2cb4oPl4Y9T9meTx/lvdkRYEug61Jfn6cA+qHpyPYdTH+UshITnmp5/Ztkfm/UTSLBNFNHesiTZeH31NcxYGdHSme9Nc/gfidRa0FLOCfWxRlFqAI47zG9jAQCZ7Z2mCGDNMhjQc+BYcdnl0lPXjdDK6V0qCg1dVewhUBcW5gZKzV7e9+DpVA==
|
||||||
|
-----END CERTIFICATE-----
|
|
@ -0,0 +1,3 @@
|
||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIDhzCCAm+gAwIBAgIBADANBgkqhkiG9w0BAQUFADA7MQswCQYDVQQGEwJOTDERMA8GA1UEChMIUG9sYXJTU0wxGTAXBgNVBAMTEFBvbGFyU1NMIFRlc3QgQ0EwHhcNMTEwMjEyMTQ0NDAwWhcNMjEwMjEyMTQ0NDAwWjA7MQswCQYDVQQGEwJOTDERMA8GA1UEChMIUG9sYXJTU0wxGTAXBgNVBAMTEFBvbGFyU1NMIFRlc3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDA3zf8F7vglp0/ht6WMn1EpRagzSHxmdTs6st8GFgIlKXsm8WL3xoemTiZhx57wI053zhdcHgH057Zk+i5clHFzqMwUqny50BwFMtEonILwuVA+T7lpg6z+exKY8C4KQB0nFc7qKUEkHHxvYPZP9al4jwqj+8nYMPGn8u67GB9t+aEMr5P+1gmIgNb1LTV+/Xjli5wwOQuvfwu7uJBVcA0Ln0kcmnLR7EUQIN9Z/SG9jGr8XmksrUuEvmEF/Bibyc+E1ixVA0hmnM3oTDPb5Lc9un8rNsuKNF+AksjoBXyOGVkCeoMbo4bF6BxyLObyavpw/LPh5aPgAIynplYb6LVAgMBAAGjgZUwgZIwDAYDVR0TBAUwAwEB/zAdBgNVHQ4EFgAUtFrkpbPe0lL2udWmlQ/rPrzH/f8wYwYDVR0jBFwwWoAUtFrkpbPe0lL2udWmlQ/rPrzH/f+hP6Q9MDsxCzAJBgNVBAYTAk5MMREwDwYDVQQKEwhQb2xhclNTTDEZMBcGA1UEAxMQUG9sYXJTU0wgVGVzdCBDQYIBADANBgkqhkiG9w0BAQUFAAOCAQEAuP1U2ABUkIslsCfdlc2i94QHHYeJSsR4EdgHtdciUI5I62J6Mom+Y0dT/7a+8S6MVMCZP6C5NyNyXw1GWY/YR82XTJ8HDBJiCTok5DbZ6SzaONBzdWHXwWwmi5vg1dxn7YxrM9d0IjxM27WNKs4sDQhZBQkFpjmfs2cb4oPl4Y9T9meTx/lvdkRYEug61Jfn6cA+qHpyPYdTH+UshITnmp5/Ztkfm/UTSLBNFNHesiTZeH31NcxYGdHSme9Nc/gfidRa0FLOCfWxRlFqAI47zG9jAQCZ7Z2mCGDNMhjQc+BYcdnl0lPXjdDK6V0qCg1dVewhUBcW5gZKzV7e9+DpVA==
|
||||||
|
-----END CERTIFICATE-----
|
|
@ -3165,3 +3165,39 @@ x509_accessor_ext_types:MBEDTLS_X509_EXT_KEY_USAGE:MBEDTLS_X509_EXT_KEY_USAGE
|
||||||
X509 ext types accessor: ext type not present
|
X509 ext types accessor: ext type not present
|
||||||
depends_on:MBEDTLS_X509_CRT_PARSE_C
|
depends_on:MBEDTLS_X509_CRT_PARSE_C
|
||||||
x509_accessor_ext_types:MBEDTLS_X509_EXT_KEY_USAGE:MBEDTLS_X509_EXT_SUBJECT_ALT_NAME
|
x509_accessor_ext_types:MBEDTLS_X509_EXT_KEY_USAGE:MBEDTLS_X509_EXT_SUBJECT_ALT_NAME
|
||||||
|
|
||||||
|
X509 CRT parse Subject Key Id - Correct
|
||||||
|
depends_on:MBEDTLS_FS_IO:MBEDTLS_X509_CRT_PARSE_C:MBEDTLS_CERTS_C:MBEDTLS_SHA1_C:MBEDTLS_RSA_C
|
||||||
|
mbedtls_x509_crt_parse_subjectkeyid:"data_files/authorityKeyId_subjectKeyId.crt":"B45AE4A5B3DED252F6B9D5A6950FEB3EBCC7FDFF":20:0
|
||||||
|
|
||||||
|
X509 CRT parse Subject Key Id - Wrong
|
||||||
|
depends_on:MBEDTLS_FS_IO:MBEDTLS_X509_CRT_PARSE_C:MBEDTLS_CERTS_C:MBEDTLS_SHA1_C:MBEDTLS_RSA_C
|
||||||
|
mbedtls_x509_crt_parse_subjectkeyid:"data_files/authorityKeyId_subjectKeyId_wrong_SubjectKeyId.crt":"":0:0xff9e
|
||||||
|
|
||||||
|
X509 CRT parse Authority Key Id - Correct
|
||||||
|
depends_on:MBEDTLS_FS_IO:MBEDTLS_X509_CRT_PARSE_C:MBEDTLS_CERTS_C:MBEDTLS_SHA1_C:MBEDTLS_RSA_C
|
||||||
|
mbedtls_x509_crt_parse_authoritykeyid:"data_files/authorityKeyId_subjectKeyId.crt":"B45AE4A5B3DED252F6B9D5A6950FEB3EBCC7FDFF":20:"NL/PolarSSL/PolarSSL Test CA/":"0":1:0
|
||||||
|
|
||||||
|
X509 CRT parse Authority Key Id - Wrong Sequence
|
||||||
|
depends_on:MBEDTLS_FS_IO:MBEDTLS_X509_CRT_PARSE_C:MBEDTLS_CERTS_C:MBEDTLS_SHA1_C:MBEDTLS_RSA_C
|
||||||
|
mbedtls_x509_crt_parse_authoritykeyid:"data_files/authorityKeyId_subjectKeyId_wrong_AuthorityKeyId_Sequence.crt":"":0:"":"0":0:0xff9e
|
||||||
|
|
||||||
|
X509 CRT parse Authority Key Id - Wrong KeyId Tag
|
||||||
|
depends_on:MBEDTLS_FS_IO:MBEDTLS_X509_CRT_PARSE_C:MBEDTLS_CERTS_C:MBEDTLS_SHA1_C:MBEDTLS_RSA_C
|
||||||
|
mbedtls_x509_crt_parse_authoritykeyid:"data_files/authorityKeyId_subjectKeyId_wrong_AuthorityKeyId_KeyId.crt":"":0:"":"0":0:0xff9e
|
||||||
|
|
||||||
|
X509 CRT parse Authority Key Id - Wrong Issuer Tag 1
|
||||||
|
depends_on:MBEDTLS_FS_IO:MBEDTLS_X509_CRT_PARSE_C:MBEDTLS_CERTS_C:MBEDTLS_SHA1_C:MBEDTLS_RSA_C
|
||||||
|
mbedtls_x509_crt_parse_authoritykeyid:"data_files/authorityKeyId_subjectKeyId_wrong_Issuer1.crt":"":0:"":"0":0:0xff9e
|
||||||
|
|
||||||
|
X509 CRT parse Authority Key Id - Wrong Issuer Tag 2
|
||||||
|
depends_on:MBEDTLS_FS_IO:MBEDTLS_X509_CRT_PARSE_C:MBEDTLS_CERTS_C:MBEDTLS_SHA1_C:MBEDTLS_RSA_C
|
||||||
|
mbedtls_x509_crt_parse_authoritykeyid:"data_files/authorityKeyId_subjectKeyId_wrong_Issuer2.crt":"":0:"":"0":0:0xff9e
|
||||||
|
|
||||||
|
X509 CRT parse Authority Key Id - Wrong Issuer Tag 3
|
||||||
|
depends_on:MBEDTLS_FS_IO:MBEDTLS_X509_CRT_PARSE_C:MBEDTLS_CERTS_C:MBEDTLS_SHA1_C:MBEDTLS_RSA_C
|
||||||
|
mbedtls_x509_crt_parse_authoritykeyid:"data_files/authorityKeyId_subjectKeyId_wrong_Issuer3.crt":"":0:"":"0":0:0xff9e
|
||||||
|
|
||||||
|
X509 CRT parse Authority Key Id - Wrong Issuer Tag 4
|
||||||
|
depends_on:MBEDTLS_FS_IO:MBEDTLS_X509_CRT_PARSE_C:MBEDTLS_CERTS_C:MBEDTLS_SHA1_C:MBEDTLS_RSA_C
|
||||||
|
mbedtls_x509_crt_parse_authoritykeyid:"data_files/authorityKeyId_subjectKeyId_wrong_Issuer4.crt":"":0:"":"0":0:0xdc1e
|
||||||
|
|
|
@ -1472,3 +1472,95 @@ exit:
|
||||||
;;
|
;;
|
||||||
}
|
}
|
||||||
/* END_CASE */
|
/* END_CASE */
|
||||||
|
|
||||||
|
/* BEGIN_CASE depends_on:MBEDTLS_FS_IO:MBEDTLS_X509_CRT_PARSE_C:MBEDTLS_CERTS_C:MBEDTLS_SHA1_C:MBEDTLS_RSA_C */
|
||||||
|
void mbedtls_x509_crt_parse_subjectkeyid(char *crt_path,
|
||||||
|
char *subjectKeyId,
|
||||||
|
int subjectKeyIdLength,
|
||||||
|
int retVal)
|
||||||
|
{
|
||||||
|
mbedtls_x509_crt crt;
|
||||||
|
int i = 0;
|
||||||
|
int result = 0;
|
||||||
|
|
||||||
|
mbedtls_x509_crt_init(&crt);
|
||||||
|
|
||||||
|
TEST_ASSERT((mbedtls_x509_crt_parse_file(&crt, crt_path)& 0xFFFF) == retVal);
|
||||||
|
|
||||||
|
if (retVal != 0) {
|
||||||
|
while (i < subjectKeyIdLength) {
|
||||||
|
result |= crt.subject_key_id.p[i] != subjectKeyId[i*2];
|
||||||
|
result |= crt.subject_key_id.p[i+1] != subjectKeyId[i*2+1];
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_ASSERT(result == 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
exit:
|
||||||
|
mbedtls_x509_crt_free(&crt);
|
||||||
|
}
|
||||||
|
/* END_CASE */
|
||||||
|
|
||||||
|
/* BEGIN_CASE depends_on:MBEDTLS_FS_IO:MBEDTLS_X509_CRT_PARSE_C:MBEDTLS_CERTS_C:MBEDTLS_SHA1_C:MBEDTLS_RSA_C */
|
||||||
|
void mbedtls_x509_crt_parse_authoritykeyid(char *crt_path,
|
||||||
|
char *authorityKeyId_keyId,
|
||||||
|
int keyIdLength,
|
||||||
|
char *authorityKeyId_issuer,
|
||||||
|
char *authorityKeyId_serial,
|
||||||
|
int serialLength,
|
||||||
|
int retVal)
|
||||||
|
{
|
||||||
|
mbedtls_x509_crt crt;
|
||||||
|
int i = 0;
|
||||||
|
int result = 0;
|
||||||
|
int bufferCounter = 0;
|
||||||
|
size_t issuerCounter = 0;
|
||||||
|
|
||||||
|
mbedtls_x509_crt_init(&crt);
|
||||||
|
|
||||||
|
TEST_ASSERT((mbedtls_x509_crt_parse_file(&crt, crt_path)& 0xFFFF) == retVal);
|
||||||
|
|
||||||
|
if (retVal != 0) {
|
||||||
|
/* KeyId test */
|
||||||
|
while (i < keyIdLength) {
|
||||||
|
result |= crt.authority_key_id.keyIdentifier.p[i] != authorityKeyId_keyId[i*2];
|
||||||
|
result |= crt.authority_key_id.keyIdentifier.p[i+1] != authorityKeyId_keyId[i*2+1];
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Issuer test */
|
||||||
|
mbedtls_x509_name *issuerPtr = &crt.authority_key_id.authorityCertIssuer;
|
||||||
|
while (issuerPtr != NULL) {
|
||||||
|
for (issuerCounter = 0u; issuerCounter < issuerPtr->val.len; issuerCounter++) {
|
||||||
|
result |=
|
||||||
|
(authorityKeyId_issuer[bufferCounter++] != issuerPtr->val.p[issuerCounter]);
|
||||||
|
}
|
||||||
|
bufferCounter++; /* Skipping the slash */
|
||||||
|
issuerPtr = issuerPtr->next;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Serial test */
|
||||||
|
i = 0;
|
||||||
|
while (i < serialLength) {
|
||||||
|
result |= crt.authority_key_id.authorityCertSerialNumber.p[i] !=
|
||||||
|
authorityKeyId_serial[i*2];
|
||||||
|
result |= crt.authority_key_id.authorityCertSerialNumber.p[i+1] !=
|
||||||
|
authorityKeyId_serial[i*2+1];
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_ASSERT(result == 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
exit:
|
||||||
|
mbedtls_x509_crt_free(&crt);
|
||||||
|
}
|
||||||
|
/* END_CASE */
|
||||||
|
|
||||||
|
/* BEGIN_CASE depends_on:MBEDTLS_X509_CRT_PARSE_C:MBEDTLS_SELF_TEST */
|
||||||
|
void x509_selftest()
|
||||||
|
{
|
||||||
|
TEST_ASSERT(mbedtls_x509_self_test(1) == 0);
|
||||||
|
}
|
||||||
|
/* END_CASE */
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue