aboutsummaryrefslogtreecommitdiffstats
path: root/g10/sign.c
diff options
context:
space:
mode:
Diffstat (limited to 'g10/sign.c')
-rw-r--r--g10/sign.c19
1 files changed, 10 insertions, 9 deletions
diff --git a/g10/sign.c b/g10/sign.c
index d1d981480..b7fd7bb20 100644
--- a/g10/sign.c
+++ b/g10/sign.c
@@ -313,18 +313,19 @@ do_sign( PKT_secret_key *sk, PKT_signature *sig,
size_t rbuflen;
char *snbuf;
- snbuf = serialno_and_fpr_from_sk (sk->protect.iv, sk->protect.ivlen,sk);
- rc = G10ERR_GENERAL;
-/* agent_scd_pksign (snbuf, digest_algo, */
-/* gcry_md_read (md, digest_algo), */
-/* gcry_md_get_algo_dlen (digest_algo), */
-/* &rbuf, &rbuflen); */
+ snbuf = serialno_and_fpr_from_sk (sk->protect.iv,
+ sk->protect.ivlen, sk);
+ rc = agent_scd_pksign (snbuf, digest_algo,
+ md_read (md, digest_algo),
+ md_digest_length (digest_algo),
+ &rbuf, &rbuflen);
xfree (snbuf);
if (!rc)
{
-/* if (gcry_mpi_scan (&sig->data[0], GCRYMPI_FMT_USG, */
-/* rbuf, rbuflen, NULL)) */
- BUG ();
+ sig->data[0] = mpi_alloc ( (rbuflen+BYTES_PER_MPI_LIMB-1)
+ / BYTES_PER_MPI_LIMB );
+ mpi_set_buffer (sig->data[0], rbuf, rbuflen, 0);
+ xfree (rbuf);
}
}
else