Initial support for Certificate Policies extension: print out works but setting
[oweals/openssl.git] / crypto / asn1 / n_pkey.c
index 6353d18c53a6bffb662928c81097a30f1f279590..d9bf41773831ef7df27f24c5b06e2a0f8256993a 100644 (file)
@@ -1,5 +1,5 @@
 /* crypto/asn1/n_pkey.c */
-/* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com)
+/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
  * All rights reserved.
  *
  * This package is an SSL implementation written
@@ -75,20 +75,17 @@ typedef struct netscape_pkey_st
        } NETSCAPE_PKEY;
 
 /*
- * ASN1err(ASN1_F_D2I_NETSCAPE_RSA,ASN1_R_LENGTH_MISMATCH);
+ * ASN1err(ASN1_F_D2I_NETSCAPE_RSA,ERR_R_ASN1_LENGTH_MISMATCH);
  * ASN1err(ASN1_F_D2I_NETSCAPE_RSA,ASN1_R_DECODING_ERROR);
  * ASN1err(ASN1_F_D2I_NETSCAPE_PKEY,ASN1_R_DECODING_ERROR);
  * ASN1err(ASN1_F_NETSCAPE_PKEY_NEW,ASN1_R_DECODING_ERROR);
  */
 #ifndef NOPROTO
-static RSA *d2i_Netscape_RSA_2(RSA **a, unsigned char **pp, long length,
-       int (*cb)());
 static int i2d_NETSCAPE_PKEY(NETSCAPE_PKEY *a, unsigned char **pp);
 static NETSCAPE_PKEY *d2i_NETSCAPE_PKEY(NETSCAPE_PKEY **a,unsigned char **pp, long length);
 static NETSCAPE_PKEY *NETSCAPE_PKEY_new(void);
 static void NETSCAPE_PKEY_free(NETSCAPE_PKEY *);
 #else
-static RSA *d2i_Netscape_RSA_2();
 static int i2d_NETSCAPE_PKEY();
 static NETSCAPE_PKEY *d2i_NETSCAPE_PKEY();
 static NETSCAPE_PKEY *NETSCAPE_PKEY_new();
@@ -141,7 +138,9 @@ int (*cb)();
        l[2]=i2d_X509_ALGOR(alg,NULL);
        l[3]=ASN1_object_size(1,l[2]+l[1],V_ASN1_SEQUENCE);
 
+#ifndef CONST_STRICT
        os.data=(unsigned char *)"private-key";
+#endif
        os.length=11;
        l[4]=i2d_ASN1_OCTET_STRING(&os,NULL);
 
@@ -183,6 +182,8 @@ int (*cb)();
        EVP_BytesToKey(EVP_rc4(),EVP_md5(),NULL,buf,
                strlen((char *)buf),1,key,NULL);
        memset(buf,0,256);
+
+       EVP_CIPHER_CTX_init(&ctx);
        EVP_EncryptInit(&ctx,EVP_rc4(),key,NULL);
        EVP_EncryptUpdate(&ctx,os2.data,&i,os2.data,os2.length);
        EVP_EncryptFinal(&ctx,&(os2.data[i]),&j);
@@ -196,7 +197,7 @@ int (*cb)();
        i2d_ASN1_OCTET_STRING(&os2,&p);
        ret=l[5];
 err:
-       if (os2.data != NULL) Free((char *)os2.data);
+       if (os2.data != NULL) Free(os2.data);
        if (alg != NULL) X509_ALGOR_free(alg);
        if (pkey != NULL) NETSCAPE_PKEY_free(pkey);
        r=r;
@@ -234,7 +235,7 @@ int (*cb)();
        M_ASN1_D2I_Finish(a,RSA_free,ASN1_F_D2I_NETSCAPE_RSA);
        }
 
-static RSA *d2i_Netscape_RSA_2(a,pp,length,cb)
+RSA *d2i_Netscape_RSA_2(a,pp,length,cb)
 RSA **a;
 unsigned char **pp;
 long length;
@@ -250,7 +251,7 @@ int (*cb)();
        ASN1_OCTET_STRING *os=NULL;
        ASN1_CTX c;
 
-       c.error=ASN1_R_ERROR_STACK;
+       c.error=ERR_R_NESTED_ASN1_ERROR;
        c.pp=pp;
 
        M_ASN1_D2I_Init();
@@ -274,6 +275,8 @@ int (*cb)();
        EVP_BytesToKey(EVP_rc4(),EVP_md5(),NULL,buf,
                strlen((char *)buf),1,key,NULL);
        memset(buf,0,256);
+
+       EVP_CIPHER_CTX_init(&ctx);
        EVP_DecryptInit(&ctx,EVP_rc4(),key,NULL);
        EVP_DecryptUpdate(&ctx,os->data,&i,os->data,os->length);
        EVP_DecryptFinal(&ctx,&(os->data[i]),&j);
@@ -341,6 +344,7 @@ long length;
 static NETSCAPE_PKEY *NETSCAPE_PKEY_new()
        {
        NETSCAPE_PKEY *ret=NULL;
+       ASN1_CTX c;
 
        M_ASN1_New_Malloc(ret,NETSCAPE_PKEY);
        M_ASN1_New(ret->version,ASN1_INTEGER_new);