Hi all,

I compiled openssl on a mainframe (mainframe emulation using Hercules
(MVS), in the USS (Unix System Services) subsystem), there IBM uses an
EBCDIC charset.

I receive a "Bad time value" when I want to check the peer certificate
(the peer certificate coming from a LINUX machine).

I think that the code in ./crypto/asn1/t_x509.c, in the method
ASN1_UTCTIME_print does not work with charsets where '0' and '9' have
other values as their ASCII values? E.g. the following code from the
method looks like this:

for (i=0; i<10; i++)
  if ((v[i] > '9') || (v[i] < '0')) goto err;

which is translated on a machine with ISO-charset to this:

for (i=0; i<10; i++)
  if ((v[i] > 0x39) || (v[i] < 0x30)) goto err;

but on a machine using EBCDIC (IBM-1047) charset, it is translated to
this:

for (i=0; i<10; i++)
  if ((v[i] > 0xf9) || (v[i] < 0xf0)) goto err;

Shouldn't you use the numbers instead of the contants '0' and '9'? I'm
just now compiling the code using the values 0x39 and 0x30 ... and it
works insofar as the output is now correct, but I still get the error:

26.07.2007 16:13:30,139 [t3.comm.OpenSSLHelper] [ERROR]   err: 13(format
error in certificate's notBefore field)

Therefore, I assume that the constants '0' and '9' are used in other
places as well?

Any help would be appreciated.
Michael
______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
Development Mailing List                       [email protected]
Automated List Manager                           [EMAIL PROTECTED]

Reply via email to