diff options
author | Nikos Mavrogiannopoulos <nmav@redhat.com> | 2018-04-20 10:47:59 +0200 |
---|---|---|
committer | Nikos Mavrogiannopoulos <nmav@redhat.com> | 2018-05-04 11:27:02 +0200 |
commit | efbae69a6d3f1f5d6df944d92754d7e70a050171 (patch) | |
tree | 47964a0cf9361a8b5784ae6a91aa6454885846c7 /lib/tls13-sig.c | |
parent | 76771233e349feb3c0acfe134effca06fd291be0 (diff) | |
download | gnutls-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.c | 15 |
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; |