Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

rand: remove the ossl_rand_pool_add_additional_data() function. #19493

Closed
wants to merge 2 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
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 @@ -49,7 +49,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 @@ -773,31 +772,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 @@ -827,55 +801,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