Add certificate policy of type any policy id
Add a function for getting the certificate policy. Currently only "Any Policy" is supported.
This commit is contained in:
parent
a96f4fe94e
commit
11ee07191f
5 changed files with 67 additions and 0 deletions
|
@ -167,6 +167,11 @@
|
|||
#define MBEDTLS_OID_INIHIBIT_ANYPOLICY MBEDTLS_OID_ID_CE "\x36" /**< id-ce-inhibitAnyPolicy OBJECT IDENTIFIER ::= { id-ce 54 } */
|
||||
#define MBEDTLS_OID_FRESHEST_CRL MBEDTLS_OID_ID_CE "\x2E" /**< id-ce-freshestCRL OBJECT IDENTIFIER ::= { id-ce 46 } */
|
||||
|
||||
/*
|
||||
* Certificate policies
|
||||
*/
|
||||
#define MBEDTLS_OID_ANY_POLICY MBEDTLS_OID_CERTIFICATE_POLICIES "\x00" /**< anyPolicy OBJECT IDENTIFIER ::= { id-ce-certificatePolicies 0 } */
|
||||
|
||||
/*
|
||||
* Netscape certificate extensions
|
||||
*/
|
||||
|
@ -576,6 +581,16 @@ int mbedtls_oid_get_md_hmac( const mbedtls_asn1_buf *oid, mbedtls_md_type_t *md_
|
|||
*/
|
||||
int mbedtls_oid_get_extended_key_usage( const mbedtls_asn1_buf *oid, const char **desc );
|
||||
|
||||
/**
|
||||
* \brief Translate certificate policies OID into description
|
||||
*
|
||||
* \param oid OID to use
|
||||
* \param desc place to store string pointer
|
||||
*
|
||||
* \return 0 if successful, or MBEDTLS_ERR_OID_NOT_FOUND
|
||||
*/
|
||||
int mbedtls_oid_get_certificate_policies( const mbedtls_asn1_buf *oid, const char **desc );
|
||||
|
||||
/**
|
||||
* \brief Translate md_type into hash algorithm OID
|
||||
*
|
||||
|
|
|
@ -296,6 +296,15 @@ static const mbedtls_oid_descriptor_t oid_ext_key_usage[] =
|
|||
FN_OID_TYPED_FROM_ASN1(mbedtls_oid_descriptor_t, ext_key_usage, oid_ext_key_usage)
|
||||
FN_OID_GET_ATTR1(mbedtls_oid_get_extended_key_usage, mbedtls_oid_descriptor_t, ext_key_usage, const char *, description)
|
||||
|
||||
static const mbedtls_oid_descriptor_t oid_certificate_policies[] =
|
||||
{
|
||||
{ ADD_LEN( MBEDTLS_OID_ANY_POLICY ), "anyPolicy", "Any Policy" },
|
||||
{ NULL, 0, NULL, NULL },
|
||||
};
|
||||
|
||||
FN_OID_TYPED_FROM_ASN1(mbedtls_oid_descriptor_t, certificate_policies, oid_certificate_policies)
|
||||
FN_OID_GET_ATTR1(mbedtls_oid_get_certificate_policies, mbedtls_oid_descriptor_t, certificate_policies, const char *, description)
|
||||
|
||||
#if defined(MBEDTLS_MD_C)
|
||||
/*
|
||||
* For SignatureAlgorithmIdentifier
|
||||
|
|
|
@ -116,6 +116,7 @@ add_test_suite(mdx)
|
|||
add_test_suite(memory_buffer_alloc)
|
||||
add_test_suite(mpi)
|
||||
add_test_suite(nist_kw)
|
||||
add_test_suite(oid)
|
||||
add_test_suite(pem)
|
||||
add_test_suite(pkcs1_v15)
|
||||
add_test_suite(pkcs1_v21)
|
||||
|
|
8
tests/suites/test_suite_oid.data
Normal file
8
tests/suites/test_suite_oid.data
Normal file
|
@ -0,0 +1,8 @@
|
|||
OID get Any Policy certificate policy
|
||||
oid_get_certificate_policies:"551D2000":"Any Policy"
|
||||
|
||||
OID get certificate policy invalid oid
|
||||
oid_get_certificate_policies:"5533445566":""
|
||||
|
||||
OID get certificate policy wrong oid - id-ce-authorityKeyIdentifier
|
||||
oid_get_certificate_policies:"551D23":""
|
34
tests/suites/test_suite_oid.function
Normal file
34
tests/suites/test_suite_oid.function
Normal file
|
@ -0,0 +1,34 @@
|
|||
/* BEGIN_HEADER */
|
||||
#include "mbedtls/oid.h"
|
||||
#include "mbedtls/asn1.h"
|
||||
#include "mbedtls/asn1write.h"
|
||||
#include "string.h"
|
||||
/* END_HEADER */
|
||||
|
||||
/* BEGIN_DEPENDENCIES
|
||||
* depends_on:MBEDTLS_OID_C
|
||||
* END_DEPENDENCIES
|
||||
*/
|
||||
|
||||
/* BEGIN_CASE depends_on:MBEDTLS_ASN1_WRITE_C*/
|
||||
void oid_get_certificate_policies( data_t * oid, char * result_str )
|
||||
{
|
||||
mbedtls_asn1_buf asn1_buf = { 0, 0, NULL };
|
||||
int ret;
|
||||
const char *desc;
|
||||
|
||||
asn1_buf.tag = MBEDTLS_ASN1_OID;
|
||||
asn1_buf.p = oid->x;
|
||||
asn1_buf.len = oid->len;
|
||||
|
||||
ret = mbedtls_oid_get_certificate_policies( &asn1_buf, &desc );
|
||||
if( strlen( result_str ) == 0 )
|
||||
{
|
||||
TEST_ASSERT( ret == MBEDTLS_ERR_OID_NOT_FOUND );
|
||||
}
|
||||
else
|
||||
{
|
||||
TEST_ASSERT( strcmp( ( char* )desc, result_str ) == 0 );
|
||||
}
|
||||
}
|
||||
/* END_CASE */
|
Loading…
Reference in a new issue