Macro-ized the final internal OID functions
This commit is contained in:
parent
47fce02bd8
commit
ce6ae233cb
1 changed files with 39 additions and 38 deletions
|
@ -83,6 +83,43 @@ int FN_NAME( const asn1_buf *oid, ATTR1_TYPE * ATTR1, ATTR2_TYPE * ATTR2 ) \
|
||||||
return( 0 ); \
|
return( 0 ); \
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Macro to generate a function for retrieving the OID based on a single
|
||||||
|
* attribute from a oid_descriptor_t wrapper.
|
||||||
|
*/
|
||||||
|
#define FN_OID_GET_OID_BY_ATTR1(FN_NAME, TYPE_T, LIST, ATTR1_TYPE, ATTR1) \
|
||||||
|
int FN_NAME( ATTR1_TYPE ATTR1, const char **oid_str ) \
|
||||||
|
{ \
|
||||||
|
const TYPE_T *cur = LIST; \
|
||||||
|
while( cur->descriptor.asn1 != NULL ) { \
|
||||||
|
if( cur->ATTR1 == ATTR1 ) { \
|
||||||
|
*oid_str = cur->descriptor.asn1; \
|
||||||
|
return( 0 ); \
|
||||||
|
} \
|
||||||
|
cur++; \
|
||||||
|
} \
|
||||||
|
return( POLARSSL_ERR_OID_NOT_FOUND ); \
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Macro to generate a function for retrieving the OID based on two
|
||||||
|
* attributes from a oid_descriptor_t wrapper.
|
||||||
|
*/
|
||||||
|
#define FN_OID_GET_OID_BY_ATTR2(FN_NAME, TYPE_T, LIST, ATTR1_TYPE, ATTR1, \
|
||||||
|
ATTR2_TYPE, ATTR2) \
|
||||||
|
int FN_NAME( ATTR1_TYPE ATTR1, ATTR2_TYPE ATTR2, const char **oid_str ) \
|
||||||
|
{ \
|
||||||
|
const TYPE_T *cur = LIST; \
|
||||||
|
while( cur->descriptor.asn1 != NULL ) { \
|
||||||
|
if( cur->ATTR1 == ATTR1 && cur->ATTR2 == ATTR2 ) { \
|
||||||
|
*oid_str = cur->descriptor.asn1; \
|
||||||
|
return( 0 ); \
|
||||||
|
} \
|
||||||
|
cur++; \
|
||||||
|
} \
|
||||||
|
return( POLARSSL_ERR_OID_NOT_FOUND ); \
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Core generic function
|
* Core generic function
|
||||||
*/
|
*/
|
||||||
|
@ -271,26 +308,7 @@ static const oid_sig_alg_t oid_sig_alg[] =
|
||||||
FN_OID_TYPED_FROM_ASN1(oid_sig_alg_t, sig_alg, oid_sig_alg);
|
FN_OID_TYPED_FROM_ASN1(oid_sig_alg_t, sig_alg, oid_sig_alg);
|
||||||
FN_OID_GET_DESCRIPTOR_ATTR1(oid_get_sig_alg_desc, oid_sig_alg_t, sig_alg, const char *, description);
|
FN_OID_GET_DESCRIPTOR_ATTR1(oid_get_sig_alg_desc, oid_sig_alg_t, sig_alg, const char *, description);
|
||||||
FN_OID_GET_ATTR2(oid_get_sig_alg, oid_sig_alg_t, sig_alg, md_type_t, md_alg, pk_type_t, pk_alg);
|
FN_OID_GET_ATTR2(oid_get_sig_alg, oid_sig_alg_t, sig_alg, md_type_t, md_alg, pk_type_t, pk_alg);
|
||||||
|
FN_OID_GET_OID_BY_ATTR2(oid_get_oid_by_sig_alg, oid_sig_alg_t, oid_sig_alg, pk_type_t, pk_alg, md_type_t, md_alg);
|
||||||
int oid_get_oid_by_sig_alg( pk_type_t pk_alg, md_type_t md_alg,
|
|
||||||
const char **oid_str )
|
|
||||||
{
|
|
||||||
const oid_sig_alg_t *cur = oid_sig_alg;
|
|
||||||
|
|
||||||
while( cur->descriptor.asn1 != NULL )
|
|
||||||
{
|
|
||||||
if( cur->pk_alg == pk_alg &&
|
|
||||||
cur->md_alg == md_alg )
|
|
||||||
{
|
|
||||||
*oid_str = cur->descriptor.asn1;
|
|
||||||
return( 0 );
|
|
||||||
}
|
|
||||||
|
|
||||||
cur++;
|
|
||||||
}
|
|
||||||
|
|
||||||
return( POLARSSL_ERR_OID_NOT_FOUND );
|
|
||||||
}
|
|
||||||
#endif /* POLARSSL_MD_C */
|
#endif /* POLARSSL_MD_C */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -400,24 +418,7 @@ static const oid_md_alg_t oid_md_alg[] =
|
||||||
|
|
||||||
FN_OID_TYPED_FROM_ASN1(oid_md_alg_t, md_alg, oid_md_alg);
|
FN_OID_TYPED_FROM_ASN1(oid_md_alg_t, md_alg, oid_md_alg);
|
||||||
FN_OID_GET_ATTR1(oid_get_md_alg, oid_md_alg_t, md_alg, md_type_t, md_alg);
|
FN_OID_GET_ATTR1(oid_get_md_alg, oid_md_alg_t, md_alg, md_type_t, md_alg);
|
||||||
|
FN_OID_GET_OID_BY_ATTR1(oid_get_oid_by_md, oid_md_alg_t, oid_md_alg, md_type_t, md_alg);
|
||||||
int oid_get_oid_by_md( md_type_t md_alg, const char **oid_str )
|
|
||||||
{
|
|
||||||
const oid_md_alg_t *cur = oid_md_alg;
|
|
||||||
|
|
||||||
while( cur->descriptor.asn1 != NULL )
|
|
||||||
{
|
|
||||||
if( cur->md_alg == md_alg )
|
|
||||||
{
|
|
||||||
*oid_str = cur->descriptor.asn1;
|
|
||||||
return( 0 );
|
|
||||||
}
|
|
||||||
|
|
||||||
cur++;
|
|
||||||
}
|
|
||||||
|
|
||||||
return( POLARSSL_ERR_OID_NOT_FOUND );
|
|
||||||
}
|
|
||||||
#endif /* POLARSSL_MD_C */
|
#endif /* POLARSSL_MD_C */
|
||||||
|
|
||||||
#if defined(POLARSSL_PKCS12_C)
|
#if defined(POLARSSL_PKCS12_C)
|
||||||
|
|
Loading…
Reference in a new issue