Get rid of md_info outside helper functions
Signed-off-by: Manuel Pégourié-Gonnard <manuel.pegourie-gonnard@arm.com>
diff --git a/library/rsa.c b/library/rsa.c
index 7e7af2a..d879a30 100644
--- a/library/rsa.c
+++ b/library/rsa.c
@@ -502,10 +502,8 @@
if( ( padding == MBEDTLS_RSA_PKCS_V21 ) &&
( hash_id != MBEDTLS_MD_NONE ) )
{
- const mbedtls_md_info_t *md_info;
-
- md_info = mbedtls_md_info_from_type( hash_id );
- if( md_info == NULL )
+ /* Just make sure this hash is supported in this build. */
+ if( mbedtls_hash_info_get_size( hash_id ) == 0 )
return( MBEDTLS_ERR_RSA_INVALID_PADDING );
}
#endif /* MBEDTLS_PKCS1_V21 */
@@ -1236,7 +1234,6 @@
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
unsigned char *p = output;
unsigned int hlen;
- const mbedtls_md_info_t *md_info;
RSA_VALIDATE_RET( ctx != NULL );
RSA_VALIDATE_RET( output != NULL );
@@ -1246,12 +1243,11 @@
if( f_rng == NULL )
return( MBEDTLS_ERR_RSA_BAD_INPUT_DATA );
- md_info = mbedtls_md_info_from_type( (mbedtls_md_type_t) ctx->hash_id );
- if( md_info == NULL )
+ hlen = mbedtls_hash_info_get_size( (mbedtls_md_type_t) ctx->hash_id );
+ if( hlen == 0 )
return( MBEDTLS_ERR_RSA_BAD_INPUT_DATA );
olen = ctx->len;
- hlen = mbedtls_md_get_size( md_info );
/* first comparison checks for overflow */
if( ilen + 2 * hlen + 2 < ilen || olen < ilen + 2 * hlen + 2 )
@@ -1399,7 +1395,6 @@
unsigned char buf[MBEDTLS_MPI_MAX_SIZE];
unsigned char lhash[MBEDTLS_MD_MAX_SIZE];
unsigned int hlen;
- const mbedtls_md_info_t *md_info;
RSA_VALIDATE_RET( ctx != NULL );
RSA_VALIDATE_RET( output_max_len == 0 || output != NULL );
@@ -1418,12 +1413,10 @@
if( ilen < 16 || ilen > sizeof( buf ) )
return( MBEDTLS_ERR_RSA_BAD_INPUT_DATA );
- md_info = mbedtls_md_info_from_type( (mbedtls_md_type_t) ctx->hash_id );
- if( md_info == NULL )
+ hlen = mbedtls_hash_info_get_size( (mbedtls_md_type_t) ctx->hash_id );
+ if( hlen == 0 )
return( MBEDTLS_ERR_RSA_BAD_INPUT_DATA );
- hlen = mbedtls_md_get_size( md_info );
-
// checking for integer underflow
if( 2 * hlen + 2 > ilen )
return( MBEDTLS_ERR_RSA_BAD_INPUT_DATA );
@@ -1609,7 +1602,6 @@
size_t slen, min_slen, hlen, offset = 0;
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
size_t msb;
- const mbedtls_md_info_t *md_info;
RSA_VALIDATE_RET( ctx != NULL );
RSA_VALIDATE_RET( ( md_alg == MBEDTLS_MD_NONE &&
@@ -1628,20 +1620,18 @@
if( md_alg != MBEDTLS_MD_NONE )
{
/* Gather length of hash to sign */
- md_info = mbedtls_md_info_from_type( md_alg );
- if( md_info == NULL )
+ size_t exp_hashlen = mbedtls_hash_info_get_size( md_alg );
+ if( exp_hashlen == 0 )
return( MBEDTLS_ERR_RSA_BAD_INPUT_DATA );
- if( hashlen != mbedtls_md_get_size( md_info ) )
+ if( hashlen != exp_hashlen )
return( MBEDTLS_ERR_RSA_BAD_INPUT_DATA );
}
- md_info = mbedtls_md_info_from_type( (mbedtls_md_type_t) ctx->hash_id );
- if( md_info == NULL )
+ hlen = mbedtls_hash_info_get_size( (mbedtls_md_type_t) ctx->hash_id );
+ if( hlen == 0 )
return( MBEDTLS_ERR_RSA_BAD_INPUT_DATA );
- hlen = mbedtls_md_get_size( md_info );
-
if (saltlen == MBEDTLS_RSA_SALT_LEN_ANY)
{
/* Calculate the largest possible salt length, up to the hash size.
@@ -2001,7 +1991,6 @@
unsigned char result[MBEDTLS_MD_MAX_SIZE];
unsigned int hlen;
size_t observed_salt_len, msb;
- const mbedtls_md_info_t *md_info;
unsigned char buf[MBEDTLS_MPI_MAX_SIZE] = {0};
RSA_VALIDATE_RET( ctx != NULL );
@@ -2028,20 +2017,18 @@
if( md_alg != MBEDTLS_MD_NONE )
{
/* Gather length of hash to sign */
- md_info = mbedtls_md_info_from_type( md_alg );
- if( md_info == NULL )
+ size_t exp_hashlen = mbedtls_hash_info_get_size( md_alg );
+ if( exp_hashlen == 0 )
return( MBEDTLS_ERR_RSA_BAD_INPUT_DATA );
- if( hashlen != mbedtls_md_get_size( md_info ) )
+ if( hashlen != exp_hashlen )
return( MBEDTLS_ERR_RSA_BAD_INPUT_DATA );
}
- md_info = mbedtls_md_info_from_type( mgf1_hash_id );
- if( md_info == NULL )
+ hlen = mbedtls_hash_info_get_size( mgf1_hash_id );
+ if( hlen == 0 )
return( MBEDTLS_ERR_RSA_BAD_INPUT_DATA );
- hlen = mbedtls_md_get_size( md_info );
-
/*
* Note: EMSA-PSS verification is over the length of N - 1 bits
*/