aboutsummaryrefslogtreecommitdiffstats
path: root/g10/rsa.c
diff options
context:
space:
mode:
Diffstat (limited to 'g10/rsa.c')
-rw-r--r--g10/rsa.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/g10/rsa.c b/g10/rsa.c
index c6266516f..b81e1b1bf 100644
--- a/g10/rsa.c
+++ b/g10/rsa.c
@@ -64,19 +64,20 @@ g10_rsa_encrypt( PKT_public_cert *pkc, PKT_pubkey_enc *enc, DEK *dek )
void
-g10_rsa_sign( PKT_secret_cert *skc, PKT_signature *sig, MD_HANDLE md )
+g10_rsa_sign( PKT_secret_cert *skc, PKT_signature *sig,
+ MD_HANDLE md, int digest_algo )
{
#ifdef HAVE_RSA_CIPHER
RSA_secret_key skey;
byte *dp;
assert( sig->pubkey_algo == PUBKEY_ALGO_RSA );
+ 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.rsa.digest_algo = md_get_algo( md );
+ sig->d.rsa.digest_algo = digest_algo;
sig->d.rsa.digest_start[0] = dp[0];
sig->d.rsa.digest_start[1] = dp[1];
sig->d.rsa.rsa_integer =