summaryrefslogtreecommitdiff
path: root/lib/tls13-sig.c
diff options
context:
space:
mode:
authorNikos Mavrogiannopoulos <nmav@redhat.com>2018-04-20 10:47:59 +0200
committerNikos Mavrogiannopoulos <nmav@redhat.com>2018-05-04 11:27:02 +0200
commitefbae69a6d3f1f5d6df944d92754d7e70a050171 (patch)
tree47964a0cf9361a8b5784ae6a91aa6454885846c7 /lib/tls13-sig.c
parent76771233e349feb3c0acfe134effca06fd291be0 (diff)
downloadgnutls-efbae69a6d3f1f5d6df944d92754d7e70a050171.tar.gz
_gnutls13_handshake_sign_data: avoid unnecessary copy
Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
Diffstat (limited to 'lib/tls13-sig.c')
-rw-r--r--lib/tls13-sig.c15
1 files changed, 9 insertions, 6 deletions
diff --git a/lib/tls13-sig.c b/lib/tls13-sig.c
index 334052df2c..1c5bc34c61 100644
--- a/lib/tls13-sig.c
+++ b/lib/tls13-sig.c
@@ -142,7 +142,7 @@ _gnutls13_handshake_sign_data(gnutls_session_t session,
gnutls_datum_t p;
int ret;
gnutls_buffer_st buf;
- uint8_t prefix[PREFIX_SIZE];
+ uint8_t tmp[MAX_HASH_SIZE];
if (unlikely(se == NULL || se->tls13_ok == 0))
return gnutls_assert_val(GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER);
@@ -151,17 +151,20 @@ _gnutls13_handshake_sign_data(gnutls_session_t session,
return gnutls_assert_val(GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER);
_gnutls_handshake_log
- ("HSK[%p]: signing TLS 1.3 handshake data: using %s\n", session, se->name);
+ ("HSK[%p]: signing TLS 1.3 handshake data: using %s and PRF: %s\n", session, se->name,
+ session->security_parameters.prf->name);
_gnutls_buffer_init(&buf);
- memset(prefix, 0x20, sizeof(prefix));
- ret = _gnutls_buffer_append_data(&buf, prefix, sizeof(prefix));
+ ret = _gnutls_buffer_resize(&buf, PREFIX_SIZE);
if (ret < 0) {
gnutls_assert();
goto cleanup;
}
+ memset(buf.data, 0x20, PREFIX_SIZE);
+ buf.length += PREFIX_SIZE;
+
ret = _gnutls_buffer_append_data(&buf, context->data, context->size);
if (ret < 0) {
gnutls_assert();
@@ -177,13 +180,13 @@ _gnutls13_handshake_sign_data(gnutls_session_t session,
ret = gnutls_hash_fast(session->security_parameters.prf->id,
session->internals.handshake_hash_buffer.data,
session->internals.handshake_hash_buffer.length,
- prefix);
+ tmp);
if (ret < 0) {
gnutls_assert();
goto cleanup;
}
- ret = _gnutls_buffer_append_data(&buf, prefix, session->security_parameters.prf->output_size);
+ ret = _gnutls_buffer_append_data(&buf, tmp, session->security_parameters.prf->output_size);
if (ret < 0) {
gnutls_assert();
goto cleanup;