|
|
|
@ -833,6 +833,13 @@ pgp_dsa_generate_keypair(pgp_key_t *keydata,
|
|
|
|
|
pgp_memory_t *mem;
|
|
|
|
|
int res;
|
|
|
|
|
|
|
|
|
|
const BIGNUM *_p = NULL;
|
|
|
|
|
const BIGNUM *_q = NULL;
|
|
|
|
|
const BIGNUM *_g = NULL;
|
|
|
|
|
const BIGNUM *_y = NULL;
|
|
|
|
|
const BIGNUM *_x = NULL;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ctx = BN_CTX_new();
|
|
|
|
|
pgp_keydata_init(keydata, PGP_PTAG_CT_SECRET_KEY);
|
|
|
|
|
seckey = pgp_get_writable_seckey(keydata);
|
|
|
|
@ -853,10 +860,10 @@ pgp_dsa_generate_keypair(pgp_key_t *keydata,
|
|
|
|
|
seckey->pubkey.days_valid = 0;
|
|
|
|
|
seckey->pubkey.alg = PGP_PKA_DSA;
|
|
|
|
|
|
|
|
|
|
seckey->pubkey.key.dsa.p = (BIGNUM *)DSA_get0_p(dsa);
|
|
|
|
|
seckey->pubkey.key.dsa.q = (BIGNUM *)DSA_get0_q(dsa);
|
|
|
|
|
seckey->pubkey.key.dsa.g = (BIGNUM *)DSA_get0_g(dsa);
|
|
|
|
|
seckey->pubkey.key.dsa.y = (BIGNUM *)DSA_get0_pub_key(dsa);
|
|
|
|
|
_p = (BIGNUM *)DSA_get0_p(dsa);
|
|
|
|
|
_q = (BIGNUM *)DSA_get0_q(dsa);
|
|
|
|
|
_g = (BIGNUM *)DSA_get0_g(dsa);
|
|
|
|
|
_y = (BIGNUM *)DSA_get0_pub_key(dsa);
|
|
|
|
|
|
|
|
|
|
/* seckey->s2k_usage = PGP_S2KU_ENCRYPTED_AND_HASHED; */
|
|
|
|
|
seckey->s2k_usage = PGP_S2KU_NONE;
|
|
|
|
@ -869,7 +876,13 @@ pgp_dsa_generate_keypair(pgp_key_t *keydata,
|
|
|
|
|
seckey->octetc = 0;
|
|
|
|
|
seckey->checksum = 0;
|
|
|
|
|
|
|
|
|
|
seckey->key.dsa.x = (BIGNUM *)DSA_get0_priv_key(dsa);
|
|
|
|
|
_x = (BIGNUM *)DSA_get0_priv_key(dsa);
|
|
|
|
|
|
|
|
|
|
seckey->pubkey.key.dsa.p = BN_dup(_p);
|
|
|
|
|
seckey->pubkey.key.dsa.q = BN_dup(_q);
|
|
|
|
|
seckey->pubkey.key.dsa.g = BN_dup(_g);
|
|
|
|
|
seckey->pubkey.key.dsa.y = BN_dup(_y);
|
|
|
|
|
seckey->key.dsa.x = BN_dup(_x);
|
|
|
|
|
|
|
|
|
|
BN_CTX_free(ctx);
|
|
|
|
|
|
|
|
|
|