summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNikos Mavrogiannopoulos <nmav@gnutls.org>2001-12-09 12:03:33 +0000
committerNikos Mavrogiannopoulos <nmav@gnutls.org>2001-12-09 12:03:33 +0000
commit6a4cdef790bdba1a5fa7142da1d499af852eaf65 (patch)
tree150f028444ae3dfeabe78271e5de4730ec0ef6aa
parentbc2458bf5224c86fadd98b85c42a75f68838af58 (diff)
downloadgnutls-6a4cdef790bdba1a5fa7142da1d499af852eaf65.tar.gz
GET_CN() now works. (affects debug mode only)
-rw-r--r--lib/debug.c11
-rw-r--r--lib/gnutls_cert.c17
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.