Use intermediate pointer for readability and rename PMS pointer in ECHDE-PSK PSA version of ssl_write_client_key_exchange()
Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
diff --git a/library/ssl_tls12_client.c b/library/ssl_tls12_client.c
index 92c1cd3..f5473f4 100644
--- a/library/ssl_tls12_client.c
+++ b/library/ssl_tls12_client.c
@@ -3029,9 +3029,8 @@
const size_t content_len_size = 2;
header_len = 4;
- content_len = ssl->conf->psk_identity_len;
- if( header_len + content_len_size + content_len
+ if( header_len + content_len_size + ssl->conf->psk_identity_len
> MBEDTLS_SSL_OUT_CONTENT_LEN )
{
MBEDTLS_SSL_DEBUG_MSG( 1,
@@ -3039,12 +3038,16 @@
return( MBEDTLS_ERR_SSL_BUFFER_TOO_SMALL );
}
- ssl->out_msg[header_len++] = MBEDTLS_BYTE_1( content_len );
- ssl->out_msg[header_len++] = MBEDTLS_BYTE_0( content_len );
+ unsigned char *p = ssl->out_msg + header_len;
- memcpy( ssl->out_msg + header_len,
- ssl->conf->psk_identity,
+ *p++ = MBEDTLS_BYTE_1( ssl->conf->psk_identity_len );
+ *p++ = MBEDTLS_BYTE_0( ssl->conf->psk_identity_len );
+ header_len += content_len_size;
+
+ memcpy( p, ssl->conf->psk_identity,
ssl->conf->psk_identity_len );
+ p += ssl->conf->psk_identity_len;
+
header_len += ssl->conf->psk_identity_len;
MBEDTLS_SSL_DEBUG_MSG( 1, ( "Perform PSA-based ECDH computation." ) );
@@ -3075,7 +3078,7 @@
/* Export the public part of the ECDH private key from PSA.
* The export format is an ECPoint structure as expected by TLS,
* but we just need to add a length byte before that. */
- unsigned char *own_pubkey = ssl->out_msg + header_len + 1;
+ unsigned char *own_pubkey = p + 1;
unsigned char *end = ssl->out_msg + MBEDTLS_SSL_OUT_CONTENT_LEN;
size_t own_pubkey_max_len = (size_t)( end - own_pubkey );
size_t own_pubkey_len = 0;
@@ -3090,7 +3093,7 @@
return( psa_ssl_status_to_mbedtls( status ) );
}
- ssl->out_msg[header_len] = (unsigned char) own_pubkey_len;
+ *p = (unsigned char) own_pubkey_len;
content_len = own_pubkey_len + 1;
/* As RFC 5489 section 2, the premaster secret is formed as follows:
@@ -3099,8 +3102,8 @@
* - a uint16 containing the length (in octets) of the PSK
* - the PSK itself
*/
- unsigned char *p = ssl->handshake->premaster;
- const unsigned char* const p_end = p +
+ unsigned char *pms = ssl->handshake->premaster;
+ const unsigned char* const pms_end = pms +
sizeof( ssl->handshake->premaster );
/* uint16 to store length (in octets) of the ECDH computation */
const size_t zlen_size = 2;
@@ -3111,8 +3114,8 @@
handshake->ecdh_psa_privkey,
handshake->ecdh_psa_peerkey,
handshake->ecdh_psa_peerkey_len,
- p + zlen_size,
- p_end - ( p + zlen_size ),
+ pms + zlen_size,
+ pms_end - ( pms + zlen_size ),
&zlen );
destruction_status = psa_destroy_key( handshake->ecdh_psa_privkey );
@@ -3124,11 +3127,11 @@
return( psa_ssl_status_to_mbedtls( destruction_status ) );
/* Write the ECDH computation length before the ECDH computation */
- MBEDTLS_PUT_UINT16_BE( zlen, p, 0 );
- p += zlen_size + zlen;
+ MBEDTLS_PUT_UINT16_BE( zlen, pms, 0 );
+ pms += zlen_size + zlen;
/* opaque psk<0..2^16-1>; */
- if( p_end - p < 2 )
+ if( pms_end - pms < 2 )
return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA );
const unsigned char *psk = NULL;
@@ -3143,17 +3146,17 @@
return( MBEDTLS_ERR_SSL_INTERNAL_ERROR );
/* Write the PSK length as uint16 */
- MBEDTLS_PUT_UINT16_BE( psk_len, p, 0 );
- p += 2;
+ MBEDTLS_PUT_UINT16_BE( psk_len, pms, 0 );
+ pms += 2;
- if( p_end < p || (size_t)( p_end - p ) < psk_len )
+ if( pms_end < pms || (size_t)( pms_end - pms ) < psk_len )
return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA );
/* Write the PSK itself */
- memcpy( p, psk, psk_len );
- p += psk_len;
+ memcpy( pms, psk, psk_len );
+ pms += psk_len;
- ssl->handshake->pmslen = p - ssl->handshake->premaster;
+ ssl->handshake->pmslen = pms - ssl->handshake->premaster;
}
else
#endif /* MBEDTLS_USE_PSA_CRYPTO &&