mirror of
https://github.com/yuzu-emu/mbedtls.git
synced 2025-01-10 20:25:47 +00:00
Move ssl_mac() from ssl_tls.c to ssl_msg.c
This commit is contained in:
parent
f1a3828ad8
commit
9d062f9cd7
|
@ -457,6 +457,53 @@ static void ssl_extract_add_data_from_record( unsigned char* add_data,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(MBEDTLS_SSL_PROTO_SSL3)
|
||||||
|
|
||||||
|
#define SSL3_MAC_MAX_BYTES 20 /* MD-5 or SHA-1 */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* SSLv3.0 MAC functions
|
||||||
|
*/
|
||||||
|
static void ssl_mac( mbedtls_md_context_t *md_ctx,
|
||||||
|
const unsigned char *secret,
|
||||||
|
const unsigned char *buf, size_t len,
|
||||||
|
const unsigned char *ctr, int type,
|
||||||
|
unsigned char out[SSL3_MAC_MAX_BYTES] )
|
||||||
|
{
|
||||||
|
unsigned char header[11];
|
||||||
|
unsigned char padding[48];
|
||||||
|
int padlen;
|
||||||
|
int md_size = mbedtls_md_get_size( md_ctx->md_info );
|
||||||
|
int md_type = mbedtls_md_get_type( md_ctx->md_info );
|
||||||
|
|
||||||
|
/* Only MD5 and SHA-1 supported */
|
||||||
|
if( md_type == MBEDTLS_MD_MD5 )
|
||||||
|
padlen = 48;
|
||||||
|
else
|
||||||
|
padlen = 40;
|
||||||
|
|
||||||
|
memcpy( header, ctr, 8 );
|
||||||
|
header[ 8] = (unsigned char) type;
|
||||||
|
header[ 9] = (unsigned char)( len >> 8 );
|
||||||
|
header[10] = (unsigned char)( len );
|
||||||
|
|
||||||
|
memset( padding, 0x36, padlen );
|
||||||
|
mbedtls_md_starts( md_ctx );
|
||||||
|
mbedtls_md_update( md_ctx, secret, md_size );
|
||||||
|
mbedtls_md_update( md_ctx, padding, padlen );
|
||||||
|
mbedtls_md_update( md_ctx, header, 11 );
|
||||||
|
mbedtls_md_update( md_ctx, buf, len );
|
||||||
|
mbedtls_md_finish( md_ctx, out );
|
||||||
|
|
||||||
|
memset( padding, 0x5C, padlen );
|
||||||
|
mbedtls_md_starts( md_ctx );
|
||||||
|
mbedtls_md_update( md_ctx, secret, md_size );
|
||||||
|
mbedtls_md_update( md_ctx, padding, padlen );
|
||||||
|
mbedtls_md_update( md_ctx, out, md_size );
|
||||||
|
mbedtls_md_finish( md_ctx, out );
|
||||||
|
}
|
||||||
|
#endif /* MBEDTLS_SSL_PROTO_SSL3 */
|
||||||
|
|
||||||
int mbedtls_ssl_encrypt_buf( mbedtls_ssl_context *ssl,
|
int mbedtls_ssl_encrypt_buf( mbedtls_ssl_context *ssl,
|
||||||
mbedtls_ssl_transform *transform,
|
mbedtls_ssl_transform *transform,
|
||||||
mbedtls_record *rec,
|
mbedtls_record *rec,
|
||||||
|
@ -573,7 +620,7 @@ int mbedtls_ssl_encrypt_buf( mbedtls_ssl_context *ssl,
|
||||||
#if defined(MBEDTLS_SSL_PROTO_SSL3)
|
#if defined(MBEDTLS_SSL_PROTO_SSL3)
|
||||||
if( transform->minor_ver == MBEDTLS_SSL_MINOR_VERSION_0 )
|
if( transform->minor_ver == MBEDTLS_SSL_MINOR_VERSION_0 )
|
||||||
{
|
{
|
||||||
unsigned char mac[SSL_MAC_MAX_BYTES];
|
unsigned char mac[SSL3_MAC_MAX_BYTES];
|
||||||
ssl_mac( &transform->md_ctx_enc, transform->mac_enc,
|
ssl_mac( &transform->md_ctx_enc, transform->mac_enc,
|
||||||
data, rec->data_len, rec->ctr, rec->type, mac );
|
data, rec->data_len, rec->ctr, rec->type, mac );
|
||||||
memcpy( data + rec->data_len, mac, transform->maclen );
|
memcpy( data + rec->data_len, mac, transform->maclen );
|
||||||
|
|
|
@ -1943,51 +1943,6 @@ int mbedtls_ssl_psk_derive_premaster( mbedtls_ssl_context *ssl, mbedtls_key_exch
|
||||||
}
|
}
|
||||||
#endif /* MBEDTLS_KEY_EXCHANGE__SOME__PSK_ENABLED */
|
#endif /* MBEDTLS_KEY_EXCHANGE__SOME__PSK_ENABLED */
|
||||||
|
|
||||||
#if defined(MBEDTLS_SSL_PROTO_SSL3)
|
|
||||||
/*
|
|
||||||
* SSLv3.0 MAC functions
|
|
||||||
*/
|
|
||||||
#define SSL_MAC_MAX_BYTES 20 /* MD-5 or SHA-1 */
|
|
||||||
static void ssl_mac( mbedtls_md_context_t *md_ctx,
|
|
||||||
const unsigned char *secret,
|
|
||||||
const unsigned char *buf, size_t len,
|
|
||||||
const unsigned char *ctr, int type,
|
|
||||||
unsigned char out[SSL_MAC_MAX_BYTES] )
|
|
||||||
{
|
|
||||||
unsigned char header[11];
|
|
||||||
unsigned char padding[48];
|
|
||||||
int padlen;
|
|
||||||
int md_size = mbedtls_md_get_size( md_ctx->md_info );
|
|
||||||
int md_type = mbedtls_md_get_type( md_ctx->md_info );
|
|
||||||
|
|
||||||
/* Only MD5 and SHA-1 supported */
|
|
||||||
if( md_type == MBEDTLS_MD_MD5 )
|
|
||||||
padlen = 48;
|
|
||||||
else
|
|
||||||
padlen = 40;
|
|
||||||
|
|
||||||
memcpy( header, ctr, 8 );
|
|
||||||
header[ 8] = (unsigned char) type;
|
|
||||||
header[ 9] = (unsigned char)( len >> 8 );
|
|
||||||
header[10] = (unsigned char)( len );
|
|
||||||
|
|
||||||
memset( padding, 0x36, padlen );
|
|
||||||
mbedtls_md_starts( md_ctx );
|
|
||||||
mbedtls_md_update( md_ctx, secret, md_size );
|
|
||||||
mbedtls_md_update( md_ctx, padding, padlen );
|
|
||||||
mbedtls_md_update( md_ctx, header, 11 );
|
|
||||||
mbedtls_md_update( md_ctx, buf, len );
|
|
||||||
mbedtls_md_finish( md_ctx, out );
|
|
||||||
|
|
||||||
memset( padding, 0x5C, padlen );
|
|
||||||
mbedtls_md_starts( md_ctx );
|
|
||||||
mbedtls_md_update( md_ctx, secret, md_size );
|
|
||||||
mbedtls_md_update( md_ctx, padding, padlen );
|
|
||||||
mbedtls_md_update( md_ctx, out, md_size );
|
|
||||||
mbedtls_md_finish( md_ctx, out );
|
|
||||||
}
|
|
||||||
#endif /* MBEDTLS_SSL_PROTO_SSL3 */
|
|
||||||
|
|
||||||
#if defined(MBEDTLS_SSL_SRV_C) && defined(MBEDTLS_SSL_RENEGOTIATION)
|
#if defined(MBEDTLS_SSL_SRV_C) && defined(MBEDTLS_SSL_RENEGOTIATION)
|
||||||
static int ssl_write_hello_request( mbedtls_ssl_context *ssl );
|
static int ssl_write_hello_request( mbedtls_ssl_context *ssl );
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue