summaryrefslogtreecommitdiff
path: root/lib/x509/sign.c
diff options
context:
space:
mode:
authorNikos Mavrogiannopoulos <nmav@gnutls.org>2010-05-31 00:17:14 +0200
committerNikos Mavrogiannopoulos <nmav@gnutls.org>2010-06-03 19:55:02 +0200
commitf0bb0ff371418b5a32fefd50e329733a9afc4b6d (patch)
treea51abb196c93f7d06764423e8bccd913beb3cebe /lib/x509/sign.c
parent0a120e76db70a0db2713d7bcddda07b027ca1842 (diff)
downloadgnutls-f0bb0ff371418b5a32fefd50e329733a9afc4b6d.tar.gz
Several fixes after big rebase.
Diffstat (limited to 'lib/x509/sign.c')
-rw-r--r--lib/x509/sign.c20
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;
}