summaryrefslogtreecommitdiff
path: root/thirdparty/mbedtls/library/entropy_poll.c
diff options
context:
space:
mode:
Diffstat (limited to 'thirdparty/mbedtls/library/entropy_poll.c')
-rw-r--r--thirdparty/mbedtls/library/entropy_poll.c138
1 files changed, 71 insertions, 67 deletions
diff --git a/thirdparty/mbedtls/library/entropy_poll.c b/thirdparty/mbedtls/library/entropy_poll.c
index 69ac29e4f7..57fddd4d62 100644
--- a/thirdparty/mbedtls/library/entropy_poll.c
+++ b/thirdparty/mbedtls/library/entropy_poll.c
@@ -45,7 +45,8 @@
#if !defined(unix) && !defined(__unix__) && !defined(__unix) && \
!defined(__APPLE__) && !defined(_WIN32) && !defined(__QNXNTO__) && \
!defined(__HAIKU__) && !defined(__midipix__)
-#error "Platform entropy sources only work on Unix and Windows, see MBEDTLS_NO_PLATFORM_ENTROPY in config.h"
+#error \
+ "Platform entropy sources only work on Unix and Windows, see MBEDTLS_NO_PLATFORM_ENTROPY in config.h"
#endif
#if defined(_WIN32) && !defined(EFIX64) && !defined(EFI32)
@@ -69,8 +70,8 @@
#pragma warning( pop )
#endif
-int mbedtls_platform_entropy_poll( void *data, unsigned char *output, size_t len,
- size_t *olen )
+int mbedtls_platform_entropy_poll(void *data, unsigned char *output, size_t len,
+ size_t *olen)
{
ULONG len_as_ulong = 0;
((void) data);
@@ -81,19 +82,17 @@ int mbedtls_platform_entropy_poll( void *data, unsigned char *output, size_t len
* 64-bit Windows platforms. Ensure len's value can be safely converted into
* a ULONG.
*/
- if ( FAILED( SizeTToULong( len, &len_as_ulong ) ) )
- {
- return( MBEDTLS_ERR_ENTROPY_SOURCE_FAILED );
+ if (FAILED(SizeTToULong(len, &len_as_ulong))) {
+ return MBEDTLS_ERR_ENTROPY_SOURCE_FAILED;
}
- if ( !BCRYPT_SUCCESS( BCryptGenRandom( NULL, output, len_as_ulong, BCRYPT_USE_SYSTEM_PREFERRED_RNG ) ) )
- {
- return( MBEDTLS_ERR_ENTROPY_SOURCE_FAILED );
+ if (!BCRYPT_SUCCESS(BCryptGenRandom(NULL, output, len_as_ulong, BCRYPT_USE_SYSTEM_PREFERRED_RNG))) {
+ return MBEDTLS_ERR_ENTROPY_SOURCE_FAILED;
}
*olen = len;
- return( 0 );
+ return 0;
}
#else /* _WIN32 && !EFIX64 && !EFI32 */
@@ -109,15 +108,15 @@ int mbedtls_platform_entropy_poll( void *data, unsigned char *output, size_t len
#define HAVE_GETRANDOM
#include <errno.h>
-static int getrandom_wrapper( void *buf, size_t buflen, unsigned int flags )
+static int getrandom_wrapper(void *buf, size_t buflen, unsigned int flags)
{
/* MemSan cannot understand that the syscall writes to the buffer */
#if defined(__has_feature)
#if __has_feature(memory_sanitizer)
- memset( buf, 0, buflen );
+ memset(buf, 0, buflen);
#endif
#endif
- return( syscall( SYS_getrandom, buf, buflen, flags ) );
+ return syscall(SYS_getrandom, buf, buflen, flags);
}
#endif /* SYS_getrandom */
#endif /* __linux__ || __midipix__ */
@@ -129,9 +128,9 @@ static int getrandom_wrapper( void *buf, size_t buflen, unsigned int flags )
#include <errno.h>
#include <sys/random.h>
#define HAVE_GETRANDOM
-static int getrandom_wrapper( void *buf, size_t buflen, unsigned int flags )
+static int getrandom_wrapper(void *buf, size_t buflen, unsigned int flags)
{
- return getrandom( buf, buflen, flags );
+ return getrandom(buf, buflen, flags);
}
#endif /* (__FreeBSD__ && __FreeBSD_version >= 1200000) ||
(__DragonFly__ && __DragonFly_version >= 500700) */
@@ -151,7 +150,7 @@ static int getrandom_wrapper( void *buf, size_t buflen, unsigned int flags )
#if defined(KERN_ARND)
#define HAVE_SYSCTL_ARND
-static int sysctl_arnd_wrapper( unsigned char *buf, size_t buflen )
+static int sysctl_arnd_wrapper(unsigned char *buf, size_t buflen)
{
int name[2];
size_t len;
@@ -159,23 +158,23 @@ static int sysctl_arnd_wrapper( unsigned char *buf, size_t buflen )
name[0] = CTL_KERN;
name[1] = KERN_ARND;
- while( buflen > 0 )
- {
+ while (buflen > 0) {
len = buflen > 256 ? 256 : buflen;
- if( sysctl(name, 2, buf, &len, NULL, 0) == -1 )
- return( -1 );
+ if (sysctl(name, 2, buf, &len, NULL, 0) == -1) {
+ return -1;
+ }
buflen -= len;
buf += len;
}
- return( 0 );
+ return 0;
}
#endif /* KERN_ARND */
#endif /* __FreeBSD__ || __NetBSD__ */
#include <stdio.h>
-int mbedtls_platform_entropy_poll( void *data,
- unsigned char *output, size_t len, size_t *olen )
+int mbedtls_platform_entropy_poll(void *data,
+ unsigned char *output, size_t len, size_t *olen)
{
FILE *file;
size_t read_len;
@@ -183,14 +182,13 @@ int mbedtls_platform_entropy_poll( void *data,
((void) data);
#if defined(HAVE_GETRANDOM)
- ret = getrandom_wrapper( output, len, 0 );
- if( ret >= 0 )
- {
+ ret = getrandom_wrapper(output, len, 0);
+ if (ret >= 0) {
*olen = ret;
- return( 0 );
+ return 0;
+ } else if (errno != ENOSYS) {
+ return MBEDTLS_ERR_ENTROPY_SOURCE_FAILED;
}
- else if( errno != ENOSYS )
- return( MBEDTLS_ERR_ENTROPY_SOURCE_FAILED );
/* Fall through if the system call isn't known. */
#else
((void) ret);
@@ -199,105 +197,111 @@ int mbedtls_platform_entropy_poll( void *data,
#if defined(HAVE_SYSCTL_ARND)
((void) file);
((void) read_len);
- if( sysctl_arnd_wrapper( output, len ) == -1 )
- return( MBEDTLS_ERR_ENTROPY_SOURCE_FAILED );
+ if (sysctl_arnd_wrapper(output, len) == -1) {
+ return MBEDTLS_ERR_ENTROPY_SOURCE_FAILED;
+ }
*olen = len;
- return( 0 );
+ return 0;
#else
*olen = 0;
- file = fopen( "/dev/urandom", "rb" );
- if( file == NULL )
- return( MBEDTLS_ERR_ENTROPY_SOURCE_FAILED );
+ file = fopen("/dev/urandom", "rb");
+ if (file == NULL) {
+ return MBEDTLS_ERR_ENTROPY_SOURCE_FAILED;
+ }
- read_len = fread( output, 1, len, file );
- if( read_len != len )
- {
- fclose( file );
- return( MBEDTLS_ERR_ENTROPY_SOURCE_FAILED );
+ read_len = fread(output, 1, len, file);
+ if (read_len != len) {
+ fclose(file);
+ return MBEDTLS_ERR_ENTROPY_SOURCE_FAILED;
}
- fclose( file );
+ fclose(file);
*olen = len;
- return( 0 );
+ return 0;
#endif /* HAVE_SYSCTL_ARND */
}
#endif /* _WIN32 && !EFIX64 && !EFI32 */
#endif /* !MBEDTLS_NO_PLATFORM_ENTROPY */
#if defined(MBEDTLS_TEST_NULL_ENTROPY)
-int mbedtls_null_entropy_poll( void *data,
- unsigned char *output, size_t len, size_t *olen )
+int mbedtls_null_entropy_poll(void *data,
+ unsigned char *output, size_t len, size_t *olen)
{
((void) data);
((void) output);
*olen = 0;
- if( len < sizeof(unsigned char) )
- return( 0 );
+ if (len < sizeof(unsigned char)) {
+ return 0;
+ }
output[0] = 0;
*olen = sizeof(unsigned char);
- return( 0 );
+ return 0;
}
#endif
#if defined(MBEDTLS_TIMING_C)
-int mbedtls_hardclock_poll( void *data,
- unsigned char *output, size_t len, size_t *olen )
+int mbedtls_hardclock_poll(void *data,
+ unsigned char *output, size_t len, size_t *olen)
{
unsigned long timer = mbedtls_timing_hardclock();
((void) data);
*olen = 0;
- if( len < sizeof(unsigned long) )
- return( 0 );
+ if (len < sizeof(unsigned long)) {
+ return 0;
+ }
- memcpy( output, &timer, sizeof(unsigned long) );
+ memcpy(output, &timer, sizeof(unsigned long));
*olen = sizeof(unsigned long);
- return( 0 );
+ return 0;
}
#endif /* MBEDTLS_TIMING_C */
#if defined(MBEDTLS_HAVEGE_C)
-int mbedtls_havege_poll( void *data,
- unsigned char *output, size_t len, size_t *olen )
+int mbedtls_havege_poll(void *data,
+ unsigned char *output, size_t len, size_t *olen)
{
mbedtls_havege_state *hs = (mbedtls_havege_state *) data;
*olen = 0;
- if( mbedtls_havege_random( hs, output, len ) != 0 )
- return( MBEDTLS_ERR_ENTROPY_SOURCE_FAILED );
+ if (mbedtls_havege_random(hs, output, len) != 0) {
+ return MBEDTLS_ERR_ENTROPY_SOURCE_FAILED;
+ }
*olen = len;
- return( 0 );
+ return 0;
}
#endif /* MBEDTLS_HAVEGE_C */
#if defined(MBEDTLS_ENTROPY_NV_SEED)
-int mbedtls_nv_seed_poll( void *data,
- unsigned char *output, size_t len, size_t *olen )
+int mbedtls_nv_seed_poll(void *data,
+ unsigned char *output, size_t len, size_t *olen)
{
unsigned char buf[MBEDTLS_ENTROPY_BLOCK_SIZE];
size_t use_len = MBEDTLS_ENTROPY_BLOCK_SIZE;
((void) data);
- memset( buf, 0, MBEDTLS_ENTROPY_BLOCK_SIZE );
+ memset(buf, 0, MBEDTLS_ENTROPY_BLOCK_SIZE);
- if( mbedtls_nv_seed_read( buf, MBEDTLS_ENTROPY_BLOCK_SIZE ) < 0 )
- return( MBEDTLS_ERR_ENTROPY_SOURCE_FAILED );
+ if (mbedtls_nv_seed_read(buf, MBEDTLS_ENTROPY_BLOCK_SIZE) < 0) {
+ return MBEDTLS_ERR_ENTROPY_SOURCE_FAILED;
+ }
- if( len < use_len )
- use_len = len;
+ if (len < use_len) {
+ use_len = len;
+ }
- memcpy( output, buf, use_len );
+ memcpy(output, buf, use_len);
*olen = use_len;
- return( 0 );
+ return 0;
}
#endif /* MBEDTLS_ENTROPY_NV_SEED */