aboutsummaryrefslogtreecommitdiffstats
path: root/g10/elg.c
diff options
context:
space:
mode:
Diffstat (limited to 'g10/elg.c')
-rw-r--r--g10/elg.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/g10/elg.c b/g10/elg.c
index 492049a30..f3a8923fa 100644
--- a/g10/elg.c
+++ b/g10/elg.c
@@ -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) );