diff options
author | Werner Koch <[email protected]> | 1998-06-15 15:41:04 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 1998-06-15 15:41:04 +0000 |
commit | 6e1ca6b80fb50ff5e1c065b7ac12635487b4a6d2 (patch) | |
tree | 7c4a888893a91b59753b3d89e59832f8c24ba039 /g10/seskey.c | |
parent | gnupg extension are now working (diff) | |
download | gnupg-6e1ca6b80fb50ff5e1c065b7ac12635487b4a6d2.tar.gz gnupg-6e1ca6b80fb50ff5e1c065b7ac12635487b4a6d2.zip |
extensions are now working and fixed a lot of bugs
Diffstat (limited to '')
-rw-r--r-- | g10/seskey.c | 20 |
1 files changed, 16 insertions, 4 deletions
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; } |