OpenSSL 1.1.1-pre2
This commit is contained in:
+47
-10
@@ -326,7 +326,7 @@ static int do_dh_print(BIO *bp, const DH *x, int indent, int ptype)
|
||||
goto err;
|
||||
}
|
||||
if (BIO_write(bp, "\n", 1) <= 0)
|
||||
return (0);
|
||||
return 0;
|
||||
}
|
||||
if (x->counter && !ASN1_bn_print(bp, "counter:", x->counter, NULL, indent))
|
||||
goto err;
|
||||
@@ -346,7 +346,7 @@ static int do_dh_print(BIO *bp, const DH *x, int indent, int ptype)
|
||||
|
||||
static int int_dh_size(const EVP_PKEY *pkey)
|
||||
{
|
||||
return (DH_size(pkey->pkey.dh));
|
||||
return DH_size(pkey->pkey.dh);
|
||||
}
|
||||
|
||||
static int dh_bits(const EVP_PKEY *pkey)
|
||||
@@ -374,13 +374,19 @@ static int dh_cmp_parameters(const EVP_PKEY *a, const EVP_PKEY *b)
|
||||
static int int_dh_bn_cpy(BIGNUM **dst, const BIGNUM *src)
|
||||
{
|
||||
BIGNUM *a;
|
||||
if (src) {
|
||||
a = BN_dup(src);
|
||||
if (!a)
|
||||
return 0;
|
||||
} else
|
||||
|
||||
/*
|
||||
* If source is read only just copy the pointer, so
|
||||
* we don't have to reallocate it.
|
||||
*/
|
||||
if (src == NULL)
|
||||
a = NULL;
|
||||
BN_free(*dst);
|
||||
else if (BN_get_flags(src, BN_FLG_STATIC_DATA)
|
||||
&& !BN_get_flags(src, BN_FLG_MALLOCED))
|
||||
a = (BIGNUM *)src;
|
||||
else if ((a = BN_dup(src)) == NULL)
|
||||
return 0;
|
||||
BN_clear_free(*dst);
|
||||
*dst = a;
|
||||
return 1;
|
||||
}
|
||||
@@ -503,6 +509,25 @@ static int dh_pkey_ctrl(EVP_PKEY *pkey, int op, long arg1, void *arg2)
|
||||
|
||||
}
|
||||
|
||||
static int dh_pkey_public_check(const EVP_PKEY *pkey)
|
||||
{
|
||||
DH *dh = pkey->pkey.dh;
|
||||
|
||||
if (dh->pub_key == NULL) {
|
||||
DHerr(DH_F_DH_PKEY_PUBLIC_CHECK, DH_R_MISSING_PUBKEY);
|
||||
return 0;
|
||||
}
|
||||
|
||||
return DH_check_pub_key_ex(dh, dh->pub_key);
|
||||
}
|
||||
|
||||
static int dh_pkey_param_check(const EVP_PKEY *pkey)
|
||||
{
|
||||
DH *dh = pkey->pkey.dh;
|
||||
|
||||
return DH_check_ex(dh);
|
||||
}
|
||||
|
||||
const EVP_PKEY_ASN1_METHOD dh_asn1_meth = {
|
||||
EVP_PKEY_DH,
|
||||
EVP_PKEY_DH,
|
||||
@@ -533,7 +558,13 @@ const EVP_PKEY_ASN1_METHOD dh_asn1_meth = {
|
||||
0,
|
||||
|
||||
int_dh_free,
|
||||
0
|
||||
0,
|
||||
|
||||
0, 0, 0, 0, 0,
|
||||
|
||||
0,
|
||||
dh_pkey_public_check,
|
||||
dh_pkey_param_check
|
||||
};
|
||||
|
||||
const EVP_PKEY_ASN1_METHOD dhx_asn1_meth = {
|
||||
@@ -566,7 +597,13 @@ const EVP_PKEY_ASN1_METHOD dhx_asn1_meth = {
|
||||
0,
|
||||
|
||||
int_dh_free,
|
||||
dh_pkey_ctrl
|
||||
dh_pkey_ctrl,
|
||||
|
||||
0, 0, 0, 0, 0,
|
||||
|
||||
0,
|
||||
dh_pkey_public_check,
|
||||
dh_pkey_param_check
|
||||
};
|
||||
|
||||
#ifndef OPENSSL_NO_CMS
|
||||
|
||||
Reference in New Issue
Block a user