diff options
author | Nikos Mavrogiannopoulos <nmav@gnutls.org> | 2001-12-09 12:03:33 +0000 |
---|---|---|
committer | Nikos Mavrogiannopoulos <nmav@gnutls.org> | 2001-12-09 12:03:33 +0000 |
commit | 6a4cdef790bdba1a5fa7142da1d499af852eaf65 (patch) | |
tree | 150f028444ae3dfeabe78271e5de4730ec0ef6aa | |
parent | bc2458bf5224c86fadd98b85c42a75f68838af58 (diff) | |
download | gnutls-6a4cdef790bdba1a5fa7142da1d499af852eaf65.tar.gz |
GET_CN() now works. (affects debug mode only)
-rw-r--r-- | lib/debug.c | 11 | ||||
-rw-r--r-- | lib/gnutls_cert.c | 17 |
2 files changed, 23 insertions, 5 deletions
diff --git a/lib/debug.c b/lib/debug.c index 1b46a9eb47..75b7cda437 100644 --- a/lib/debug.c +++ b/lib/debug.c @@ -219,8 +219,17 @@ static char str[512]; } +int gnutls_x509pki_extract_certificate_dn( const gnutls_datum*, gnutls_DN*); + const char* GET_CN( gnutls_datum cert) { - return NULL; /* FIXME */ +static gnutls_DN dn; + + if (gnutls_x509pki_extract_certificate_dn( &cert, &dn) >= 0) + return &dn.common_name[0]; /* FIXME */ + else + return NULL; + +//fprintf(stderr, "CN: %s\n", dn.common_name); } #endif diff --git a/lib/gnutls_cert.c b/lib/gnutls_cert.c index d11f1a15ba..3455a06a7d 100644 --- a/lib/gnutls_cert.c +++ b/lib/gnutls_cert.c @@ -828,11 +828,17 @@ int _gnutls_cert2gnutlsCert(gnutls_cert * gCert, gnutls_datum derCert) gCert->valid = 1; + if (gnutls_set_datum(&gCert->raw, derCert.data, derCert.size) < 0) { + gnutls_assert(); + return GNUTLS_E_MEMORY_ERROR; + } + if (asn1_create_structure (_gnutls_get_pkix(), "PKIX1Implicit88.Certificate", &c2, "certificate2") != ASN_OK) { gnutls_assert(); + gnutls_free_datum( &gCert->raw); return GNUTLS_E_ASN1_ERROR; } @@ -844,6 +850,7 @@ int _gnutls_cert2gnutlsCert(gnutls_cert * gCert, gnutls_datum derCert) #endif gnutls_assert(); asn1_delete_structure(c2); + gnutls_free_datum( &gCert->raw); return GNUTLS_E_ASN1_PARSING_ERROR; } @@ -857,6 +864,7 @@ int _gnutls_cert2gnutlsCert(gnutls_cert * gCert, gnutls_datum derCert) if (result != ASN_OK) { gnutls_assert(); asn1_delete_structure(c2); + gnutls_free_datum( &gCert->raw); return GNUTLS_E_ASN1_PARSING_ERROR; } @@ -876,6 +884,7 @@ int _gnutls_cert2gnutlsCert(gnutls_cert * gCert, gnutls_datum derCert) if (result != ASN_OK) { gnutls_assert(); asn1_delete_structure(c2); + gnutls_free_datum( &gCert->raw); return GNUTLS_E_ASN1_PARSING_ERROR; } @@ -883,6 +892,7 @@ int _gnutls_cert2gnutlsCert(gnutls_cert * gCert, gnutls_datum derCert) gnutls_assert(); /* internal error. Increase the MPIs in params */ asn1_delete_structure(c2); + gnutls_free_datum( &gCert->raw); return GNUTLS_E_UNKNOWN_ERROR; } @@ -890,6 +900,7 @@ int _gnutls_cert2gnutlsCert(gnutls_cert * gCert, gnutls_datum derCert) _read_rsa_params(str, len / 8, gCert->params)) < 0) { gnutls_assert(); asn1_delete_structure(c2); + gnutls_free_datum( &gCert->raw); return result; } @@ -915,6 +926,7 @@ int _gnutls_cert2gnutlsCert(gnutls_cert * gCert, gnutls_datum derCert) if ((len % 8) != 0) { gnutls_assert(); asn1_delete_structure(c2); + gnutls_free_datum( &gCert->raw); return GNUTLS_E_UNIMPLEMENTED_FEATURE; } len /= 8; /* convert to bytes */ @@ -933,15 +945,12 @@ int _gnutls_cert2gnutlsCert(gnutls_cert * gCert, gnutls_datum derCert) gCert)) < 0) { gnutls_assert(); asn1_delete_structure(c2); + gnutls_free_datum( &gCert->raw); return result; } asn1_delete_structure(c2); - if (gnutls_set_datum(&gCert->raw, derCert.data, derCert.size) < 0) { - gnutls_assert(); - return GNUTLS_E_MEMORY_ERROR; - } gCert->valid = 0; /* if we got until here * the certificate is valid. |