New SP 800-56A compliant version of DH_compute_key().
(cherry picked from commit bc91494e064ebdcff68f987947f97e404fbca0b5)
This commit is contained in:
parent
d84cca7447
commit
6c4b3514d7
@ -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_check_pub_key(const DH *dh,const BIGNUM *pub_key, int *codes);
|
||||||
int DH_generate_key(DH *dh);
|
int DH_generate_key(DH *dh);
|
||||||
int DH_compute_key(unsigned char *key,const BIGNUM *pub_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);
|
DH * d2i_DHparams(DH **a,const unsigned char **pp, long length);
|
||||||
int i2d_DHparams(const DH *a,unsigned char **pp);
|
int i2d_DHparams(const DH *a,unsigned char **pp);
|
||||||
DH * d2i_DHxparams(DH **a,const unsigned char **pp, long length);
|
DH * d2i_DHxparams(DH **a,const unsigned char **pp, long length);
|
||||||
|
@ -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);
|
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 = {
|
static DH_METHOD dh_ossl = {
|
||||||
"OpenSSL DH Method",
|
"OpenSSL DH Method",
|
||||||
generate_key,
|
generate_key,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user