From f5ebe2a7ce7d9806e6b3f239d3ed6729196aa38d Mon Sep 17 00:00:00 2001 From: Jarno Lamsa Date: Wed, 2 Oct 2019 08:23:11 +0300 Subject: [PATCH] Make RNG exclude the given maximum value The RNG will give numbers in range of [0, num), so that the given maximum is excluded. --- include/mbedtls/platform_util.h | 5 +++-- library/platform_util.c | 4 ++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/include/mbedtls/platform_util.h b/include/mbedtls/platform_util.h index b6c50d574..a4fcf31d2 100644 --- a/include/mbedtls/platform_util.h +++ b/include/mbedtls/platform_util.h @@ -225,8 +225,9 @@ int mbedtls_platform_memcmp( const void *buf1, const void *buf2, size_t num ); * cryptographically secure RNG, but provide an RNG for utility * functions. * - * \param num Max-value for the generated random number. - * + * \param num Max-value for the generated random number, exclusive. + * The generated number will be on range [0, num). + * \return The generated random number. */ uint32_t mbedtls_platform_random_in_range( size_t num ); diff --git a/library/platform_util.c b/library/platform_util.c index 13179216c..f01103283 100644 --- a/library/platform_util.c +++ b/library/platform_util.c @@ -84,7 +84,7 @@ void mbedtls_platform_memset( void *ptr, int value, size_t num ) /* Randomize start offset. */ size_t start_offset = (size_t) mbedtls_platform_random_in_range( num ); /* Randomize data */ - size_t data = (size_t) mbedtls_platform_random_in_range( 0xff ); + size_t data = (size_t) mbedtls_platform_random_in_range( 256 ); /* Perform a pair of memset operations from random locations with * random data */ @@ -101,7 +101,7 @@ void mbedtls_platform_memcpy( void *dst, const void *src, size_t num ) /* Randomize start offset. */ size_t start_offset = (size_t) mbedtls_platform_random_in_range( num ); /* Randomize initial data to prevent leakage while copying */ - size_t data = (size_t) mbedtls_platform_random_in_range( 0xff ); + size_t data = (size_t) mbedtls_platform_random_in_range( 256 ); memset( (void *) dst, data, num ); memcpy( (void *) ( (unsigned char *) dst + start_offset ),