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]