From 85f95a41baefa4e6f47ffccb4e10d7a169ab6f4f Mon Sep 17 00:00:00 2001 From: "thayes%netscape.com" Date: Thu, 28 Sep 2000 21:29:14 +0000 Subject: [PATCH] Use T61 String for any ASCII characters that don't meet the PrintableString requirements in name attribute values. git-svn-id: svn://10.0.0.236/trunk@80078 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/security/nss/lib/certdb/alg1485.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/mozilla/security/nss/lib/certdb/alg1485.c b/mozilla/security/nss/lib/certdb/alg1485.c index f9b2c7ae51b..628f79696a0 100644 --- a/mozilla/security/nss/lib/certdb/alg1485.c +++ b/mozilla/security/nss/lib/certdb/alg1485.c @@ -221,6 +221,21 @@ IsPrintable(unsigned char *data, unsigned len) return PR_TRUE; } +static PRBool +Is7Bit(unsigned char *data, unsigned len) +{ + unsigned char ch, *end; + + end = data + len; + while (data < end) { + ch = *data++; + if ((ch & 0x80)) { + return PR_FALSE; + } + } + return PR_TRUE; +} + static void skipSpace(char **pbp, char *endptr) { @@ -419,6 +434,8 @@ CERT_ParseRFC1485AVA(PRArenaPool *arena, char **pbp, char *endptr, /* Hack -- for rationale see X.520 DirectoryString defn */ if (IsPrintable((unsigned char*)valBuf, valLen)) { vt = SEC_ASN1_PRINTABLE_STRING; + } else if (Is7Bit((unsigned char *)valBuf, valLen)) { + vt = SEC_ASN1_T61_STRING; } else { vt = SEC_ASN1_UNIVERSAL_STRING; }