Skip to content

Commit

Permalink
rand: remove the ossl_rand_pool_add_additional_data() function.
Browse files Browse the repository at this point in the history
This function isn't called from anywhere and cannot easily be used
by the current RNG infrastructure.

Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Matthias St. Pierre <Matthias.St.Pierre@ncp-e.com>
(Merged from #19493)

(cherry picked from commit da7db83)
  • Loading branch information
paulidale committed Oct 26, 2022
1 parent 91caaa3 commit 9fb0ff3
Show file tree
Hide file tree
Showing 5 changed files with 0 additions and 153 deletions.
11 changes: 0 additions & 11 deletions providers/implementations/include/prov/seeding.h
Expand Up @@ -14,17 +14,6 @@
size_t ossl_prov_acquire_entropy_from_tsc(RAND_POOL *pool);
size_t ossl_prov_acquire_entropy_from_cpu(RAND_POOL *pool);

/*
* Add some platform specific additional data
*
* This function is platform specific and adds some random noise to the
* additional data used for generating random bytes and for reseeding
* the drbg.
*
* Returns 1 on success and 0 on failure.
*/
int ossl_rand_pool_add_additional_data(RAND_POOL *pool);

/*
* External seeding functions from the core dispatch table.
*/
Expand Down
76 changes: 0 additions & 76 deletions providers/implementations/rands/seeding/rand_unix.c
Expand Up @@ -50,7 +50,6 @@
# include <sys/time.h>

static uint64_t get_time_stamp(void);
static uint64_t get_timer_bits(void);

/* Macro to convert two thirty two bit values into a sixty four bit one */
# define TWO32TO64(a, b) ((((uint64_t)(a)) << 32) + (b))
Expand Down Expand Up @@ -774,31 +773,6 @@ int ossl_pool_add_nonce_data(RAND_POOL *pool)
return ossl_rand_pool_add(pool, (unsigned char *)&data, sizeof(data), 0);
}

int ossl_rand_pool_add_additional_data(RAND_POOL *pool)
{
struct {
int fork_id;
CRYPTO_THREAD_ID tid;
uint64_t time;
} data;

/* Erase the entire structure including any padding */
memset(&data, 0, sizeof(data));

/*
* Add some noise from the thread id and a high resolution timer.
* The fork_id adds some extra fork-safety.
* The thread id adds a little randomness if the drbg is accessed
* concurrently (which is the case for the <master> drbg).
*/
data.fork_id = openssl_get_fork_id();
data.tid = CRYPTO_THREAD_get_current_id();
data.time = get_timer_bits();

return ossl_rand_pool_add(pool, (unsigned char *)&data, sizeof(data), 0);
}


/*
* Get the current time with the highest possible resolution
*
Expand Down Expand Up @@ -828,55 +802,5 @@ static uint64_t get_time_stamp(void)
return time(NULL);
}

/*
* Get an arbitrary timer value of the highest possible resolution
*
* The timer value is added as random noise to the additional data,
* which is not considered a trusted entropy sourec, so any result
* is acceptable.
*/
static uint64_t get_timer_bits(void)
{
uint64_t res = OPENSSL_rdtsc();

if (res != 0)
return res;

# if defined(__sun) || defined(__hpux)
return gethrtime();
# elif defined(_AIX)
{
timebasestruct_t t;

read_wall_time(&t, TIMEBASE_SZ);
return TWO32TO64(t.tb_high, t.tb_low);
}
# elif defined(OSSL_POSIX_TIMER_OKAY)
{
struct timespec ts;

# ifdef CLOCK_BOOTTIME
# define CLOCK_TYPE CLOCK_BOOTTIME
# elif defined(_POSIX_MONOTONIC_CLOCK)
# define CLOCK_TYPE CLOCK_MONOTONIC
# else
# define CLOCK_TYPE CLOCK_REALTIME
# endif

if (clock_gettime(CLOCK_TYPE, &ts) == 0)
return TWO32TO64(ts.tv_sec, ts.tv_nsec);
}
# endif
# if defined(__unix__) \
|| (defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE >= 200112L)
{
struct timeval tv;

if (gettimeofday(&tv, NULL) == 0)
return TWO32TO64(tv.tv_sec, tv.tv_usec);
}
# endif
return time(NULL);
}
#endif /* (defined(OPENSSL_SYS_UNIX) && !defined(OPENSSL_SYS_VXWORKS))
|| defined(__DJGPP__) */
26 changes: 0 additions & 26 deletions providers/implementations/rands/seeding/rand_vms.c
Expand Up @@ -575,32 +575,6 @@ size_t ossl_pool_acquire_entropy(RAND_POOL *pool)
return data_collect_method(pool);
}


int ossl_rand_pool_add_additional_data(RAND_POOL *pool)
{
struct {
CRYPTO_THREAD_ID tid;
unsigned __int64 time;
} data;

/* Erase the entire structure including any padding */
memset(&data, 0, sizeof(data));

/*
* Add some noise from the thread id and a high resolution timer.
* The thread id adds a little randomness if the drbg is accessed
* concurrently (which is the case for the <master> drbg).
*/
data.tid = CRYPTO_THREAD_get_current_id();
#if __CRTL_VER >= 80400000
sys$gettim_prec(&data.time);
#else
sys$gettim((void*)&data.time);
#endif

return ossl_rand_pool_add(pool, (unsigned char *)&data, sizeof(data), 0);
}

int ossl_rand_pool_init(void)
{
return 1;
Expand Down
20 changes: 0 additions & 20 deletions providers/implementations/rands/seeding/rand_vxworks.c
Expand Up @@ -76,26 +76,6 @@ void ossl_rand_pool_keep_random_devices_open(int keep)
{
}

int ossl_rand_pool_add_additional_data(RAND_POOL *pool)
{
struct {
CRYPTO_THREAD_ID tid;
uint64_t time;
} data;

memset(&data, 0, sizeof(data));

/*
* Add some noise from the thread id and a high resolution timer.
* The thread id adds a little randomness if the drbg is accessed
* concurrently (which is the case for the <master> drbg).
*/
data.tid = CRYPTO_THREAD_get_current_id();
data.time = get_timer_bits();

return ossl_rand_pool_add(pool, (unsigned char *)&data, sizeof(data), 0);
}

int ossl_pool_add_nonce_data(RAND_POOL *pool)
{
struct {
Expand Down
20 changes: 0 additions & 20 deletions providers/implementations/rands/seeding/rand_win.c
Expand Up @@ -147,26 +147,6 @@ int ossl_pool_add_nonce_data(RAND_POOL *pool)
return ossl_rand_pool_add(pool, (unsigned char *)&data, sizeof(data), 0);
}

int ossl_rand_pool_add_additional_data(RAND_POOL *pool)
{
struct {
DWORD tid;
LARGE_INTEGER time;
} data;

/* Erase the entire structure including any padding */
memset(&data, 0, sizeof(data));

/*
* Add some noise from the thread id and a high resolution timer.
* The thread id adds a little randomness if the drbg is accessed
* concurrently (which is the case for the <master> drbg).
*/
data.tid = GetCurrentThreadId();
QueryPerformanceCounter(&data.time);
return ossl_rand_pool_add(pool, (unsigned char *)&data, sizeof(data), 0);
}

int ossl_rand_pool_init(void)
{
return 1;
Expand Down

0 comments on commit 9fb0ff3

Please sign in to comment.