From 6e1ca6b80fb50ff5e1c065b7ac12635487b4a6d2 Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Mon, 15 Jun 1998 15:41:04 +0000 Subject: extensions are now working and fixed a lot of bugs --- g10/seskey.c | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) (limited to 'g10/seskey.c') diff --git a/g10/seskey.c b/g10/seskey.c index 25819909c..5b271a2d4 100644 --- a/g10/seskey.c +++ b/g10/seskey.c @@ -144,13 +144,25 @@ do_encode_md( MD_HANDLE md, int algo, size_t len, unsigned nbits, MPI -encode_md_value( MD_HANDLE md, int hash_algo, unsigned nbits ) +encode_md_value( int pubkey_algo, MD_HANDLE md, int hash_algo, unsigned nbits ) { int algo = hash_algo? hash_algo : md_get_algo(md); const byte *asn; size_t asnlen, mdlen; - - asn = md_asn_oid( algo, &asnlen, &mdlen ); - return do_encode_md( md, algo, mdlen, nbits, asn, asnlen ); + MPI frame; + + if( pubkey_algo == PUBKEY_ALGO_DSA ) { + frame = md_is_secure(md)? mpi_alloc_secure((md_digest_length(hash_algo) + +BYTES_PER_MPI_LIMB-1) / BYTES_PER_MPI_LIMB ) + : mpi_alloc((md_digest_length(hash_algo) + +BYTES_PER_MPI_LIMB-1) / BYTES_PER_MPI_LIMB ); + mpi_set_buffer( frame, md_read(md, hash_algo), + md_digest_length(hash_algo), 0 ); + } + else { + asn = md_asn_oid( algo, &asnlen, &mdlen ); + frame = do_encode_md( md, algo, mdlen, nbits, asn, asnlen ); + } + return frame; } -- cgit v1.2.3