diff options
author | Werner Koch <[email protected]> | 1999-07-15 08:16:46 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 1999-07-15 08:16:46 +0000 |
commit | a316550579f16fba4200e6deeb5905f549a5fcc3 (patch) | |
tree | 54dcf4ec1609638eee69c0099b19d851c7f98087 /cipher/dsa.c | |
parent | See ChangeLog: Wed Jul 14 19:42:08 CEST 1999 Werner Koch (diff) | |
download | gnupg-a316550579f16fba4200e6deeb5905f549a5fcc3.tar.gz gnupg-a316550579f16fba4200e6deeb5905f549a5fcc3.zip |
See ChangeLog: Thu Jul 15 10:15:35 CEST 1999 Werner Koch
Diffstat (limited to 'cipher/dsa.c')
-rw-r--r-- | cipher/dsa.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/cipher/dsa.c b/cipher/dsa.c index 9154f49d6..5828b9508 100644 --- a/cipher/dsa.c +++ b/cipher/dsa.c @@ -300,6 +300,7 @@ verify(MPI r, MPI s, MPI hash, DSA_public_key *pkey ) MPI base[3]; MPI exp[3]; + if( !(mpi_cmp_ui( r, 0 ) > 0 && mpi_cmp( r, pkey->q ) < 0) ) return 0; /* assertion 0 < r < q failed */ if( !(mpi_cmp_ui( s, 0 ) > 0 && mpi_cmp( s, pkey->q ) < 0) ) @@ -365,6 +366,8 @@ dsa_check_secret_key( int algo, MPI *skey ) if( algo != PUBKEY_ALGO_DSA ) return G10ERR_PUBKEY_ALGO; + if( !skey[0] || !skey[1] || !skey[2] || !skey[3] || !skey[4] ) + return G10ERR_BAD_MPI; sk.p = skey[0]; sk.q = skey[1]; @@ -386,6 +389,8 @@ dsa_sign( int algo, MPI *resarr, MPI data, MPI *skey ) if( algo != PUBKEY_ALGO_DSA ) return G10ERR_PUBKEY_ALGO; + if( !data || !skey[0] || !skey[1] || !skey[2] || !skey[3] || !skey[4] ) + return G10ERR_BAD_MPI; sk.p = skey[0]; sk.q = skey[1]; @@ -406,6 +411,9 @@ dsa_verify( int algo, MPI hash, MPI *data, MPI *pkey, if( algo != PUBKEY_ALGO_DSA ) return G10ERR_PUBKEY_ALGO; + if( !data[0] || !data[1] || !hash + || !pkey[0] || !pkey[1] || !pkey[2] || !pkey[3] ) + return G10ERR_BAD_MPI; pk.p = pkey[0]; pk.q = pkey[1]; |