Tolerate a SEQUENCE in DN components.
[openssl.git] / crypto / asn1 / a_print.c
index 3d7629089c9a6366d57f7bb66fb3fe4d05018830..d18e772320441eda7cfda018c4adcd87eab7dcf4 100644 (file)
 #include "cryptlib.h"
 #include <openssl/asn1.h>
 
-int i2d_ASN1_IA5STRING(ASN1_IA5STRING *a, unsigned char **pp)
-       { return(M_i2d_ASN1_IA5STRING(a,pp)); }
-
-ASN1_IA5STRING *d2i_ASN1_IA5STRING(ASN1_IA5STRING **a, unsigned char **pp,
-            long l)
-       { return(M_d2i_ASN1_IA5STRING(a,pp,l)); }
-
-ASN1_T61STRING *d2i_ASN1_T61STRING(ASN1_T61STRING **a, unsigned char **pp,
-            long l)
-       { return(M_d2i_ASN1_T61STRING(a,pp,l)); }
-
-ASN1_PRINTABLESTRING *d2i_ASN1_PRINTABLESTRING(ASN1_PRINTABLESTRING **a,
-            unsigned char **pp, long l)
-       { return(M_d2i_ASN1_PRINTABLESTRING(a,pp,
-            l)); }
-
-int i2d_ASN1_PRINTABLE(ASN1_STRING *a, unsigned char **pp)
-       { return(M_i2d_ASN1_PRINTABLE(a,pp)); }
-
-ASN1_STRING *d2i_ASN1_PRINTABLE(ASN1_STRING **a, unsigned char **pp,
-            long l)
-       { return(M_d2i_ASN1_PRINTABLE(a,pp,l)); }
-
-int ASN1_PRINTABLE_type(unsigned char *s, int len)
+int ASN1_PRINTABLE_type(const unsigned char *s, int len)
        {
        int c;
        int ia5=0;
@@ -95,6 +72,7 @@ int ASN1_PRINTABLE_type(unsigned char *s, int len)
        while ((*s) && (len-- != 0))
                {
                c= *(s++);
+#ifndef CHARSET_EBCDIC
                if (!(  ((c >= 'a') && (c <= 'z')) ||
                        ((c >= 'A') && (c <= 'Z')) ||
                        (c == ' ') ||
@@ -108,6 +86,13 @@ int ASN1_PRINTABLE_type(unsigned char *s, int len)
                        ia5=1;
                if (c&0x80)
                        t61=1;
+#else
+               if (!isalnum(c) && (c != ' ') &&
+                   strchr("'()+,-./:=?", c) == NULL)
+                       ia5=1;
+               if (os_toascii[c] & 0x80)
+                       t61=1;
+#endif
                }
        if (t61) return(V_ASN1_T61STRING);
        if (ia5) return(V_ASN1_IA5STRING);
@@ -140,18 +125,3 @@ int ASN1_UNIVERSALSTRING_to_string(ASN1_UNIVERSALSTRING *s)
        s->type=ASN1_PRINTABLE_type(s->data,s->length);
        return(1);
        }
-
-
-int i2d_DIRECTORYSTRING(ASN1_STRING *a, unsigned char **pp)
-       { return(M_i2d_DIRECTORYSTRING(a,pp)); }
-
-ASN1_STRING *d2i_DIRECTORYSTRING(ASN1_STRING **a, unsigned char **pp,
-            long l)
-       { return(M_d2i_DIRECTORYSTRING(a,pp,l)); }
-
-int i2d_DISPLAYTEXT(ASN1_STRING *a, unsigned char **pp)
-       { return(M_i2d_DISPLAYTEXT(a,pp)); }
-
-ASN1_STRING *d2i_DISPLAYTEXT(ASN1_STRING **a, unsigned char **pp,
-            long l)
-       { return(M_d2i_DISPLAYTEXT(a,pp,l)); }