diff options
author | Nikos Mavrogiannopoulos <nmav@gnutls.org> | 2010-05-31 00:17:14 +0200 |
---|---|---|
committer | Nikos Mavrogiannopoulos <nmav@gnutls.org> | 2010-06-03 19:55:02 +0200 |
commit | f0bb0ff371418b5a32fefd50e329733a9afc4b6d (patch) | |
tree | a51abb196c93f7d06764423e8bccd913beb3cebe /lib/x509/sign.c | |
parent | 0a120e76db70a0db2713d7bcddda07b027ca1842 (diff) | |
download | gnutls-f0bb0ff371418b5a32fefd50e329733a9afc4b6d.tar.gz |
Several fixes after big rebase.
Diffstat (limited to 'lib/x509/sign.c')
-rw-r--r-- | lib/x509/sign.c | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/lib/x509/sign.c b/lib/x509/sign.c index 22b1a57eb7..ca0f768f09 100644 --- a/lib/x509/sign.c +++ b/lib/x509/sign.c @@ -163,17 +163,21 @@ pk_pkcs1_rsa_hash (gnutls_digest_algorithm_t hash, const gnutls_datum_t * text, } int -pk_dsa_hash (const gnutls_datum_t * text, gnutls_datum_t * hash) +pk_dsa_hash (gnutls_digest_algorithm_t hash, const gnutls_datum_t * text, gnutls_datum_t * digest) { int ret; digest_hd_st hd; - gnutls_datum_t digest; - gnutls_digest_algorithm_t hash = _gnutls_dsa_q_to_hash(params[1]); + if (hash != GNUTLS_DIG_SHA1 && hash != GNUTLS_DIG_SHA224 && + hash != GNUTLS_DIG_SHA256) + { + gnutls_assert(); + return GNUTLS_E_INVALID_REQUEST; + } - hash->size = _gnutls_hash_get_algo_len(hash); - hash->data = gnutls_malloc( hash->size); - if (hash->data == NULL) + digest->size = _gnutls_hash_get_algo_len(hash); + digest->data = gnutls_malloc( digest->size); + if (digest->data == NULL) { gnutls_assert(); return GNUTLS_E_MEMORY_ERROR; @@ -188,12 +192,12 @@ pk_dsa_hash (const gnutls_datum_t * text, gnutls_datum_t * hash) _gnutls_hash (&hd, text->data, text->size); - _gnutls_hash_deinit (&hd, hash->data); + _gnutls_hash_deinit (&hd, digest->data); return 0; fail: - gnutls_free(hash->data); + gnutls_free(digest->data); return ret; } |