]> git.ipfire.org Git - thirdparty/gnutls.git/commitdiff
Better printing of XMPP SAN.
authorSimon Josefsson <simon@josefsson.org>
Mon, 12 Feb 2007 13:36:02 +0000 (13:36 +0000)
committerSimon Josefsson <simon@josefsson.org>
Mon, 12 Feb 2007 13:36:02 +0000 (13:36 +0000)
lib/x509/output.c

index e8d81279158ba42986b72c61a87cea5df090f4a2..2fb926953c4b1b056c7d0ff1a27bdb4edae426b2 100644 (file)
@@ -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: