Commit 6c4b3514 authored by Dr. Stephen Henson's avatar Dr. Stephen Henson
Browse files

New SP 800-56A compliant version of DH_compute_key().

(cherry picked from commit bc91494e)
parent d84cca74
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -213,6 +213,7 @@ int DH_check(const DH *dh,int *codes);
int	DH_check_pub_key(const DH *dh,const BIGNUM *pub_key, int *codes);
int	DH_generate_key(DH *dh);
int	DH_compute_key(unsigned char *key,const BIGNUM *pub_key,DH *dh);
int	DH_compute_key_padded(unsigned char *key,const BIGNUM *pub_key,DH *dh);
DH *	d2i_DHparams(DH **a,const unsigned char **pp, long length);
int	i2d_DHparams(const DH *a,unsigned char **pp);
DH *	d2i_DHxparams(DH **a,const unsigned char **pp, long length);
+15 −0
Original line number Diff line number Diff line
@@ -97,6 +97,21 @@ int DH_compute_key(unsigned char *key, const BIGNUM *pub_key, DH *dh)
	return dh->meth->compute_key(key, pub_key, dh);
	}

int DH_compute_key_padded(unsigned char *key, const BIGNUM *pub_key, DH *dh)
	{
	int rv, pad;
	rv = dh->meth->compute_key(key, pub_key, dh);
	if (rv <= 0)
		return rv;
	pad = BN_num_bytes(dh->p) - rv;
	if (pad > 0)
		{
		memmove(key + pad, key, rv);
		memset(key, 0, pad);
		}
	return rv + pad;
	}

static DH_METHOD dh_ossl = {
"OpenSSL DH Method",
generate_key,