diff options
Diffstat (limited to 'g10/elg.c')
-rw-r--r-- | g10/elg.c | 10 |
1 files changed, 6 insertions, 4 deletions
@@ -66,18 +66,20 @@ g10_elg_encrypt( PKT_public_cert *pkc, PKT_pubkey_enc *enc, DEK *dek ) void -g10_elg_sign( PKT_secret_cert *skc, PKT_signature *sig, MD_HANDLE md ) +g10_elg_sign( PKT_secret_cert *skc, PKT_signature *sig, + MD_HANDLE md, int digest_algo ) { ELG_secret_key skey; MPI frame; byte *dp; assert( sig->pubkey_algo == PUBKEY_ALGO_ELGAMAL ); + if( !digest_algo ) + digest_algo = md_get_algo(md); - md_final( md ); - dp = md_read( md, 0 ); + dp = md_read( md, digest_algo ); keyid_from_skc( skc, sig->keyid ); - sig->d.elg.digest_algo = md_get_algo(md); + sig->d.elg.digest_algo = digest_algo; sig->d.elg.digest_start[0] = dp[0]; sig->d.elg.digest_start[1] = dp[1]; sig->d.elg.a = mpi_alloc( mpi_get_nlimbs(skc->d.elg.p) ); |