Redirect DH key and parameter generation.
This commit is contained in:
parent
752c1a0ce9
commit
ed9b0e5cba
@ -247,6 +247,7 @@ void ERR_load_DH_strings(void);
|
|||||||
#define DH_F_DH_BUILTIN_GENPARAMS 106
|
#define DH_F_DH_BUILTIN_GENPARAMS 106
|
||||||
#define DH_F_DH_COMPUTE_KEY 114
|
#define DH_F_DH_COMPUTE_KEY 114
|
||||||
#define DH_F_DH_GENERATE_KEY 115
|
#define DH_F_DH_GENERATE_KEY 115
|
||||||
|
#define DH_F_DH_GENERATE_PARAMETERS_EX 116
|
||||||
#define DH_F_DH_NEW_METHOD 105
|
#define DH_F_DH_NEW_METHOD 105
|
||||||
#define DH_F_DH_PARAM_DECODE 107
|
#define DH_F_DH_PARAM_DECODE 107
|
||||||
#define DH_F_DH_PRIV_DECODE 110
|
#define DH_F_DH_PRIV_DECODE 110
|
||||||
|
@ -75,6 +75,7 @@ static ERR_STRING_DATA DH_str_functs[]=
|
|||||||
{ERR_FUNC(DH_F_DH_BUILTIN_GENPARAMS), "DH_BUILTIN_GENPARAMS"},
|
{ERR_FUNC(DH_F_DH_BUILTIN_GENPARAMS), "DH_BUILTIN_GENPARAMS"},
|
||||||
{ERR_FUNC(DH_F_DH_COMPUTE_KEY), "DH_compute_key"},
|
{ERR_FUNC(DH_F_DH_COMPUTE_KEY), "DH_compute_key"},
|
||||||
{ERR_FUNC(DH_F_DH_GENERATE_KEY), "DH_generate_key"},
|
{ERR_FUNC(DH_F_DH_GENERATE_KEY), "DH_generate_key"},
|
||||||
|
{ERR_FUNC(DH_F_DH_GENERATE_PARAMETERS_EX), "DH_generate_parameters_ex"},
|
||||||
{ERR_FUNC(DH_F_DH_NEW_METHOD), "DH_new_method"},
|
{ERR_FUNC(DH_F_DH_NEW_METHOD), "DH_new_method"},
|
||||||
{ERR_FUNC(DH_F_DH_PARAM_DECODE), "DH_PARAM_DECODE"},
|
{ERR_FUNC(DH_F_DH_PARAM_DECODE), "DH_PARAM_DECODE"},
|
||||||
{ERR_FUNC(DH_F_DH_PRIV_DECODE), "DH_PRIV_DECODE"},
|
{ERR_FUNC(DH_F_DH_PRIV_DECODE), "DH_PRIV_DECODE"},
|
||||||
|
@ -66,12 +66,29 @@
|
|||||||
#include <openssl/bn.h>
|
#include <openssl/bn.h>
|
||||||
#include <openssl/dh.h>
|
#include <openssl/dh.h>
|
||||||
|
|
||||||
|
#ifdef OPENSSL_FIPS
|
||||||
|
#include <openssl/fips.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
static int dh_builtin_genparams(DH *ret, int prime_len, int generator, BN_GENCB *cb);
|
static int dh_builtin_genparams(DH *ret, int prime_len, int generator, BN_GENCB *cb);
|
||||||
|
|
||||||
int DH_generate_parameters_ex(DH *ret, int prime_len, int generator, BN_GENCB *cb)
|
int DH_generate_parameters_ex(DH *ret, int prime_len, int generator, BN_GENCB *cb)
|
||||||
{
|
{
|
||||||
|
#ifdef OPENSSL_FIPS
|
||||||
|
if (FIPS_mode() && !(ret->meth->flags & DH_FLAG_FIPS_METHOD)
|
||||||
|
&& !(ret->flags & DH_FLAG_NON_FIPS_ALLOW))
|
||||||
|
{
|
||||||
|
DHerr(DH_F_DH_GENERATE_PARAMETERS_EX, DH_R_NON_FIPS_METHOD);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
if(ret->meth->generate_params)
|
if(ret->meth->generate_params)
|
||||||
return ret->meth->generate_params(ret, prime_len, generator, cb);
|
return ret->meth->generate_params(ret, prime_len, generator, cb);
|
||||||
|
#ifdef OPENSSL_FIPS
|
||||||
|
if (FIPS_mode())
|
||||||
|
return FIPS_dh_generate_parameters_ex(ret, prime_len,
|
||||||
|
generator, cb);
|
||||||
|
#endif
|
||||||
return dh_builtin_genparams(ret, prime_len, generator, cb);
|
return dh_builtin_genparams(ret, prime_len, generator, cb);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -287,6 +287,7 @@ void ERR_load_DSA_strings(void);
|
|||||||
#define DSA_F_DSAPARAMS_PRINT_FP 101
|
#define DSA_F_DSAPARAMS_PRINT_FP 101
|
||||||
#define DSA_F_DSA_DO_SIGN 112
|
#define DSA_F_DSA_DO_SIGN 112
|
||||||
#define DSA_F_DSA_DO_VERIFY 113
|
#define DSA_F_DSA_DO_VERIFY 113
|
||||||
|
#define DSA_F_DSA_GENERATE_KEY 124
|
||||||
#define DSA_F_DSA_GENERATE_PARAMETERS_EX 123
|
#define DSA_F_DSA_GENERATE_PARAMETERS_EX 123
|
||||||
#define DSA_F_DSA_NEW_METHOD 103
|
#define DSA_F_DSA_NEW_METHOD 103
|
||||||
#define DSA_F_DSA_PARAM_DECODE 119
|
#define DSA_F_DSA_PARAM_DECODE 119
|
||||||
|
@ -76,6 +76,7 @@ static ERR_STRING_DATA DSA_str_functs[]=
|
|||||||
{ERR_FUNC(DSA_F_DSAPARAMS_PRINT_FP), "DSAparams_print_fp"},
|
{ERR_FUNC(DSA_F_DSAPARAMS_PRINT_FP), "DSAparams_print_fp"},
|
||||||
{ERR_FUNC(DSA_F_DSA_DO_SIGN), "DSA_do_sign"},
|
{ERR_FUNC(DSA_F_DSA_DO_SIGN), "DSA_do_sign"},
|
||||||
{ERR_FUNC(DSA_F_DSA_DO_VERIFY), "DSA_do_verify"},
|
{ERR_FUNC(DSA_F_DSA_DO_VERIFY), "DSA_do_verify"},
|
||||||
|
{ERR_FUNC(DSA_F_DSA_GENERATE_KEY), "DSA_generate_key"},
|
||||||
{ERR_FUNC(DSA_F_DSA_GENERATE_PARAMETERS_EX), "DSA_generate_parameters_ex"},
|
{ERR_FUNC(DSA_F_DSA_GENERATE_PARAMETERS_EX), "DSA_generate_parameters_ex"},
|
||||||
{ERR_FUNC(DSA_F_DSA_NEW_METHOD), "DSA_new_method"},
|
{ERR_FUNC(DSA_F_DSA_NEW_METHOD), "DSA_new_method"},
|
||||||
{ERR_FUNC(DSA_F_DSA_PARAM_DECODE), "DSA_PARAM_DECODE"},
|
{ERR_FUNC(DSA_F_DSA_PARAM_DECODE), "DSA_PARAM_DECODE"},
|
||||||
|
@ -89,13 +89,14 @@ int DSA_generate_parameters_ex(DSA *ret, int bits,
|
|||||||
const unsigned char *seed_in, int seed_len,
|
const unsigned char *seed_in, int seed_len,
|
||||||
int *counter_ret, unsigned long *h_ret, BN_GENCB *cb)
|
int *counter_ret, unsigned long *h_ret, BN_GENCB *cb)
|
||||||
{
|
{
|
||||||
|
#ifdef OPENSSL_FIPS
|
||||||
if (FIPS_mode() && !(ret->meth->flags & DSA_FLAG_FIPS_METHOD)
|
if (FIPS_mode() && !(ret->meth->flags & DSA_FLAG_FIPS_METHOD)
|
||||||
&& !(ret->flags & DSA_FLAG_NON_FIPS_ALLOW))
|
&& !(ret->flags & DSA_FLAG_NON_FIPS_ALLOW))
|
||||||
{
|
{
|
||||||
DSAerr(DSA_F_DSA_GENERATE_PARAMETERS_EX, DSA_R_NON_FIPS_DSA_METHOD);
|
DSAerr(DSA_F_DSA_GENERATE_PARAMETERS_EX, DSA_R_NON_FIPS_DSA_METHOD);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
if(ret->meth->dsa_paramgen)
|
if(ret->meth->dsa_paramgen)
|
||||||
return ret->meth->dsa_paramgen(ret, bits, seed_in, seed_len,
|
return ret->meth->dsa_paramgen(ret, bits, seed_in, seed_len,
|
||||||
counter_ret, h_ret, cb);
|
counter_ret, h_ret, cb);
|
||||||
|
@ -64,12 +64,28 @@
|
|||||||
#include <openssl/dsa.h>
|
#include <openssl/dsa.h>
|
||||||
#include <openssl/rand.h>
|
#include <openssl/rand.h>
|
||||||
|
|
||||||
|
#ifdef OPENSSL_FIPS
|
||||||
|
#include <openssl/fips.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
static int dsa_builtin_keygen(DSA *dsa);
|
static int dsa_builtin_keygen(DSA *dsa);
|
||||||
|
|
||||||
int DSA_generate_key(DSA *dsa)
|
int DSA_generate_key(DSA *dsa)
|
||||||
{
|
{
|
||||||
|
#ifdef OPENSSL_FIPS
|
||||||
|
if (FIPS_mode() && !(dsa->meth->flags & DSA_FLAG_FIPS_METHOD)
|
||||||
|
&& !(dsa->flags & DSA_FLAG_NON_FIPS_ALLOW))
|
||||||
|
{
|
||||||
|
DSAerr(DSA_F_DSA_GENERATE_KEY, DSA_R_NON_FIPS_DSA_METHOD);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
if(dsa->meth->dsa_keygen)
|
if(dsa->meth->dsa_keygen)
|
||||||
return dsa->meth->dsa_keygen(dsa);
|
return dsa->meth->dsa_keygen(dsa);
|
||||||
|
#ifdef OPENSSL_FIPS
|
||||||
|
if (FIPS_mode())
|
||||||
|
return FIPS_dsa_generate_key(dsa);
|
||||||
|
#endif
|
||||||
return dsa_builtin_keygen(dsa);
|
return dsa_builtin_keygen(dsa);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user