Ok, so after getting past the previous problems, the testca script failed.
Fixing this last problem allows the tests to successfully run to completion.
The problem was that the ca app didn't like the result it got from
ASN1_PRINTABLE_type() (apps/ca.c, line 1586) because the ASN1_PRINTABLE_type
function had been modified to expect EBCDIC strings, and the string being
tested is in ASCII. Since passing EBCDIC strings to a function named
"ASN1_PRINTABLE_type" doesn't make a lot of sense to me, I chose to remove
the EBCDIC part from crypto/asn1/a_print.c:

--- a_print.c   2002/08/28 23:52:53     1.1
+++ a_print.c   2002/08/29 00:05:50
@@ -116,27 +116,18 @@
        while ((*s) && (len-- != 0))
                {
                c= *(s++);
-#ifndef CHARSET_EBCDIC
-               if (!(  ((c >= 'a') && (c <= 'z')) ||
-                       ((c >= 'A') && (c <= 'Z')) ||
-                       (c == ' ') ||
-                       ((c >= '0') && (c <= '9')) ||
-                       (c == ' ') || (c == '\'') ||
-                       (c == '(') || (c == ')') ||
-                       (c == '+') || (c == ',') ||
-                       (c == '-') || (c == '.') ||
-                       (c == '/') || (c == ':') ||
-                       (c == '=') || (c == '?')))
-                       ia5=1;
                if (c&0x80)
+                       {
                        t61=1;
-#else
-               if (!isalnum(c) && (c != ' ') &&
-                   strchr("'()+,-./:=?", c) == NULL)
+                       break;
+                       }
+               if (!(  ((c > 0x40) && (c < 0x5b)) ||   /* AZ */
+                       ((c > 0x60) && (c < 0x7b)) ||   /* az */
+                       ((c > 0x2a) && (c < 0x3b)) ||   /* +,-./09: */
+                       (c == 0x20) || (c == 0x27) ||   /* SPC, ' */
+                       (c == 0x28) || (c == 0x29) ||   /* () */
+                       (c == 0x3d) || (c == 0x3f)))    /* =? */
                        ia5=1;
-               if (os_toascii[c] & 0x80)
-                       t61=1;
-#endif
                }
        if (t61) return(V_ASN1_T61STRING);
        if (ia5) return(V_ASN1_IA5STRING);


The output from testca is still a little dodgy, there are a few certificate
fields that are printed in ASCII that need to be translated to EBCDIC for
appearance's sake. But that's simple to fix; if you're interested I'll submit
patches for that later.

  -- Howard Chu
  Chief Architect, Symas Corp.       Director, Highland Sun
  http://www.symas.com               http://highlandsun.com/hyc
  Symas: Premier OpenSource Development and Support


______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
Development Mailing List                       [EMAIL PROTECTED]
Automated List Manager                           [EMAIL PROTECTED]

Reply via email to