Commit 351d8998 authored by Mark J. Cox's avatar Mark J. Cox
Browse files

Add new function, EVP_MD_CTX_copy() to replace frequent use of memcpy.

Submitted by: Eric A Young - from changes to C2Net SSLeay
Reviewed by: Mark Cox
PR:
parent 5810a5f4
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -5,6 +5,9 @@

 Changes between 0.9.1c and 0.9.2

  *) Add new function, EVP_MD_CTX_copy() to replace frequent use of memcpy.
     [Eric A. Young, (from changes to C2Net SSLeay, integrated by Mark Cox)]

  *) Make sure `make rehash' target really finds the `openssl' program.
     [Ralf S. Engelschall, Matthias Loepfe <Matthias.Loepfe@adnovum.ch>]

+10 −0
Original line number Diff line number Diff line
@@ -87,3 +87,13 @@ unsigned int *size;
		*size=ctx->digest->md_size;
	memset(&(ctx->md),0,sizeof(ctx->md));
	}

int EVP_MD_CTX_copy(EVP_MD_CTX *out, EVP_MD_CTX *in)
{
    if ((in == NULL) || (in->digest == NULL)) {
        EVPerr(EVP_F_EVP_MD_CTX_COPY,EVP_R_INPUT_NOT_INITALISED);
	return 0;
    }
    memcpy((char *)out,(char *)in,in->digest->ctx_size);
    return 1;
}    
+2 −0
Original line number Diff line number Diff line
@@ -11,6 +11,7 @@
#define EVP_F_EVP_SIGNFINAL				 107
#define EVP_F_EVP_VERIFYFINAL				 108
#define EVP_F_RC2_MAGIC_TO_METH				 109
#define EVP_F_EVP_MD_CTX_COPY                            110

/* Reason codes. */
#define EVP_R_BAD_DECRYPT				 100
@@ -24,3 +25,4 @@
#define EVP_R_UNSUPPORTED_KEY_SIZE			 108
#define EVP_R_WRONG_FINAL_BLOCK_LENGTH			 109
#define EVP_R_WRONG_PUBLIC_KEY_TYPE			 110
#define EVP_R_INPUT_NOT_INITALISED                       111
+4 −0
Original line number Diff line number Diff line
@@ -460,6 +460,7 @@ typedef struct evp_Encode_Ctx_st

#ifndef NOPROTO

int     EVP_MD_CTX_copy(EVP_MD_CTX *out,EVP_MD_CTX *in);  
void	EVP_DigestInit(EVP_MD_CTX *ctx, EVP_MD *type);
void	EVP_DigestUpdate(EVP_MD_CTX *ctx,unsigned char *d,unsigned int cnt);
void	EVP_DigestFinal(EVP_MD_CTX *ctx,unsigned char *md,unsigned int *s);
@@ -626,6 +627,7 @@ int EVP_CIPHER_get_asn1_iv(EVP_CIPHER_CTX *c,ASN1_TYPE *type);

#else

int     EVP_MD_CTX_copy(); 
void	EVP_DigestInit();
void	EVP_DigestUpdate();
void	EVP_DigestFinal();
@@ -782,6 +784,7 @@ int EVP_CIPHER_get_asn1_iv();
#define EVP_F_EVP_SIGNFINAL				 107
#define EVP_F_EVP_VERIFYFINAL				 108
#define EVP_F_RC2_MAGIC_TO_METH				 109
#define EVP_F_EVP_MD_CTX_COPY                            110

/* Reason codes. */
#define EVP_R_BAD_DECRYPT				 100
@@ -795,6 +798,7 @@ int EVP_CIPHER_get_asn1_iv();
#define EVP_R_UNSUPPORTED_KEY_SIZE			 108
#define EVP_R_WRONG_FINAL_BLOCK_LENGTH			 109
#define EVP_R_WRONG_PUBLIC_KEY_TYPE			 110
#define EVP_R_INPUT_NOT_INITALISED                       111
 
#ifdef  __cplusplus
}
+2 −0
Original line number Diff line number Diff line
@@ -73,6 +73,7 @@ static ERR_STRING_DATA EVP_str_functs[]=
{ERR_PACK(0,EVP_F_EVP_SIGNFINAL,0),	"EVP_SignFinal"},
{ERR_PACK(0,EVP_F_EVP_VERIFYFINAL,0),	"EVP_VerifyFinal"},
{ERR_PACK(0,EVP_F_RC2_MAGIC_TO_METH,0),	"RC2_MAGIC_TO_METH"},
{ERR_PACK(0,EVP_F_EVP_MD_CTX_COPY,0),	"EVP_MD_CTX_copy"},
{0,NULL},
	};

@@ -89,6 +90,7 @@ static ERR_STRING_DATA EVP_str_reasons[]=
{EVP_R_UNSUPPORTED_KEY_SIZE              ,"unsupported key size"},
{EVP_R_WRONG_FINAL_BLOCK_LENGTH          ,"wrong final block length"},
{EVP_R_WRONG_PUBLIC_KEY_TYPE             ,"wrong public key type"},
{EVP_R_INPUT_NOT_INITALISED              ,"input not initalised"},
{0,NULL},
	};

Loading