Support for DSA keygen, fix for genpkey.
This commit is contained in:
@@ -87,7 +87,7 @@ int MAIN(int argc, char **argv)
|
|||||||
int badarg = 0;
|
int badarg = 0;
|
||||||
int ret = 1;
|
int ret = 1;
|
||||||
|
|
||||||
int do_param = -1;
|
int do_param = 0;
|
||||||
|
|
||||||
if (bio_err == NULL)
|
if (bio_err == NULL)
|
||||||
bio_err = BIO_new_fp (stderr, BIO_NOCLOSE);
|
bio_err = BIO_new_fp (stderr, BIO_NOCLOSE);
|
||||||
@@ -147,8 +147,6 @@ int MAIN(int argc, char **argv)
|
|||||||
{
|
{
|
||||||
if (!args[1])
|
if (!args[1])
|
||||||
goto bad;
|
goto bad;
|
||||||
if (do_param == -1)
|
|
||||||
do_param = 0;
|
|
||||||
if (!init_gen_str(bio_err, &ctx, *(++args),e, do_param))
|
if (!init_gen_str(bio_err, &ctx, *(++args),e, do_param))
|
||||||
goto end;
|
goto end;
|
||||||
}
|
}
|
||||||
|
@@ -279,6 +279,7 @@ void ERR_load_DSA_strings(void);
|
|||||||
#define DSA_F_DSA_VERIFY 108
|
#define DSA_F_DSA_VERIFY 108
|
||||||
#define DSA_F_I2D_DSA_SIG 111
|
#define DSA_F_I2D_DSA_SIG 111
|
||||||
#define DSA_F_PKEY_DSA_CTRL 120
|
#define DSA_F_PKEY_DSA_CTRL 120
|
||||||
|
#define DSA_F_PKEY_DSA_KEYGEN 121
|
||||||
#define DSA_F_SIG_CB 114
|
#define DSA_F_SIG_CB 114
|
||||||
|
|
||||||
/* Reason codes. */
|
/* Reason codes. */
|
||||||
@@ -288,6 +289,7 @@ void ERR_load_DSA_strings(void);
|
|||||||
#define DSA_R_DECODE_ERROR 104
|
#define DSA_R_DECODE_ERROR 104
|
||||||
#define DSA_R_INVALID_DIGEST_TYPE 106
|
#define DSA_R_INVALID_DIGEST_TYPE 106
|
||||||
#define DSA_R_MISSING_PARAMETERS 101
|
#define DSA_R_MISSING_PARAMETERS 101
|
||||||
|
#define DSA_R_NO_PARAMETERS_SET 107
|
||||||
#define DSA_R_PARAMETER_ENCODING_ERROR 105
|
#define DSA_R_PARAMETER_ENCODING_ERROR 105
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
@@ -89,6 +89,7 @@ static ERR_STRING_DATA DSA_str_functs[]=
|
|||||||
{ERR_FUNC(DSA_F_DSA_VERIFY), "DSA_verify"},
|
{ERR_FUNC(DSA_F_DSA_VERIFY), "DSA_verify"},
|
||||||
{ERR_FUNC(DSA_F_I2D_DSA_SIG), "i2d_DSA_SIG"},
|
{ERR_FUNC(DSA_F_I2D_DSA_SIG), "i2d_DSA_SIG"},
|
||||||
{ERR_FUNC(DSA_F_PKEY_DSA_CTRL), "PKEY_DSA_CTRL"},
|
{ERR_FUNC(DSA_F_PKEY_DSA_CTRL), "PKEY_DSA_CTRL"},
|
||||||
|
{ERR_FUNC(DSA_F_PKEY_DSA_KEYGEN), "PKEY_DSA_KEYGEN"},
|
||||||
{ERR_FUNC(DSA_F_SIG_CB), "SIG_CB"},
|
{ERR_FUNC(DSA_F_SIG_CB), "SIG_CB"},
|
||||||
{0,NULL}
|
{0,NULL}
|
||||||
};
|
};
|
||||||
@@ -101,6 +102,7 @@ static ERR_STRING_DATA DSA_str_reasons[]=
|
|||||||
{ERR_REASON(DSA_R_DECODE_ERROR) ,"decode error"},
|
{ERR_REASON(DSA_R_DECODE_ERROR) ,"decode error"},
|
||||||
{ERR_REASON(DSA_R_INVALID_DIGEST_TYPE) ,"invalid digest type"},
|
{ERR_REASON(DSA_R_INVALID_DIGEST_TYPE) ,"invalid digest type"},
|
||||||
{ERR_REASON(DSA_R_MISSING_PARAMETERS) ,"missing parameters"},
|
{ERR_REASON(DSA_R_MISSING_PARAMETERS) ,"missing parameters"},
|
||||||
|
{ERR_REASON(DSA_R_NO_PARAMETERS_SET) ,"no parameters set"},
|
||||||
{ERR_REASON(DSA_R_PARAMETER_ENCODING_ERROR),"parameter encoding error"},
|
{ERR_REASON(DSA_R_PARAMETER_ENCODING_ERROR),"parameter encoding error"},
|
||||||
{0,NULL}
|
{0,NULL}
|
||||||
};
|
};
|
||||||
|
@@ -200,6 +200,24 @@ static int pkey_dsa_paramgen(EVP_PKEY_CTX *ctx, EVP_PKEY *pkey)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int pkey_dsa_keygen(EVP_PKEY_CTX *ctx, EVP_PKEY *pkey)
|
||||||
|
{
|
||||||
|
DSA *dsa = NULL;
|
||||||
|
if (ctx->pkey == NULL)
|
||||||
|
{
|
||||||
|
DSAerr(DSA_F_PKEY_DSA_KEYGEN, DSA_R_NO_PARAMETERS_SET);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
dsa = DSA_new();
|
||||||
|
if (!dsa)
|
||||||
|
return 0;
|
||||||
|
EVP_PKEY_assign_DSA(pkey, dsa);
|
||||||
|
/* Note: if error return, pkey is freed by parent routine */
|
||||||
|
if (!EVP_PKEY_copy_parameters(pkey, ctx->pkey))
|
||||||
|
return 0;
|
||||||
|
return DSA_generate_key(pkey->pkey.dsa);
|
||||||
|
}
|
||||||
|
|
||||||
const EVP_PKEY_METHOD dsa_pkey_meth =
|
const EVP_PKEY_METHOD dsa_pkey_meth =
|
||||||
{
|
{
|
||||||
EVP_PKEY_DSA,
|
EVP_PKEY_DSA,
|
||||||
@@ -210,7 +228,8 @@ const EVP_PKEY_METHOD dsa_pkey_meth =
|
|||||||
0,
|
0,
|
||||||
pkey_dsa_paramgen,
|
pkey_dsa_paramgen,
|
||||||
|
|
||||||
0,0,
|
0,
|
||||||
|
pkey_dsa_keygen,
|
||||||
|
|
||||||
0,
|
0,
|
||||||
pkey_dsa_sign,
|
pkey_dsa_sign,
|
||||||
|
Reference in New Issue
Block a user