summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNikos Mavrogiannopoulos <nmav@gnutls.org>2011-09-08 17:55:29 +0200
committerNikos Mavrogiannopoulos <nmav@gnutls.org>2011-09-08 17:55:29 +0200
commit8c1f6e123b1e6aa852c2a823008e3dbf5ef0dd6b (patch)
tree418a17a072672046cd32f44dd5a04e9f3f313ec7
parentd0873ee0cb075836c874d44984bb80c7b0b9b602 (diff)
downloadgnutls-8c1f6e123b1e6aa852c2a823008e3dbf5ef0dd6b.tar.gz
converted quick data hashes to _gnutls_hash_fast and the hmac equivalent.
-rw-r--r--lib/gnutls_handshake.c25
-rw-r--r--lib/gnutls_sig.c22
-rw-r--r--lib/gnutls_srp.c5
-rw-r--r--lib/gnutls_state.c10
-rw-r--r--lib/gnutls_ui.c12
-rw-r--r--lib/nettle/mac.c2
6 files changed, 21 insertions, 55 deletions
diff --git a/lib/gnutls_handshake.c b/lib/gnutls_handshake.c
index 9617ac9dc8..5a4b4624c8 100644
--- a/lib/gnutls_handshake.c
+++ b/lib/gnutls_handshake.c
@@ -250,10 +250,8 @@ _gnutls_finished (gnutls_session_t session, int type, void *ret, int sending)
{
const int siz = TLS_MSG_LEN;
opaque concat[MAX_HASH_SIZE + 16 /*MD5 */ ];
- size_t hash_len = 20 + 16;
+ size_t hash_len;
const char *mesg;
- digest_hd_st td_md5;
- digest_hd_st td_sha;
int rc, len;
if (sending)
@@ -263,33 +261,24 @@ _gnutls_finished (gnutls_session_t session, int type, void *ret, int sending)
if (!_gnutls_version_has_selectable_prf (gnutls_protocol_get_version(session)))
{
- rc = _gnutls_hash_init (&td_sha, GNUTLS_DIG_SHA1);
+ rc = _gnutls_hash_fast( GNUTLS_DIG_SHA1, session->internals.handshake_hash_buffer.data, len, &concat[16]);
if (rc < 0)
return gnutls_assert_val(rc);
- rc = _gnutls_hash_init (&td_md5, GNUTLS_DIG_MD5);
+ rc = _gnutls_hash_fast( GNUTLS_DIG_MD5, session->internals.handshake_hash_buffer.data, len, concat);
if (rc < 0)
- {
- _gnutls_hash_deinit (&td_sha, NULL);
- return gnutls_assert_val(rc);
- }
- _gnutls_hash(&td_sha, session->internals.handshake_hash_buffer.data, len);
- _gnutls_hash(&td_md5, session->internals.handshake_hash_buffer.data, len);
-
- _gnutls_hash_deinit (&td_md5, concat);
- _gnutls_hash_deinit (&td_sha, &concat[16]);
+ return gnutls_assert_val(rc);
+
+ hash_len = 20 + 16;
}
else
{
int algorithm = _gnutls_cipher_suite_get_prf(&session->security_parameters.current_cipher_suite);
- rc = _gnutls_hash_init (&td_sha, algorithm);
+ rc = _gnutls_hash_fast( algorithm, session->internals.handshake_hash_buffer.data, len, concat);
if (rc < 0)
return gnutls_assert_val(rc);
- _gnutls_hash(&td_sha, session->internals.handshake_hash_buffer.data, len);
-
- _gnutls_hash_deinit (&td_sha, concat);
hash_len = _gnutls_hash_get_algo_len (algorithm);
}
diff --git a/lib/gnutls_sig.c b/lib/gnutls_sig.c
index 98cfb7857e..c906676411 100644
--- a/lib/gnutls_sig.c
+++ b/lib/gnutls_sig.c
@@ -431,14 +431,12 @@ _gnutls_handshake_verify_cert_vrfy12 (gnutls_session_t session,
hash_algo = _gnutls_sign_get_hash_algorithm(sign_algo);
- ret = _gnutls_hash_init(&td, hash_algo);
+ ret = _gnutls_hash_fast(hash_algo, session->internals.handshake_hash_buffer.data,
+ session->internals.handshake_hash_buffer_prev_len,
+ concat);
if (ret < 0)
return gnutls_assert_val(ret);
- _gnutls_hash(&td, session->internals.handshake_hash_buffer.data, session->internals.handshake_hash_buffer_prev_len);
-
- _gnutls_hash_deinit (&td, concat);
-
dconcat.data = concat;
dconcat.size = _gnutls_hash_get_algo_len (hash_algo);
@@ -559,7 +557,6 @@ _gnutls_handshake_sign_cert_vrfy12 (gnutls_session_t session,
gnutls_datum_t dconcat;
int ret;
opaque concat[MAX_SIG_SIZE];
- digest_hd_st td;
gnutls_sign_algorithm_t sign_algo;
gnutls_digest_algorithm_t hash_algo;
@@ -577,16 +574,11 @@ _gnutls_handshake_sign_cert_vrfy12 (gnutls_session_t session,
gnutls_sign_algorithm_get_name (sign_algo),
gnutls_mac_get_name (hash_algo));
- ret = _gnutls_hash_init (&td, hash_algo);
+ ret = _gnutls_hash_fast (hash_algo, session->internals.handshake_hash_buffer.data,
+ session->internals.handshake_hash_buffer.length,
+ concat);
if (ret < 0)
- {
- gnutls_assert ();
- return ret;
- }
-
- _gnutls_hash(&td, session->internals.handshake_hash_buffer.data, session->internals.handshake_hash_buffer.length);
-
- _gnutls_hash_deinit (&td, concat);
+ return gnutls_assert_val(ret);
dconcat.data = concat;
dconcat.size = _gnutls_hash_get_algo_len (hash_algo);
diff --git a/lib/gnutls_srp.c b/lib/gnutls_srp.c
index 6df501a760..4509834f09 100644
--- a/lib/gnutls_srp.c
+++ b/lib/gnutls_srp.c
@@ -172,7 +172,6 @@ _gnutls_calc_srp_u (bigint_t A, bigint_t B, bigint_t n)
size_t b_size, a_size;
opaque *holder, hd[MAX_HASH_SIZE];
size_t holder_size, hash_size, n_size;
- digest_hd_st td;
int ret;
bigint_t res;
@@ -197,15 +196,13 @@ _gnutls_calc_srp_u (bigint_t A, bigint_t B, bigint_t n)
_gnutls_mpi_print (A, &holder[n_size - a_size], &a_size);
_gnutls_mpi_print (B, &holder[n_size + n_size - b_size], &b_size);
- ret = _gnutls_hash_init (&td, GNUTLS_MAC_SHA1);
+ ret = _gnutls_hash_fast (GNUTLS_MAC_SHA1, holder, holder_size, hd);
if (ret < 0)
{
gnutls_free (holder);
gnutls_assert ();
return NULL;
}
- _gnutls_hash (&td, holder, holder_size);
- _gnutls_hash_deinit (&td, hd);
/* convert the bytes of hd to integer
*/
diff --git a/lib/gnutls_state.c b/lib/gnutls_state.c
index e1b3ac58ac..5fb782a8d7 100644
--- a/lib/gnutls_state.c
+++ b/lib/gnutls_state.c
@@ -794,15 +794,9 @@ _gnutls_cal_PRF_A (gnutls_mac_algorithm_t algorithm,
digest_hd_st td1;
int ret;
- ret = _gnutls_hmac_init (&td1, algorithm, secret, secret_size);
+ ret = _gnutls_hmac_fast (algorithm, secret, secret_size, seed, seed_size, result);
if (ret < 0)
- {
- gnutls_assert ();
- return ret;
- }
-
- _gnutls_hmac (&td1, seed, seed_size);
- _gnutls_hmac_deinit (&td1, result);
+ return gnutls_assert_val(ret);
return 0;
}
diff --git a/lib/gnutls_ui.c b/lib/gnutls_ui.c
index 6aed5758d9..e05dd4d47b 100644
--- a/lib/gnutls_ui.c
+++ b/lib/gnutls_ui.c
@@ -557,6 +557,7 @@ gnutls_fingerprint (gnutls_digest_algorithm_t algo,
size_t * result_size)
{
digest_hd_st td;
+ int ret;
int hash_len = _gnutls_hash_get_algo_len (HASH2MAC (algo));
if (hash_len < 0 || (unsigned) hash_len > *result_size || result == NULL)
@@ -568,16 +569,9 @@ gnutls_fingerprint (gnutls_digest_algorithm_t algo,
if (result)
{
- int ret = _gnutls_hash_init (&td, HASH2MAC (algo));
+ ret = _gnutls_hash_fast( algo, data->data, data->size, result);
if (ret < 0)
- {
- gnutls_assert ();
- return ret;
- }
-
- _gnutls_hash (&td, data->data, data->size);
-
- _gnutls_hash_deinit (&td, result);
+ return gnutls_assert_val(ret);
}
return 0;
diff --git a/lib/nettle/mac.c b/lib/nettle/mac.c
index 479b693c03..3be974acac 100644
--- a/lib/nettle/mac.c
+++ b/lib/nettle/mac.c
@@ -74,7 +74,7 @@ struct nettle_hmac_ctx
digest_func digest;
set_key_func setkey;
-/* FIXME: Nettle doesn't have a reset function for
+/* Note: Nettle doesn't have a reset function for
* hmac so we need to manually reset a context, by
* calling set_key(). For that reason we need to
* store the hmac key here.