openssl/include/crypto/bn_dh.h
Shane Lontis 738ee1819e Fix DH_get_nid() so that it does not cache values.
DH_set0_pqg() is now responsible for caching the nid, q and length.

DH with or without named safe prime groups now default to using the maximum private key length (BN_num_bits(q) - 1)
when generating a DH private key. The code is now shared between fips and non fips mode for DH key generation.

The OSSL_PKEY_PARAM_DH_PRIV_LEN parameter can be used during keygen to override the maximum private key length to be
in the range (2 * strength ... bits(q) - 1). Where the strength depends on the length of p.

Added q = (p - 1) / 2 safe prime BIGNUMS so that the code is data driven (To simplify adding new names).
The BIGNUMS were code generated.

Fix error in documented return value for DH_get_nid

Reviewed-by: Richard Levitte <levitte@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/11562)
2020-04-20 11:07:38 +10:00

44 lines
1.5 KiB
C

/*
* Copyright 2015-2020 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
* in the file LICENSE in the source distribution or at
* https://www.openssl.org/source/license.html
*/
#define declare_dh_bn(x) \
extern const BIGNUM _bignum_dh##x##_p; \
extern const BIGNUM _bignum_dh##x##_q; \
extern const BIGNUM _bignum_dh##x##_g; \
declare_dh_bn(1024_160)
declare_dh_bn(2048_224)
declare_dh_bn(2048_256)
extern const BIGNUM _bignum_const_2;
extern const BIGNUM _bignum_ffdhe2048_p;
extern const BIGNUM _bignum_ffdhe3072_p;
extern const BIGNUM _bignum_ffdhe4096_p;
extern const BIGNUM _bignum_ffdhe6144_p;
extern const BIGNUM _bignum_ffdhe8192_p;
extern const BIGNUM _bignum_ffdhe2048_q;
extern const BIGNUM _bignum_ffdhe3072_q;
extern const BIGNUM _bignum_ffdhe4096_q;
extern const BIGNUM _bignum_ffdhe6144_q;
extern const BIGNUM _bignum_ffdhe8192_q;
extern const BIGNUM _bignum_modp_1536_p;
extern const BIGNUM _bignum_modp_2048_p;
extern const BIGNUM _bignum_modp_3072_p;
extern const BIGNUM _bignum_modp_4096_p;
extern const BIGNUM _bignum_modp_6144_p;
extern const BIGNUM _bignum_modp_8192_p;
extern const BIGNUM _bignum_modp_1536_q;
extern const BIGNUM _bignum_modp_2048_q;
extern const BIGNUM _bignum_modp_3072_q;
extern const BIGNUM _bignum_modp_4096_q;
extern const BIGNUM _bignum_modp_6144_q;
extern const BIGNUM _bignum_modp_8192_q;