if(out->digest->copy) return out->digest->copy(out,in);  return 1; }
int EVP_MD_CTX_copy(EVP_MD_CTX *out, const EVP_MD_CTX *in){    if ((in == NULL) || (in->digest == NULL)) {        EVPerr(EVP_F_EVP_MD_CTX_COPY,EVP_R_INPUT_NOT_INITIALIZED);	return 0;    }    EVP_MD_CTX_cleanup(out);    memcpy(out,in,sizeof *out);    if(out->digest->ctx_size)	{	out->md_data=OPENSSL_malloc(out->digest->ctx_size);	memcpy(out->md_data,in->md_data,out->digest->ctx_size);	}    if(out->digest->copy)	return out->digest->copy(out,in);    return 1;}