mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-14 07:03:44 +01:00
Unit tests for crypto_force_rand_ssleay().
Part of 16794.
This commit is contained in:
parent
b18f533cf0
commit
d7c841f467
@ -252,7 +252,7 @@ crypto_openssl_get_header_version_str(void)
|
|||||||
|
|
||||||
/** Make sure that openssl is using its default PRNG. Return 1 if we had to
|
/** Make sure that openssl is using its default PRNG. Return 1 if we had to
|
||||||
* adjust it; 0 otherwise. */
|
* adjust it; 0 otherwise. */
|
||||||
static int
|
STATIC int
|
||||||
crypto_force_rand_ssleay(void)
|
crypto_force_rand_ssleay(void)
|
||||||
{
|
{
|
||||||
RAND_METHOD *default_method;
|
RAND_METHOD *default_method;
|
||||||
|
@ -314,5 +314,9 @@ struct dh_st *crypto_dh_get_dh_(crypto_dh_t *dh);
|
|||||||
|
|
||||||
void crypto_add_spaces_to_fp(char *out, size_t outlen, const char *in);
|
void crypto_add_spaces_to_fp(char *out, size_t outlen, const char *in);
|
||||||
|
|
||||||
|
#ifdef CRYPTO_PRIVATE
|
||||||
|
STATIC int crypto_force_rand_ssleay(void);
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -5,6 +5,7 @@
|
|||||||
|
|
||||||
#include "orconfig.h"
|
#include "orconfig.h"
|
||||||
#define CRYPTO_CURVE25519_PRIVATE
|
#define CRYPTO_CURVE25519_PRIVATE
|
||||||
|
#define CRYPTO_PRIVATE
|
||||||
#include "or.h"
|
#include "or.h"
|
||||||
#include "test.h"
|
#include "test.h"
|
||||||
#include "aes.h"
|
#include "aes.h"
|
||||||
@ -15,6 +16,7 @@
|
|||||||
#include "ed25519_vectors.inc"
|
#include "ed25519_vectors.inc"
|
||||||
|
|
||||||
#include <openssl/evp.h>
|
#include <openssl/evp.h>
|
||||||
|
#include <openssl/rand.h>
|
||||||
|
|
||||||
extern const char AUTHORITY_SIGNKEY_3[];
|
extern const char AUTHORITY_SIGNKEY_3[];
|
||||||
extern const char AUTHORITY_SIGNKEY_A_DIGEST[];
|
extern const char AUTHORITY_SIGNKEY_A_DIGEST[];
|
||||||
@ -131,6 +133,32 @@ test_crypto_rng_range(void *arg)
|
|||||||
;
|
;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Test for rectifying openssl RAND engine. */
|
||||||
|
static void
|
||||||
|
test_crypto_rng_engine(void *arg)
|
||||||
|
{
|
||||||
|
(void)arg;
|
||||||
|
RAND_METHOD dummy_method;
|
||||||
|
memset(&dummy_method, 0, sizeof(dummy_method));
|
||||||
|
|
||||||
|
/* We should be a no-op if we're already on RAND_OpenSSL */
|
||||||
|
tt_int_op(0, ==, crypto_force_rand_ssleay());
|
||||||
|
tt_assert(RAND_get_rand_method() == RAND_OpenSSL());
|
||||||
|
|
||||||
|
/* We should correct the method if it's a dummy. */
|
||||||
|
RAND_set_rand_method(&dummy_method);
|
||||||
|
tt_assert(RAND_get_rand_method() == &dummy_method);
|
||||||
|
tt_int_op(1, ==, crypto_force_rand_ssleay());
|
||||||
|
tt_assert(RAND_get_rand_method() == RAND_OpenSSL());
|
||||||
|
|
||||||
|
/* Make sure we aren't calling dummy_method */
|
||||||
|
crypto_rand((void *) &dummy_method, sizeof(dummy_method));
|
||||||
|
crypto_rand((void *) &dummy_method, sizeof(dummy_method));
|
||||||
|
|
||||||
|
done:
|
||||||
|
;
|
||||||
|
}
|
||||||
|
|
||||||
/** Run unit tests for our AES functionality */
|
/** Run unit tests for our AES functionality */
|
||||||
static void
|
static void
|
||||||
test_crypto_aes(void *arg)
|
test_crypto_aes(void *arg)
|
||||||
@ -2358,6 +2386,7 @@ struct testcase_t crypto_tests[] = {
|
|||||||
CRYPTO_LEGACY(formats),
|
CRYPTO_LEGACY(formats),
|
||||||
CRYPTO_LEGACY(rng),
|
CRYPTO_LEGACY(rng),
|
||||||
{ "rng_range", test_crypto_rng_range, 0, NULL, NULL },
|
{ "rng_range", test_crypto_rng_range, 0, NULL, NULL },
|
||||||
|
{ "rng_engine", test_crypto_rng_engine, TT_FORK, NULL, NULL },
|
||||||
{ "aes_AES", test_crypto_aes, TT_FORK, &passthrough_setup, (void*)"aes" },
|
{ "aes_AES", test_crypto_aes, TT_FORK, &passthrough_setup, (void*)"aes" },
|
||||||
{ "aes_EVP", test_crypto_aes, TT_FORK, &passthrough_setup, (void*)"evp" },
|
{ "aes_EVP", test_crypto_aes, TT_FORK, &passthrough_setup, (void*)"evp" },
|
||||||
CRYPTO_LEGACY(sha),
|
CRYPTO_LEGACY(sha),
|
||||||
|
Loading…
Reference in New Issue
Block a user