Constify DSA-related code.
authorRichard Levitte <levitte@openssl.org>
Tue, 7 Nov 2000 13:54:39 +0000 (13:54 +0000)
committerRichard Levitte <levitte@openssl.org>
Tue, 7 Nov 2000 13:54:39 +0000 (13:54 +0000)
24 files changed:
crypto/asn1/d2i_dsap.c
crypto/asn1/d2i_pr.c
crypto/asn1/d2i_pu.c
crypto/asn1/d2i_s_pr.c
crypto/asn1/d2i_s_pu.c
crypto/asn1/i2d_dsap.c
crypto/asn1/i2d_s_pr.c
crypto/asn1/i2d_s_pu.c
crypto/asn1/t_pkey.c
crypto/asn1/x_pubkey.c
crypto/dsa/dsa.h
crypto/dsa/dsa_asn1.c
crypto/dsa/dsa_gen.c
crypto/dsa/dsa_lib.c
crypto/dsa/dsa_ossl.c
crypto/dsa/dsa_vrf.c
crypto/engine/engine.h
crypto/engine/engine_int.h
crypto/engine/engine_list.c
crypto/engine/hw_atalla.c
crypto/engine/hw_cswift.c
crypto/engine/hw_ncipher.c
crypto/engine/hw_nuron.c
crypto/evp/evp_pkey.c

index 9d4dea6145aaef0c0d224b222a2f74efd67d9a1d..d97330791c2adfef1863c9179fb14b7e0e7988a6 100644 (file)
@@ -68,7 +68,7 @@
 #define d2i_ASN1_INTEGER d2i_ASN1_UINTEGER
 #endif
 
-DSA *d2i_DSAparams(DSA **a, unsigned char **pp, long length)
+DSA *d2i_DSAparams(DSA **a, const unsigned char **pp, long length)
        {
        int i=ERR_R_NESTED_ASN1_ERROR;
        ASN1_INTEGER *bs=NULL;
index 6c3096d6ff574c5d2ebe99df870a40711f85ecc0..31584fe090c6ab61115c872c5449c78053b96335 100644 (file)
@@ -94,7 +94,8 @@ EVP_PKEY *d2i_PrivateKey(int type, EVP_PKEY **a, unsigned char **pp,
 #endif
 #ifndef NO_DSA
        case EVP_PKEY_DSA:
-               if ((ret->pkey.dsa=d2i_DSAPrivateKey(NULL,pp,length)) == NULL)
+               if ((ret->pkey.dsa=d2i_DSAPrivateKey(NULL,
+                       (const unsigned char **)pp,length)) == NULL) /* TMP UGLY CAST */
                        {
                        ASN1err(ASN1_F_D2I_PRIVATEKEY,ERR_R_ASN1_LIB);
                        goto err;
index fdbc0ac9e8192d1364d522f32be7c8f883d530c7..9eedde3de4168fa84e07e3c84de3bc4d532c50d2 100644 (file)
@@ -94,7 +94,8 @@ EVP_PKEY *d2i_PublicKey(int type, EVP_PKEY **a, unsigned char **pp,
 #endif
 #ifndef NO_DSA
        case EVP_PKEY_DSA:
-               if ((ret->pkey.dsa=d2i_DSAPublicKey(NULL,pp,length)) == NULL)
+               if ((ret->pkey.dsa=d2i_DSAPublicKey(NULL,
+                       (const unsigned char **)pp,length)) == NULL) /* TMP UGLY CAST */
                        {
                        ASN1err(ASN1_F_D2I_PUBLICKEY,ERR_R_ASN1_LIB);
                        goto err;
index 55d5802d702f220cb97fb225b88fab8093ddb95b..4722b264583c5f7483d2356a47a570a0c297f036 100644 (file)
@@ -66,7 +66,7 @@
 #include <openssl/objects.h>
 #include <openssl/asn1_mac.h>
 
-DSA *d2i_DSAPrivateKey(DSA **a, unsigned char **pp, long length)
+DSA *d2i_DSAPrivateKey(DSA **a, const unsigned char **pp, long length)
        {
        int i=ASN1_R_PARSING;
        ASN1_INTEGER *bs=NULL;
index 0b7d2fafccc9780333a6247ecdbf63c55d710da8..4d1a772e8c0ccc3e063fecd879d7aabd4aaa2a86 100644 (file)
@@ -70,7 +70,7 @@
 #define d2i_ASN1_INTEGER d2i_ASN1_UINTEGER
 #endif
 
-DSA *d2i_DSAPublicKey(DSA **a, unsigned char **pp, long length)
+DSA *d2i_DSAPublicKey(DSA **a, const unsigned char **pp, long length)
        {
        int i=ASN1_R_PARSING;
        ASN1_INTEGER *bs=NULL;
index 157fb43893fcf7f7f4603b0874b43e93e0686715..028957992e41bc1f7fea518f4b5c15840a7bcd0c 100644 (file)
@@ -63,7 +63,7 @@
 #include <openssl/asn1_mac.h>
 #include <openssl/dsa.h>
 
-int i2d_DSAparams(DSA *a, unsigned char **pp)
+int i2d_DSAparams(const DSA *a, unsigned char **pp)
        {
        BIGNUM *num[3];
        ASN1_INTEGER bs;
index 9922952ad77bba8e340f446b7f6891d192d734a9..124ad982859a5a1551a09c46444836513fa8d045 100644 (file)
@@ -64,7 +64,7 @@
 #include <openssl/objects.h>
 #include <openssl/asn1_mac.h>
 
-int i2d_DSAPrivateKey(DSA *a, unsigned char **pp)
+int i2d_DSAPrivateKey(const DSA *a, unsigned char **pp)
        {
        BIGNUM *num[6];
        unsigned char data[1];
index e6014b82a84c5080c1510f2cdd2b1980ef4c2545..96e9ff595b5d062dc227c90e41b318ef512e2ae7 100644 (file)
@@ -64,7 +64,7 @@
 #include <openssl/objects.h>
 #include <openssl/asn1_mac.h>
 
-int i2d_DSAPublicKey(DSA *a, unsigned char **pp)
+int i2d_DSAPublicKey(const DSA *a, unsigned char **pp)
        {
        BIGNUM *num[4];
        ASN1_INTEGER bs;
index f20432638697957d7747870f1e1d1df469b289f9..644349df4ed1b88913b99e126d58e448dbee5623 100644 (file)
@@ -140,7 +140,7 @@ err:
 
 #ifndef NO_DSA
 #ifndef NO_FP_API
-int DSA_print_fp(FILE *fp, DSA *x, int off)
+int DSA_print_fp(FILE *fp, const DSA *x, int off)
        {
        BIO *b;
        int ret;
@@ -157,7 +157,7 @@ int DSA_print_fp(FILE *fp, DSA *x, int off)
        }
 #endif
 
-int DSA_print(BIO *bp, DSA *x, int off)
+int DSA_print(BIO *bp, const DSA *x, int off)
        {
        char str[128];
        unsigned char *m=NULL;
@@ -314,7 +314,7 @@ err:
 
 #ifndef NO_DSA
 #ifndef NO_FP_API
-int DSAparams_print_fp(FILE *fp, DSA *x)
+int DSAparams_print_fp(FILE *fp, const DSA *x)
         {
         BIO *b;
         int ret;
@@ -331,7 +331,7 @@ int DSAparams_print_fp(FILE *fp, DSA *x)
         }
 #endif
 
-int DSAparams_print(BIO *bp, DSA *x)
+int DSAparams_print(BIO *bp, const DSA *x)
        {
        unsigned char *m=NULL;
        int reason=ERR_R_BUF_LIB,i,ret=0;
index b2e2a514777094311ebfb93e2013e1c705b3793a..8d1dbce22e433d9d302dcb64278f941f84e3c68b 100644 (file)
@@ -206,6 +206,7 @@ EVP_PKEY *X509_PUBKEY_get(X509_PUBKEY *key)
        long j;
        int type;
        unsigned char *p;
+       const unsigned char *cp;
 #ifndef NO_DSA
        X509_ALGOR *a;
 #endif
@@ -237,9 +238,9 @@ EVP_PKEY *X509_PUBKEY_get(X509_PUBKEY *key)
                if (a->parameter->type == V_ASN1_SEQUENCE)
                        {
                        ret->pkey.dsa->write_params=0;
-                       p=a->parameter->value.sequence->data;
+                       cp=p=a->parameter->value.sequence->data;
                        j=a->parameter->value.sequence->length;
-                       if (!d2i_DSAparams(&ret->pkey.dsa,&p,(long)j))
+                       if (!d2i_DSAparams(&ret->pkey.dsa,&cp,(long)j))
                                goto err;
                        }
                ret->save_parameters=1;
index 65689a34266150c46177d1347dcdda8277e3fdd8..4608b0f75e328598c5d77ec77fda280f1e848286 100644 (file)
@@ -154,19 +154,19 @@ struct dsa_st
 
 DSA_SIG * DSA_SIG_new(void);
 void   DSA_SIG_free(DSA_SIG *a);
-int    i2d_DSA_SIG(DSA_SIG *a, unsigned char **pp);
-DSA_SIG * d2i_DSA_SIG(DSA_SIG **v, unsigned char **pp, long length);
+int    i2d_DSA_SIG(const DSA_SIG *a, unsigned char **pp);
+DSA_SIG * d2i_DSA_SIG(DSA_SIG **v, const unsigned char **pp, long length);
 
 DSA_SIG * DSA_do_sign(const unsigned char *dgst,int dlen,DSA *dsa);
 int    DSA_do_verify(const unsigned char *dgst,int dgst_len,
                      DSA_SIG *sig,DSA *dsa);
 
-DSA_METHOD *DSA_OpenSSL(void);
+const DSA_METHOD *DSA_OpenSSL(void);
 
-void        DSA_set_default_openssl_method(DSA_METHOD *);
-DSA_METHOD *DSA_get_default_openssl_method(void);
+void        DSA_set_default_openssl_method(const DSA_METHOD *);
+const DSA_METHOD *DSA_get_default_openssl_method(void);
 #if 0
-DSA_METHOD *DSA_set_method(DSA *dsa, DSA_METHOD *);
+const DSA_METHOD *DSA_set_method(DSA *dsa, DSA_METHOD *);
 #else
 int DSA_set_method(DSA *dsa, struct engine_st *engine);
 #endif
@@ -177,13 +177,13 @@ DSA *     DSA_new_method(DSA_METHOD *meth);
 #else
 DSA *  DSA_new_method(struct engine_st *engine);
 #endif
-int    DSA_size(DSA *);
+int    DSA_size(const DSA *);
        /* next 4 return -1 on error */
 int    DSA_sign_setup( DSA *dsa,BN_CTX *ctx_in,BIGNUM **kinvp,BIGNUM **rp);
 int    DSA_sign(int type,const unsigned char *dgst,int dlen,
                unsigned char *sig, unsigned int *siglen, DSA *dsa);
 int    DSA_verify(int type,const unsigned char *dgst,int dgst_len,
-               unsigned char *sigbuf, int siglen, DSA *dsa);
+               const unsigned char *sigbuf, int siglen, DSA *dsa);
 void   DSA_free (DSA *r);
 int DSA_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func,
             CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func);
@@ -192,24 +192,25 @@ void *DSA_get_ex_data(DSA *d, int idx);
 
 void   ERR_load_DSA_strings(void );
 
-DSA *  d2i_DSAPublicKey(DSA **a, unsigned char **pp, long length);
-DSA *  d2i_DSAPrivateKey(DSA **a, unsigned char **pp, long length);
-DSA *  d2i_DSAparams(DSA **a, unsigned char **pp, long length);
-DSA *  DSA_generate_parameters(int bits, unsigned char *seed,int seed_len,
+DSA *  d2i_DSAPublicKey(DSA **a, const unsigned char **pp, long length);
+DSA *  d2i_DSAPrivateKey(DSA **a, const unsigned char **pp, long length);
+DSA *  d2i_DSAparams(DSA **a, const unsigned char **pp, long length);
+DSA *  DSA_generate_parameters(int bits,
+               unsigned char *seed,int seed_len,
                int *counter_ret, unsigned long *h_ret,void
                (*callback)(int, int, void *),void *cb_arg);
 int    DSA_generate_key(DSA *a);
-int    i2d_DSAPublicKey(DSA *a, unsigned char **pp);
-int    i2d_DSAPrivateKey(DSA *a, unsigned char **pp);
-int    i2d_DSAparams(DSA *a,unsigned char **pp);
+int    i2d_DSAPublicKey(const DSA *a, unsigned char **pp);
+int    i2d_DSAPrivateKey(const DSA *a, unsigned char **pp);
+int    i2d_DSAparams(const DSA *a,unsigned char **pp);
 
 #ifndef NO_BIO
-int    DSAparams_print(BIO *bp, DSA *x);
-int    DSA_print(BIO *bp, DSA *x, int off);
+int    DSAparams_print(BIO *bp, const DSA *x);
+int    DSA_print(BIO *bp, const DSA *x, int off);
 #endif
 #ifndef NO_FP_API
-int    DSAparams_print_fp(FILE *fp, DSA *x);
-int    DSA_print_fp(FILE *bp, DSA *x, int off);
+int    DSAparams_print_fp(FILE *fp, const DSA *x);
+int    DSA_print_fp(FILE *bp, const DSA *x, int off);
 #endif
 
 #define DSS_prime_checks 50
@@ -221,7 +222,7 @@ int DSA_print_fp(FILE *bp, DSA *x, int off);
 #ifndef NO_DH
 /* Convert DSA structure (key or just parameters) into DH structure
  * (be careful to avoid small subgroup attacks when using this!) */
-DH *DSA_dup_DH(DSA *r);
+DH *DSA_dup_DH(const DSA *r);
 #endif
 
 /* BEGIN ERROR CODES */
index a76c8f7c7eb389e3d34a3bfb67b83dceda456f1e..81c9c863b47c44aaebd7f72a41686994a4479f18 100644 (file)
@@ -29,7 +29,7 @@ void DSA_SIG_free(DSA_SIG *r)
        OPENSSL_free(r);
 }
 
-int i2d_DSA_SIG(DSA_SIG *v, unsigned char **pp)
+int i2d_DSA_SIG(const DSA_SIG *v, unsigned char **pp)
 {
        int t=0,len;
        ASN1_INTEGER rbs,sbs;
@@ -69,7 +69,7 @@ int i2d_DSA_SIG(DSA_SIG *v, unsigned char **pp)
        return(t);
 }
 
-DSA_SIG *d2i_DSA_SIG(DSA_SIG **a, unsigned char **pp, long length)
+DSA_SIG *d2i_DSA_SIG(DSA_SIG **a, const unsigned char **pp, long length)
 {
        int i=ERR_R_NESTED_ASN1_ERROR;
        ASN1_INTEGER *bs=NULL;
index 2294a362d9954419cf92bd3d4176ce33ce8210d0..e911e5ae738ccf1ff6832cd814612a4e16b55478 100644 (file)
@@ -79,7 +79,8 @@
 #include <openssl/dsa.h>
 #include <openssl/rand.h>
 
-DSA *DSA_generate_parameters(int bits, unsigned char *seed_in, int seed_len,
+DSA *DSA_generate_parameters(int bits,
+               unsigned char *seed_in, int seed_len,
                int *counter_ret, unsigned long *h_ret,
                void (*callback)(int, int, void *),
                void *cb_arg)
index b31b946ad3b07aac866a80b0def6301830604a8e..5e5bff82aec1e2cd503794a3e085b57e50ea28aa 100644 (file)
 
 const char *DSA_version="DSA" OPENSSL_VERSION_PTEXT;
 
-static DSA_METHOD *default_DSA_method;
+static const DSA_METHOD *default_DSA_method;
 static int dsa_meth_num = 0;
 static STACK_OF(CRYPTO_EX_DATA_FUNCS) *dsa_meth = NULL;
 
-void DSA_set_default_openssl_method(DSA_METHOD *meth)
+void DSA_set_default_openssl_method(const DSA_METHOD *meth)
 {
        ENGINE *e;
        /* We'll need to notify the "openssl" ENGINE of this
@@ -90,7 +90,7 @@ void DSA_set_default_openssl_method(DSA_METHOD *meth)
                }
 }
 
-DSA_METHOD *DSA_get_default_openssl_method(void)
+const DSA_METHOD *DSA_get_default_openssl_method(void)
 {
        if(!default_DSA_method) default_DSA_method = DSA_OpenSSL();
        return default_DSA_method;
@@ -115,7 +115,7 @@ DSA_METHOD *DSA_set_method(DSA *dsa, DSA_METHOD *meth)
 int DSA_set_method(DSA *dsa, ENGINE *engine)
        {
        ENGINE *mtmp;
-       DSA_METHOD *meth;
+       const DSA_METHOD *meth;
        mtmp = dsa->engine;
        meth = ENGINE_get_DSA(mtmp);
        if (!ENGINE_init(engine))
@@ -137,7 +137,7 @@ DSA *DSA_new_method(DSA_METHOD *meth)
 DSA *DSA_new_method(ENGINE *engine)
 #endif
        {
-       DSA_METHOD *meth;
+       const DSA_METHOD *meth;
        DSA *ret;
 
        ret=(DSA *)OPENSSL_malloc(sizeof(DSA));
@@ -186,7 +186,7 @@ DSA *DSA_new_method(ENGINE *engine)
 
 void DSA_free(DSA *r)
        {
-       DSA_METHOD *meth;
+       const DSA_METHOD *meth;
        int i;
 
        if (r == NULL) return;
@@ -220,7 +220,7 @@ void DSA_free(DSA *r)
        OPENSSL_free(r);
        }
 
-int DSA_size(DSA *r)
+int DSA_size(const DSA *r)
        {
        int ret,i;
        ASN1_INTEGER bs;
@@ -258,7 +258,7 @@ void *DSA_get_ex_data(DSA *d, int idx)
        }
 
 #ifndef NO_DH
-DH *DSA_dup_DH(DSA *r)
+DH *DSA_dup_DH(const DSA *r)
        {
        /* DSA has p, q, g, optional pub_key, optional priv_key.
         * DH has p, optional length, g, optional pub_key, optional priv_key.
index 96295dc24f74ff621e4cc20ba880cec862ab9f9f..4b600fa731dc44276ca4730428491fe47916bbd3 100644 (file)
@@ -92,7 +92,7 @@ dsa_finish,
 NULL
 };
 
-DSA_METHOD *DSA_OpenSSL(void)
+const DSA_METHOD *DSA_OpenSSL(void)
 {
        return &openssl_dsa_meth;
 }
index 2e891ae491dfcc1aeace7838247520fc67a75bd7..28b6712341e09b3134a01662737433db2156cf9b 100644 (file)
@@ -80,7 +80,7 @@ int DSA_do_verify(const unsigned char *dgst, int dgst_len, DSA_SIG *sig,
  *     -1: error
  */
 int DSA_verify(int type, const unsigned char *dgst, int dgst_len,
-            unsigned char *sigbuf, int siglen, DSA *dsa)
+            const unsigned char *sigbuf, int siglen, DSA *dsa)
        {
        DSA_SIG *s;
        int ret=-1;
index e695e4543bd5b0356cd5845c2e2cf3a22f2d4336..826bdff76a34ddcc874d3424b13ae19aeb827f48 100644 (file)
@@ -179,7 +179,7 @@ int ENGINE_free(ENGINE *e);
 int ENGINE_set_id(ENGINE *e, const char *id);
 int ENGINE_set_name(ENGINE *e, const char *name);
 int ENGINE_set_RSA(ENGINE *e, const RSA_METHOD *rsa_meth);
-int ENGINE_set_DSA(ENGINE *e, DSA_METHOD *dsa_meth);
+int ENGINE_set_DSA(ENGINE *e, const DSA_METHOD *dsa_meth);
 int ENGINE_set_DH(ENGINE *e, DH_METHOD *dh_meth);
 int ENGINE_set_RAND(ENGINE *e, RAND_METHOD *rand_meth);
 int ENGINE_set_BN_mod_exp(ENGINE *e, BN_MOD_EXP bn_mod_exp);
@@ -196,7 +196,7 @@ int ENGINE_set_ctrl_function(ENGINE *e, ENGINE_CTRL_FUNC_PTR ctrl_f);
 const char *ENGINE_get_id(ENGINE *e);
 const char *ENGINE_get_name(ENGINE *e);
 const RSA_METHOD *ENGINE_get_RSA(ENGINE *e);
-DSA_METHOD *ENGINE_get_DSA(ENGINE *e);
+const DSA_METHOD *ENGINE_get_DSA(ENGINE *e);
 DH_METHOD *ENGINE_get_DH(ENGINE *e);
 RAND_METHOD *ENGINE_get_RAND(ENGINE *e);
 BN_MOD_EXP ENGINE_get_BN_mod_exp(ENGINE *e);
index 6df448e0f3e114ceebb47623262b40e3cca664bc..547893fdd9b3d783037d1c0a7abc059c312b96eb 100644 (file)
@@ -83,7 +83,7 @@ struct engine_st
        const char *id;
        const char *name;
        const RSA_METHOD *rsa_meth;
-       DSA_METHOD *dsa_meth;
+       const DSA_METHOD *dsa_meth;
        DH_METHOD *dh_meth;
        RAND_METHOD *rand_meth;
        BN_MOD_EXP bn_mod_exp;
index 09b261c489898b601aa4ce54b55a9667009dc722..67bb7d03dbacf553beb77a02d2b77ac849a66a01 100644 (file)
@@ -442,7 +442,7 @@ int ENGINE_set_RSA(ENGINE *e, const RSA_METHOD *rsa_meth)
        return 1;
        }
 
-int ENGINE_set_DSA(ENGINE *e, DSA_METHOD *dsa_meth)
+int ENGINE_set_DSA(ENGINE *e, const DSA_METHOD *dsa_meth)
        {
        if((e == NULL) || (dsa_meth == NULL))
                {
@@ -571,7 +571,7 @@ const RSA_METHOD *ENGINE_get_RSA(ENGINE *e)
        return e->rsa_meth;
        }
 
-DSA_METHOD *ENGINE_get_DSA(ENGINE *e)
+const DSA_METHOD *ENGINE_get_DSA(ENGINE *e)
        {
        if(e == NULL)
                {
index 30e5634c718d61667a0139350c23f454c966eafd..b19639caab95b32077fcaaf45c1c063b68e5249b 100644 (file)
@@ -170,8 +170,8 @@ static ENGINE engine_atalla =
  * (indeed - the lock will already be held by our caller!!!) */
 ENGINE *ENGINE_atalla()
        {
-       RSA_METHOD *meth1;
-       DSA_METHOD *meth2;
+       const RSA_METHOD *meth1;
+       const DSA_METHOD *meth2;
        DH_METHOD *meth3;
 
        /* We know that the "PKCS1_SSLeay()" functions hook properly
index 85cf1036c7260747078f2812434fff74ef1deb96..cb6beefd657c21c4b732fd579e24d90dab708609 100644 (file)
@@ -182,7 +182,7 @@ static ENGINE engine_cswift =
  * (indeed - the lock will already be held by our caller!!!) */
 ENGINE *ENGINE_cswift()
        {
-       RSA_METHOD *meth1;
+       const RSA_METHOD *meth1;
        DH_METHOD *meth2;
 
        /* We know that the "PKCS1_SSLeay()" functions hook properly
index 3e4ec44e86038da0e717c253e2f29eb59bd2017b..bb7e82c9fd085e0e45f65d1ea14c77c35a2a78e7 100644 (file)
@@ -291,7 +291,7 @@ static HWCryptoHook_InitInfo hwcrhk_globals = {
  * (indeed - the lock will already be held by our caller!!!) */
 ENGINE *ENGINE_ncipher()
        {
-       RSA_METHOD *meth1;
+       const RSA_METHOD *meth1;
        DH_METHOD *meth2;
 
        /* We know that the "PKCS1_SSLeay()" functions hook properly
index f09f137a4c702b7797ef6c735824cb425d342fe9..2fd394f754004ac499d9b15be504276547c7ff3d 100644 (file)
@@ -250,8 +250,8 @@ static ENGINE engine_nuron =
  * (indeed - the lock will already be held by our caller!!!) */
 ENGINE *ENGINE_nuron()
        {
-       RSA_METHOD *meth1;
-       DSA_METHOD *meth2;
+       const RSA_METHOD *meth1;
+       const DSA_METHOD *meth2;
        DH_METHOD *meth3;
 
        /* We know that the "PKCS1_SSLeay()" functions hook properly
index bacbd42797bb44134ec0fc7d45b5cd3642acf53e..0f34847333f265c2d6a8dbdcdaca58a54ca2524a 100644 (file)
@@ -165,9 +165,9 @@ EVP_PKEY *EVP_PKCS82PKEY (PKCS8_PRIV_KEY_INFO *p8)
                        EVPerr(EVP_F_EVP_PKCS82PKEY, EVP_R_DECODE_ERROR);
                        goto dsaerr;
                }
-               p = param->value.sequence->data;
+               cp = p = param->value.sequence->data;
                plen = param->value.sequence->length;
-               if (!(dsa = d2i_DSAparams (NULL, &p, plen))) {
+               if (!(dsa = d2i_DSAparams (NULL, &cp, plen))) {
                        EVPerr(EVP_F_EVP_PKCS82PKEY, EVP_R_DECODE_ERROR);
                        goto dsaerr;
                }