EBCDIC support.
[openssl.git] / crypto / x509v3 / v3_ia5.c
index 81cc9baef00e8bcc02a73f2e5147c402225a6099..af3525f33e7213eed0fd81ffcdca36c600be5284 100644 (file)
 #include <openssl/conf.h>
 #include <openssl/x509v3.h>
 
-#ifndef NOPROTO
-static ASN1_IA5STRING *ia5string_new(void);
 static char *i2s_ASN1_IA5STRING(X509V3_EXT_METHOD *method, ASN1_IA5STRING *ia5);
 static ASN1_IA5STRING *s2i_ASN1_IA5STRING(X509V3_EXT_METHOD *method, X509V3_CTX *ctx, char *str);
-#else
-static ASN1_IA5STRING *ia5string_new();
-static char *i2s_ASN1_IA5STRING();
-static ASN1_IA5STRING *s2i_ASN1_IA5STRING();
-#endif
-
 X509V3_EXT_METHOD v3_ns_ia5_list[] = { 
 EXT_IA5STRING(NID_netscape_base_url),
 EXT_IA5STRING(NID_netscape_revocation_url),
@@ -85,11 +77,6 @@ EXT_END
 };
 
 
-static ASN1_IA5STRING *ia5string_new(void)
-{
-       return ASN1_IA5STRING_new();
-}
-
 static char *i2s_ASN1_IA5STRING(X509V3_EXT_METHOD *method,
             ASN1_IA5STRING *ia5)
 {
@@ -109,12 +96,15 @@ static ASN1_IA5STRING *s2i_ASN1_IA5STRING(X509V3_EXT_METHOD *method,
                X509V3err(X509V3_F_S2I_ASN1_IA5STRING,X509V3_R_INVALID_NULL_ARGUMENT);
                return NULL;
        }
-       if(!(ia5 = ASN1_IA5STRING_new())) goto err;
+       if(!(ia5 = M_ASN1_IA5STRING_new())) goto err;
        if(!ASN1_STRING_set((ASN1_STRING *)ia5, (unsigned char*)str,
                            strlen(str))) {
-               ASN1_IA5STRING_free(ia5);
+               M_ASN1_IA5STRING_free(ia5);
                goto err;
        }
+#ifdef CHARSET_EBCDIC
+        ebcdic2ascii(ia5->data, ia5->data, ia5->length);
+#endif /*CHARSET_EBCDIC*/
        return ia5;
        err:
        X509V3err(X509V3_F_S2I_ASN1_IA5STRING,ERR_R_MALLOC_FAILURE);