renamed known_oid() to asn1_known_oid() and defined asn1_get_oid()

This commit is contained in:
Andreas Steffen
2009-04-15 18:37:17 +00:00
parent cb163ed52a
commit a4ac612eb8
7 changed files with 56 additions and 19 deletions
+2 -2
View File
@@ -519,7 +519,7 @@ parse_ac(chunk_t blob, x509acert_t *ac)
ac->notAfter = asn1totime(&object, ASN1_GENERALIZEDTIME); ac->notAfter = asn1totime(&object, ASN1_GENERALIZEDTIME);
break; break;
case AC_OBJ_ATTRIBUTE_TYPE: case AC_OBJ_ATTRIBUTE_TYPE:
type = known_oid(object); type = asn1_known_oid(object);
break; break;
case AC_OBJ_ATTRIBUTE_VALUE: case AC_OBJ_ATTRIBUTE_VALUE:
{ {
@@ -549,7 +549,7 @@ parse_ac(chunk_t blob, x509acert_t *ac)
} }
break; break;
case AC_OBJ_EXTN_ID: case AC_OBJ_EXTN_ID:
extn_oid = known_oid(object); extn_oid = asn1_known_oid(object);
break; break;
case AC_OBJ_CRITICAL: case AC_OBJ_CRITICAL:
critical = object.len && *object.ptr; critical = object.len && *object.ptr;
+39 -3
View File
@@ -116,7 +116,7 @@ asn1_algorithmIdentifier(int oid)
* position in the oid_names table is returned otherwise -1 is returned * position in the oid_names table is returned otherwise -1 is returned
*/ */
int int
known_oid(chunk_t object) asn1_known_oid(chunk_t object)
{ {
int oid = 0; int oid = 0;
@@ -136,14 +136,50 @@ known_oid(chunk_t object)
else else
{ {
if (oid_names[oid].next) if (oid_names[oid].next)
{
oid = oid_names[oid].next; oid = oid_names[oid].next;
}
else else
{
return OID_UNKNOWN; return OID_UNKNOWN;
}
} }
} }
return -1; return -1;
} }
/*
* Converts an known OID index to ASN.1 OID
*/
chunk_t
asn1_get_known_oid(int n)
{
chunk_t oid;
int i;
if (n < 0 || n >= OID_MAX)
{
return empty_chunk;
}
i = oid_names[n].level + 1;
oid.ptr = alloc_bytes(i, "known oid");
oid.len = i;
do
{
if (oid_names[n].level >= i)
{
n--;
continue;
}
oid.ptr[--i] = oid_names[n--].octet;
}
while (i > 0);
return oid;
}
/* /*
* Decodes the length in bytes of an ASN.1 object * Decodes the length in bytes of an ASN.1 object
*/ */
@@ -484,7 +520,7 @@ debug_asn1_simple_object(chunk_t object, asn1_t type, u_int cond)
switch (type) switch (type)
{ {
case ASN1_OID: case ASN1_OID:
oid = known_oid(object); oid = asn1_known_oid(object);
if (oid != OID_UNKNOWN) if (oid != OID_UNKNOWN)
{ {
DBG(DBG_PARSING, DBG(DBG_PARSING,
@@ -735,7 +771,7 @@ parse_algorithmIdentifier(chunk_t blob, int level0, chunk_t *parameters)
switch (objectID) switch (objectID)
{ {
case ALGORITHM_ID_ALG: case ALGORITHM_ID_ALG:
alg = known_oid(object); alg = asn1_known_oid(object);
break; break;
case ALGORITHM_ID_PARAMETERS: case ALGORITHM_ID_PARAMETERS:
if (parameters != NULL) if (parameters != NULL)
+2 -1
View File
@@ -117,7 +117,8 @@ extern const chunk_t ASN1_md5WithRSA_id;
extern const chunk_t ASN1_sha1WithRSA_id; extern const chunk_t ASN1_sha1WithRSA_id;
extern chunk_t asn1_algorithmIdentifier(int oid); extern chunk_t asn1_algorithmIdentifier(int oid);
extern int known_oid(chunk_t object); extern int asn1_known_oid(chunk_t object);
extern chunk_t asn1_get_known_oid(int n);
extern u_int asn1_length(chunk_t *blob); extern u_int asn1_length(chunk_t *blob);
extern void code_asn1_length(size_t length, chunk_t *code); extern void code_asn1_length(size_t length, chunk_t *code);
extern u_char* build_asn1_object(chunk_t *object, asn1_t type, size_t datalen); extern u_char* build_asn1_object(chunk_t *object, asn1_t type, size_t datalen);
+1 -1
View File
@@ -480,7 +480,7 @@ parse_x509crl(chunk_t blob, u_int level0, x509crl_t *crl)
case CRL_OBJ_CRL_ENTRY_EXTN_VALUE: case CRL_OBJ_CRL_ENTRY_EXTN_VALUE:
case CRL_OBJ_EXTN_VALUE: case CRL_OBJ_EXTN_VALUE:
{ {
u_int extn_oid = known_oid(extnID); u_int extn_oid = asn1_known_oid(extnID);
if (extn_oid == OID_CRL_REASON_CODE) if (extn_oid == OID_CRL_REASON_CODE)
{ {
+3 -3
View File
@@ -1134,7 +1134,7 @@ parse_basic_ocsp_response(chunk_t blob, int level0, response_t *res)
res->responses = object; res->responses = object;
break; break;
case BASIC_RESPONSE_EXT_ID: case BASIC_RESPONSE_EXT_ID:
extn_oid = known_oid(object); extn_oid = asn1_known_oid(object);
break; break;
case BASIC_RESPONSE_CRITICAL: case BASIC_RESPONSE_CRITICAL:
critical = object.len && *object.ptr; critical = object.len && *object.ptr;
@@ -1223,7 +1223,7 @@ parse_ocsp_response(chunk_t blob, response_t * res)
} }
break; break;
case OCSP_RESPONSE_TYPE: case OCSP_RESPONSE_TYPE:
ocspResponseType = known_oid(object); ocspResponseType = asn1_known_oid(object);
break; break;
case OCSP_RESPONSE: case OCSP_RESPONSE:
{ {
@@ -1303,7 +1303,7 @@ parse_ocsp_single_response(chunk_t blob, int level0, single_response_t *sres)
sres->nextUpdate = asn1totime(&object, ASN1_GENERALIZEDTIME); sres->nextUpdate = asn1totime(&object, ASN1_GENERALIZEDTIME);
break; break;
case SINGLE_RESPONSE_EXT_ID: case SINGLE_RESPONSE_EXT_ID:
extn_oid = known_oid(object); extn_oid = asn1_known_oid(object);
break; break;
case SINGLE_RESPONSE_CRITICAL: case SINGLE_RESPONSE_CRITICAL:
critical = object.len && *object.ptr; critical = object.len && *object.ptr;
+2 -2
View File
@@ -217,7 +217,7 @@ pkcs7_parse_contentInfo(chunk_t blob, u_int level0, contentInfo_t *cInfo)
if (objectID == PKCS7_INFO_TYPE) if (objectID == PKCS7_INFO_TYPE)
{ {
cInfo->type = known_oid(object); cInfo->type = asn1_known_oid(object);
if (cInfo->type < OID_PKCS7_DATA if (cInfo->type < OID_PKCS7_DATA
|| cInfo->type > OID_PKCS7_ENCRYPTED_DATA) || cInfo->type > OID_PKCS7_ENCRYPTED_DATA)
{ {
@@ -458,7 +458,7 @@ pkcs7_parse_envelopedData(chunk_t blob, chunk_t *data
) )
break; break;
case PKCS7_CONTENT_TYPE: case PKCS7_CONTENT_TYPE:
if (known_oid(object) != OID_PKCS7_DATA) if (asn1_known_oid(object) != OID_PKCS7_DATA)
{ {
plog("encrypted content not of type pkcs7 data"); plog("encrypted content not of type pkcs7 data");
goto failed; goto failed;
+7 -7
View File
@@ -562,7 +562,7 @@ dn_parse(chunk_t dn, chunk_t *str)
} }
/* print OID */ /* print OID */
oid_code = known_oid(oid); oid_code = asn1_known_oid(oid);
if (oid_code == OID_UNKNOWN) /* OID not found in list */ if (oid_code == OID_UNKNOWN) /* OID not found in list */
{ {
hex_str(oid, str); hex_str(oid, str);
@@ -877,7 +877,7 @@ same_dn(chunk_t a, chunk_t b)
/* printableStrings and email RDNs require uppercase comparison */ /* printableStrings and email RDNs require uppercase comparison */
if (type_a == type_b && (type_a == ASN1_PRINTABLESTRING || if (type_a == type_b && (type_a == ASN1_PRINTABLESTRING ||
(type_a == ASN1_IA5STRING && known_oid(oid_a) == OID_PKCS9_EMAIL))) (type_a == ASN1_IA5STRING && asn1_known_oid(oid_a) == OID_PKCS9_EMAIL)))
{ {
if (strncasecmp(value_a.ptr, value_b.ptr, value_b.len) != 0) if (strncasecmp(value_a.ptr, value_b.ptr, value_b.len) != 0)
{ {
@@ -955,7 +955,7 @@ match_dn(chunk_t a, chunk_t b, int *wildcards)
/* printableStrings and email RDNs require uppercase comparison */ /* printableStrings and email RDNs require uppercase comparison */
if (type_a == type_b && (type_a == ASN1_PRINTABLESTRING || if (type_a == type_b && (type_a == ASN1_PRINTABLESTRING ||
(type_a == ASN1_IA5STRING && known_oid(oid_a) == OID_PKCS9_EMAIL))) (type_a == ASN1_IA5STRING && asn1_known_oid(oid_a) == OID_PKCS9_EMAIL)))
{ {
if (strncasecmp(value_a.ptr, value_b.ptr, value_b.len) != 0) if (strncasecmp(value_a.ptr, value_b.ptr, value_b.len) != 0)
{ {
@@ -1553,7 +1553,7 @@ parse_otherName(chunk_t blob, int level0)
switch (objectID) switch (objectID)
{ {
case ON_OBJ_ID_TYPE: case ON_OBJ_ID_TYPE:
oid = known_oid(object); oid = asn1_known_oid(object);
break; break;
case ON_OBJ_VALUE: case ON_OBJ_VALUE:
if (oid == OID_XMPP_ADDR) if (oid == OID_XMPP_ADDR)
@@ -1809,7 +1809,7 @@ parse_authorityInfoAccess(chunk_t blob, int level0, chunk_t *accessLocation)
switch (objectID) switch (objectID)
{ {
case AUTH_INFO_ACCESS_METHOD: case AUTH_INFO_ACCESS_METHOD:
accessMethod = known_oid(object); accessMethod = asn1_known_oid(object);
break; break;
case AUTH_INFO_ACCESS_LOCATION: case AUTH_INFO_ACCESS_LOCATION:
{ {
@@ -1870,7 +1870,7 @@ parse_extendedKeyUsage(chunk_t blob, int level0)
return FALSE; return FALSE;
} }
if (objectID == EXT_KEY_USAGE_PURPOSE_ID if (objectID == EXT_KEY_USAGE_PURPOSE_ID
&& known_oid(object) == OID_OCSP_SIGNING) && asn1_known_oid(object) == OID_OCSP_SIGNING)
{ {
return TRUE; return TRUE;
} }
@@ -2027,7 +2027,7 @@ parse_x509cert(chunk_t blob, u_int level0, x509cert_t *cert)
cert->publicExponent = object; cert->publicExponent = object;
break; break;
case X509_OBJ_EXTN_ID: case X509_OBJ_EXTN_ID:
extn_oid = known_oid(object); extn_oid = asn1_known_oid(object);
break; break;
case X509_OBJ_CRITICAL: case X509_OBJ_CRITICAL:
critical = object.len && *object.ptr; critical = object.len && *object.ptr;