Hi all,

When you do a

$ openssl x509 -text < cert.pem

the format of the subject and issuer lines is a mix of "old" and "new"
styles, like this:

Subject: C=SE, L=Bollnaes, CN=Peter 'Luna'
[EMAIL PROTECTED]/UID=luna

This happens for every "object short name" that is longer than two
chars.
Here is a patch to make it print like this:

Subject: C=SE, L=Bollnaes, CN=Peter 'Luna' Runestig,
[EMAIL PROTECTED], UID=luna

diff -ur openssl-SNAP-20001219.orig/crypto/asn1/t_x509.c
openssl-SNAP-20001219/crypto/asn1/t_x509.c
--- openssl-SNAP-20001219.orig/crypto/asn1/t_x509.c     Thu Dec 14
20:01:06 2000
+++ openssl-SNAP-20001219/crypto/asn1/t_x509.c  Wed Dec 20 13:48:40 2000
@@ -429,6 +429,27 @@
        return(0);
        }
 
+static int is_obj_name(const char *s)
+{
+#define MAX_OBJ_NAME 5
+       char *ss, *eq = strchr(s, '=');
+       if (eq == NULL)
+               return 0;
+       if ((eq - s) > MAX_OBJ_NAME)
+               return 0;
+       for (ss = s; ss < eq; ss++) {
+#ifndef CHARSET_EBCDIC
+               if (!( ((*ss >= 'A') && (*ss <= 'Z')) ||
+                               ((*ss >= 'a') && (*ss <= 'z')) ))
+                       return 0;
+#else
+       if (!( isupper(*ss) || islower(*ss) ))
+               return 0;
+#endif /* CHARSET_EBCDIC */
+       }
+       return 1;
+}
+
 int X509_NAME_print(BIO *bp, X509_NAME *name, int obase)
        {
        char *s,*c;
@@ -444,23 +465,7 @@
        c=s;
        for (;;)
                {
-#ifndef CHARSET_EBCDIC
-               if (    ((*s == '/') &&
-                               ((s[1] >= 'A') && (s[1] <= 'Z') && (
-                                       (s[2] == '=') ||
-                                       ((s[2] >= 'A') && (s[2] <= 'Z')
&&
-                                       (s[3] == '='))
-                                ))) ||
-                       (*s == '\0'))
-#else
-               if (    ((*s == '/') &&
-                               (isupper(s[1]) && (
-                                       (s[2] == '=') ||
-                                       (isupper(s[2]) &&
-                                       (s[3] == '='))
-                                ))) ||
-                       (*s == '\0'))
-#endif
+               if ( ((*s == '/') && is_obj_name(s+1)) || (*s == '\0'))
                        {
                        if ((l <= 0) && !first)
                                {

-- 
Peter 'Luna' Runestig (fd. Altberg), Sweden <[EMAIL PROTECTED]>
PGP Key ID: 0xD07BBE13
Fingerprint: 7B5C 1F48 2997 C061 DE4B  42EA CB99 A35C D07B BE13
AOL Instant Messenger Screenname: PRunestig
______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
Development Mailing List                       [EMAIL PROTECTED]
Automated List Manager                           [EMAIL PROTECTED]

Reply via email to