/* 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
} 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();
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);
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);
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;
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;
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();
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);
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);