From d8eacd326003fc021f78c1e45a07b7fd61a5349b Mon Sep 17 00:00:00 2001 From: Frank Denis Date: Thu, 19 Nov 2015 16:04:42 +0100 Subject: [PATCH] Mark randombytes_implementation functions static --- .../include/sodium/randombytes_nativeclient.h | 26 ++----- .../sodium/randombytes_salsa20_random.h | 29 +------ .../include/sodium/randombytes_sysrandom.h | 28 +------ .../nativeclient/randombytes_nativeclient.c | 6 +- .../salsa20/randombytes_salsa20_random.c | 76 +++++++++---------- .../sysrandom/randombytes_sysrandom.c | 36 ++++----- 6 files changed, 67 insertions(+), 134 deletions(-) diff --git a/src/libsodium/include/sodium/randombytes_nativeclient.h b/src/libsodium/include/sodium/randombytes_nativeclient.h index 07666cb6..5158d8c3 100644 --- a/src/libsodium/include/sodium/randombytes_nativeclient.h +++ b/src/libsodium/include/sodium/randombytes_nativeclient.h @@ -4,33 +4,19 @@ #ifdef __native_client__ -#include -#include +# include "export.h" +# include "randombytes.h" -#include "export.h" - -#ifdef __cplusplus +# ifdef __cplusplus extern "C" { -#endif +# endif SODIUM_EXPORT extern struct randombytes_implementation randombytes_nativeclient_implementation; -SODIUM_EXPORT -const char *randombytes_nativeclient_implementation_name(void); - -SODIUM_EXPORT -uint32_t randombytes_nativeclient(void); - -SODIUM_EXPORT -uint32_t randombytes_nativeclient_uniform(const uint32_t upper_bound); - -SODIUM_EXPORT -void randombytes_nativeclient_buf(void * const buf, const size_t size); - -#ifdef __cplusplus +# ifdef __cplusplus } -#endif +# endif #endif diff --git a/src/libsodium/include/sodium/randombytes_salsa20_random.h b/src/libsodium/include/sodium/randombytes_salsa20_random.h index e6d291c5..4deae15b 100644 --- a/src/libsodium/include/sodium/randombytes_salsa20_random.h +++ b/src/libsodium/include/sodium/randombytes_salsa20_random.h @@ -2,17 +2,8 @@ #ifndef randombytes_salsa20_random_H #define randombytes_salsa20_random_H -/* - * THREAD SAFETY: randombytes_salsa20_random*() functions are - * not thread-safe. - * Always wrap them in a mutex if you need thread safety, - * and call randombytes_stir() after fork()ing. - */ - -#include -#include - #include "export.h" +#include "randombytes.h" #ifdef __cplusplus extern "C" { @@ -21,24 +12,6 @@ extern "C" { SODIUM_EXPORT extern struct randombytes_implementation randombytes_salsa20_implementation; -SODIUM_EXPORT -const char *randombytes_salsa20_implementation_name(void); - -SODIUM_EXPORT -uint32_t randombytes_salsa20_random(void); - -SODIUM_EXPORT -void randombytes_salsa20_random_stir(void); - -SODIUM_EXPORT -uint32_t randombytes_salsa20_random_uniform(const uint32_t upper_bound); - -SODIUM_EXPORT -void randombytes_salsa20_random_buf(void * const buf, const size_t size); - -SODIUM_EXPORT -int randombytes_salsa20_random_close(void); - #ifdef __cplusplus } #endif diff --git a/src/libsodium/include/sodium/randombytes_sysrandom.h b/src/libsodium/include/sodium/randombytes_sysrandom.h index 20dab781..9e27b674 100644 --- a/src/libsodium/include/sodium/randombytes_sysrandom.h +++ b/src/libsodium/include/sodium/randombytes_sysrandom.h @@ -2,16 +2,8 @@ #ifndef randombytes_sysrandom_H #define randombytes_sysrandom_H -/* - * THREAD SAFETY: randombytes_sysrandom() functions are thread-safe, - * provided that you called sodium_init() once before using any - * other libsodium function. - */ - -#include -#include - #include "export.h" +#include "randombytes.h" #ifdef __cplusplus extern "C" { @@ -20,24 +12,6 @@ extern "C" { SODIUM_EXPORT extern struct randombytes_implementation randombytes_sysrandom_implementation; -SODIUM_EXPORT -const char *randombytes_sysrandom_implementation_name(void); - -SODIUM_EXPORT -uint32_t randombytes_sysrandom(void); - -SODIUM_EXPORT -void randombytes_sysrandom_stir(void); - -SODIUM_EXPORT -uint32_t randombytes_sysrandom_uniform(const uint32_t upper_bound); - -SODIUM_EXPORT -void randombytes_sysrandom_buf(void * const buf, const size_t size); - -SODIUM_EXPORT -int randombytes_sysrandom_close(void); - #ifdef __cplusplus } #endif diff --git a/src/libsodium/randombytes/nativeclient/randombytes_nativeclient.c b/src/libsodium/randombytes/nativeclient/randombytes_nativeclient.c index 034304ce..dd37446d 100644 --- a/src/libsodium/randombytes/nativeclient/randombytes_nativeclient.c +++ b/src/libsodium/randombytes/nativeclient/randombytes_nativeclient.c @@ -10,7 +10,7 @@ # include "randombytes.h" # include "randombytes_nativeclient.h" -void +static void randombytes_nativeclient_buf(void * const buf, const size_t size) { size_t readnb; @@ -21,7 +21,7 @@ randombytes_nativeclient_buf(void * const buf, const size_t size) assert(readnb == size); } -uint32_t +static uint32_t randombytes_nativeclient_random(void) { uint32_t r; @@ -31,7 +31,7 @@ randombytes_nativeclient_random(void) return r; } -const char * +static const char * randombytes_nativeclient_implementation_name(void) { return "nativeclient"; diff --git a/src/libsodium/randombytes/salsa20/randombytes_salsa20_random.c b/src/libsodium/randombytes/salsa20/randombytes_salsa20_random.c index c303d8ec..36eefdd4 100644 --- a/src/libsodium/randombytes/salsa20/randombytes_salsa20_random.c +++ b/src/libsodium/randombytes/salsa20/randombytes_salsa20_random.c @@ -250,7 +250,7 @@ randombytes_salsa20_random_rekey(const unsigned char * const mix) } } -void +static void randombytes_salsa20_random_stir(void) { /* constant to personalize the hash function */ @@ -325,35 +325,7 @@ randombytes_salsa20_random_stir_if_needed(void) #endif } -static uint32_t -randombytes_salsa20_random_getword(void) -{ - uint32_t val; - int ret; - - COMPILER_ASSERT(sizeof stream.rnd32 >= (sizeof stream.key) + (sizeof val)); - COMPILER_ASSERT(((sizeof stream.rnd32) - (sizeof stream.key)) - % sizeof val == (size_t) 0U); - if (stream.rnd32_outleft <= (size_t) 0U) { - randombytes_salsa20_random_stir_if_needed(); - COMPILER_ASSERT(sizeof stream.nonce == crypto_stream_salsa20_NONCEBYTES); - ret = crypto_stream_salsa20((unsigned char *) stream.rnd32, - (unsigned long long) sizeof stream.rnd32, - (unsigned char *) &stream.nonce, - stream.key); - assert(ret == 0); - stream.rnd32_outleft = (sizeof stream.rnd32) - (sizeof stream.key); - randombytes_salsa20_random_rekey(&stream.rnd32[stream.rnd32_outleft]); - stream.nonce++; - } - stream.rnd32_outleft -= sizeof val; - memcpy(&val, &stream.rnd32[stream.rnd32_outleft], sizeof val); - memset(&stream.rnd32[stream.rnd32_outleft], 0, sizeof val); - - return val; -} - -int +static int randombytes_salsa20_random_close(void) { int ret = -1; @@ -388,13 +360,7 @@ randombytes_salsa20_random_close(void) return ret; } -uint32_t -randombytes_salsa20_random(void) -{ - return randombytes_salsa20_random_getword(); -} - -void +static void randombytes_salsa20_random_buf(void * const buf, const size_t size) { size_t i; @@ -417,7 +383,41 @@ randombytes_salsa20_random_buf(void * const buf, const size_t size) (unsigned char *) &stream.nonce, stream.key); } -const char * +static uint32_t +randombytes_salsa20_random_getword(void) +{ + uint32_t val; + int ret; + + COMPILER_ASSERT(sizeof stream.rnd32 >= (sizeof stream.key) + (sizeof val)); + COMPILER_ASSERT(((sizeof stream.rnd32) - (sizeof stream.key)) + % sizeof val == (size_t) 0U); + if (stream.rnd32_outleft <= (size_t) 0U) { + randombytes_salsa20_random_stir_if_needed(); + COMPILER_ASSERT(sizeof stream.nonce == crypto_stream_salsa20_NONCEBYTES); + ret = crypto_stream_salsa20((unsigned char *) stream.rnd32, + (unsigned long long) sizeof stream.rnd32, + (unsigned char *) &stream.nonce, + stream.key); + assert(ret == 0); + stream.rnd32_outleft = (sizeof stream.rnd32) - (sizeof stream.key); + randombytes_salsa20_random_rekey(&stream.rnd32[stream.rnd32_outleft]); + stream.nonce++; + } + stream.rnd32_outleft -= sizeof val; + memcpy(&val, &stream.rnd32[stream.rnd32_outleft], sizeof val); + memset(&stream.rnd32[stream.rnd32_outleft], 0, sizeof val); + + return val; +} + +static uint32_t +randombytes_salsa20_random(void) +{ + return randombytes_salsa20_random_getword(); +} + +static const char * randombytes_salsa20_implementation_name(void) { return "salsa20"; diff --git a/src/libsodium/randombytes/sysrandom/randombytes_sysrandom.c b/src/libsodium/randombytes/sysrandom/randombytes_sysrandom.c index 1932b1bb..ea0b6208 100644 --- a/src/libsodium/randombytes/sysrandom/randombytes_sysrandom.c +++ b/src/libsodium/randombytes/sysrandom/randombytes_sysrandom.c @@ -39,24 +39,24 @@ BOOLEAN NTAPI RtlGenRandom(PVOID RandomBuffer, ULONG RandomBufferLength); #ifdef HAVE_SAFE_ARC4RANDOM -uint32_t +static uint32_t randombytes_sysrandom(void) { return arc4random(); } -void +static void randombytes_sysrandom_stir(void) { } -void +static void randombytes_sysrandom_buf(void * const buf, const size_t size) { return arc4random_buf(buf, size); } -int +static int randombytes_sysrandom_close(void) { return 0; @@ -214,7 +214,7 @@ randombytes_sysrandom_init(void) } #endif -void +static void randombytes_sysrandom_stir(void) { if (stream.initialized == 0) { @@ -231,7 +231,7 @@ randombytes_sysrandom_stir_if_needed(void) } } -int +static int randombytes_sysrandom_close(void) { int ret = -1; @@ -257,17 +257,7 @@ randombytes_sysrandom_close(void) return ret; } -uint32_t -randombytes_sysrandom(void) -{ - uint32_t r; - - randombytes_sysrandom_buf(&r, sizeof r); - - return r; -} - -void +static void randombytes_sysrandom_buf(void * const buf, const size_t size) { randombytes_sysrandom_stir_if_needed(); @@ -298,9 +288,19 @@ randombytes_sysrandom_buf(void * const buf, const size_t size) #endif } +static uint32_t +randombytes_sysrandom(void) +{ + uint32_t r; + + randombytes_sysrandom_buf(&r, sizeof r); + + return r; +} + #endif /* __OpenBSD__ */ -const char * +static const char * randombytes_sysrandom_implementation_name(void) { return "sysrandom";