diff options
author | Nikos Mavrogiannopoulos <nmav@gnutls.org> | 2002-06-21 12:44:08 +0000 |
---|---|---|
committer | Nikos Mavrogiannopoulos <nmav@gnutls.org> | 2002-06-21 12:44:08 +0000 |
commit | ba7cc447056604460f5470c42142f112743cdd5d (patch) | |
tree | ce31025017af028e8d7c5bd07380e7ada7611376 | |
parent | 04d8a11897c6798f2f9a055cc67d891e4887dd60 (diff) | |
download | gnutls-ba7cc447056604460f5470c42142f112743cdd5d.tar.gz |
*** empty log message ***
-rw-r--r-- | lib/gnutls_x509.c | 81 |
1 files changed, 35 insertions, 46 deletions
diff --git a/lib/gnutls_x509.c b/lib/gnutls_x509.c index 585cc81640..ce483844a9 100644 --- a/lib/gnutls_x509.c +++ b/lib/gnutls_x509.c @@ -54,24 +54,25 @@ int gnutls_x509_pkcs7_extract_certificate_count(const gnutls_datum * pkcs7_struc typedef struct _oid2string { const char * OID; const char * DESC; + int choice; int printable; } oid2string; static oid2string OID2STR[] = { - {"2 5 4 6", "X520countryName", 1}, - {"2 5 4 10", "X520OrganizationName", 1}, - {"2 5 4 11", "X520OrganizationalUnitName", 1}, - {"2 5 4 3", "X520CommonName", 1}, - {"2 5 4 7", "X520LocalityName", 1}, - {"2 5 4 8", "X520StateOrProvinceName", 1}, - {"1 2 840 113549 1 9 1", "Pkcs9email", 1}, - {"1 2 840 113549 1 1 1", "rsaEncryption", 0}, - {"1 2 840 113549 1 1 2", "md2WithRSAEncryption", 0}, - {"1 2 840 113549 1 1 4", "md5WithRSAEncryption", 0}, - {"1 2 840 113549 1 1 5", "sha1WithRSAEncryption", 0}, - {"1 2 840 10040 4 3", "id-dsa-with-sha1", 0}, - {"1 2 840 10040 4 1", "id-dsa", 0}, - {NULL, NULL} + {"2 5 4 6", "X520countryName", 0, 1}, + {"2 5 4 10", "X520OrganizationName", 1, 1}, + {"2 5 4 11", "X520OrganizationalUnitName", 1, 1}, + {"2 5 4 3", "X520CommonName", 1, 1}, + {"2 5 4 7", "X520LocalityName", 1, 1}, + {"2 5 4 8", "X520StateOrProvinceName", 1, 1}, + {"1 2 840 113549 1 9 1", "Pkcs9email", 0, 1}, + {"1 2 840 113549 1 1 1", "rsaEncryption", 0, 0}, + {"1 2 840 113549 1 1 2", "md2WithRSAEncryption", 0, 0}, + {"1 2 840 113549 1 1 4", "md5WithRSAEncryption", 0, 0}, + {"1 2 840 113549 1 1 5", "sha1WithRSAEncryption", 0, 0}, + {"1 2 840 10040 4 3", "id-dsa-with-sha1", 0, 0}, + {"1 2 840 10040 4 1", "id-dsa", 0, 0}, + {NULL} }; int _gnutls_x509_oid_data_printable( const char* OID) { @@ -86,6 +87,18 @@ int i = 0; return 0; } +int _gnutls_x509_oid_data_choice( const char* OID) { +int i = 0; + + do { + if ( strcmp(OID2STR[i].OID, OID)==0) + return OID2STR[i].choice; + i++; + } while( OID2STR[i].OID != NULL); + + return 0; +} + const char* _gnutls_x509_oid2string( const char* OID) { int i = 0; @@ -98,12 +111,15 @@ int i = 0; return NULL; } +/* This function will convert an attribute value, specified by the OID, + * to a string. + */ int _gnutls_x509_attribute_type2string( const char* OID, void* value, int value_size, char * res, int res_size) { int result; char str[1024], tmpname[1024]; -char* TYPE = NULL, *ANAME = NULL; +const char* ANAME = NULL; int CHOICE = -1, len = -1; ASN1_TYPE tmpasn; @@ -114,37 +130,10 @@ ASN1_TYPE tmpasn; res[0] = 0; - if (strcmp( OID, "2 5 4 6") == 0) { - ANAME = "X520countryName"; - TYPE = "countryName"; - CHOICE = 0; - } else if (strcmp( OID, "2 5 4 10") == 0) { - ANAME = "X520OrganizationName"; - TYPE = "OrganizationName"; - CHOICE = 1; - } else if (strcmp( OID, "2 5 4 11") == 0) { - ANAME = "X520OrganizationalUnitName"; - TYPE = "OrganizationalUnitName", - CHOICE = 1; - } else if (strcmp( OID, "2 5 4 3") == 0) { - ANAME = "X520CommonName"; - TYPE = "CommonName"; - CHOICE = 1; - } else if (strcmp( OID, "2 5 4 7") == 0) { - ANAME = "X520LocalityName"; - TYPE = "LocalityName"; - CHOICE = 1; - } else if (strcmp( OID, "2 5 4 8") == 0) { - ANAME = "X520StateOrProvinceName"; - TYPE = "StateOrProvinceName"; - CHOICE = 1; - } else if (strcmp( OID, "1 2 840 113549 1 9 1") == 0) { - ANAME = "Pkcs9email"; - TYPE = "emailAddress"; - CHOICE = 0; - } + ANAME = _gnutls_x509_oid2string( OID); + CHOICE = _gnutls_x509_oid_data_choice( OID); - if (ANAME==NULL || TYPE == NULL) { + if (ANAME==NULL) { gnutls_assert(); return GNUTLS_E_UNKNOWN_ERROR; } @@ -152,7 +141,7 @@ ASN1_TYPE tmpasn; _gnutls_str_cpy(str, sizeof(str), "PKIX1."); _gnutls_str_cat(str, sizeof(str), ANAME); _gnutls_str_cpy( tmpname, sizeof(tmpname), "temp-structure-"); - _gnutls_str_cat( tmpname, sizeof(tmpname), TYPE); + _gnutls_str_cat( tmpname, sizeof(tmpname), ANAME); if ((result = _gnutls_asn1_create_element(_gnutls_get_pkix(), str, |