summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Josefsson <simon@josefsson.org>2007-02-12 13:36:02 +0000
committerSimon Josefsson <simon@josefsson.org>2007-02-12 13:36:02 +0000
commit2dc387513ac281abb2c79ef1aef10dc925d1a1ec (patch)
treeca7637a22ccaa38c31119df28b1786a93386ba19
parent04d87c91d9f6504bbe38d30f68cca1148df82094 (diff)
downloadgnutls-2dc387513ac281abb2c79ef1aef10dc925d1a1ec.tar.gz
Better printing of XMPP SAN.
-rw-r--r--lib/x509/output.c78
1 files changed, 43 insertions, 35 deletions
diff --git a/lib/x509/output.c b/lib/x509/output.c
index e8d8127915..2fb926953c 100644
--- a/lib/x509/output.c
+++ b/lib/x509/output.c
@@ -414,45 +414,53 @@ print_san (gnutls_string * str, gnutls_x509_crt_t cert, int san_idx)
break;
case GNUTLS_SAN_OTHERNAME:
- addf (str, "\t\t\totherName:\n\t\t\tDER: ");
- hexprint (str, buffer, size);
- addf (str, "\n\t\t\tASCII: ");
- asciiprint (str, buffer, size);
- addf (str, "\n");
-
- gnutls_free (buffer);
+ {
+ char *oid;
+ size_t oidsize;
- size = 0;
- err = gnutls_x509_crt_get_subject_alt_othername_oid
- (cert, san_idx, buffer, &size);
- if (err != GNUTLS_E_SHORT_MEMORY_BUFFER)
- {
- addf (str, "error: get_subject_alt_othername_oid: %s\n",
- gnutls_strerror (err));
- return;
- }
+ oidsize = 0;
+ err = gnutls_x509_crt_get_subject_alt_othername_oid
+ (cert, san_idx, oid, &oidsize);
+ if (err != GNUTLS_E_SHORT_MEMORY_BUFFER)
+ {
+ gnutls_free (buffer);
+ addf (str, "error: get_subject_alt_othername_oid: %s\n",
+ gnutls_strerror (err));
+ return;
+ }
- buffer = gnutls_malloc (size);
- if (!buffer)
- {
- addf (str, "error: malloc: %s\n", gnutls_strerror (err));
- return;
- }
+ oid = gnutls_malloc (oidsize);
+ if (!oid)
+ {
+ gnutls_free (buffer);
+ addf (str, "error: malloc: %s\n", gnutls_strerror (err));
+ return;
+ }
- err = gnutls_x509_crt_get_subject_alt_othername_oid
- (cert, san_idx, buffer, &size);
- if (err < 0)
- {
- gnutls_free (buffer);
- addf (str, "error: get_subject_alt_othername_oid2: %s\n",
- gnutls_strerror (err));
- return;
- }
+ err = gnutls_x509_crt_get_subject_alt_othername_oid
+ (cert, san_idx, oid, &oidsize);
+ if (err < 0)
+ {
+ gnutls_free (buffer);
+ gnutls_free (oid);
+ addf (str, "error: get_subject_alt_othername_oid2: %s\n",
+ gnutls_strerror (err));
+ return;
+ }
- addf (str, "\t\t\t\tOID: %.*s", size, buffer);
- if (err == GNUTLS_SAN_OTHERNAME_XMPP)
- addf (str, " (id-on-xmppAddr)");
- addf (str, "\n");
+ if (err == GNUTLS_SAN_OTHERNAME_XMPP)
+ addf (str, "\t\t\tXMPP Address: %.*s\n", size, buffer);
+ else
+ {
+ addf (str, "\t\t\totherName OID: %.*s\n", oidsize, oid);
+ addf (str, "\t\t\totherName DER: ");
+ hexprint (str, buffer, size);
+ addf (str, "\n\t\t\totherName ASCII: ");
+ asciiprint (str, buffer, size);
+ addf (str, "\n");
+ }
+ gnutls_free (oid);
+ }
break;
default: