commit f35f52e8697407dde391ebc4f1be6ba76e1a1bb2 Author: George Kadianakis desnacked@riseup.net Date: Thu Jul 6 16:39:48 2017 +0300
Hide crypto_digest_t again and use an accessor for tests. --- src/common/crypto.c | 27 +++++++++++++++++++++++++++ src/common/crypto.h | 16 +--------------- src/test/test_hs_client.c | 12 ++++++++---- src/test/test_hs_service.c | 6 ++++-- 4 files changed, 40 insertions(+), 21 deletions(-)
diff --git a/src/common/crypto.c b/src/common/crypto.c index 8b214a6..875b4ee 100644 --- a/src/common/crypto.c +++ b/src/common/crypto.c @@ -1839,6 +1839,33 @@ crypto_digest_algorithm_get_length(digest_algorithm_t alg) } }
+/** Intermediate information about the digest of a stream of data. */ +struct crypto_digest_t { + digest_algorithm_t algorithm; /**< Which algorithm is in use? */ + /** State for the digest we're using. Only one member of the + * union is usable, depending on the value of <b>algorithm</b>. Note also + * that space for other members might not even be allocated! + */ + union { + SHA_CTX sha1; /**< state for SHA1 */ + SHA256_CTX sha2; /**< state for SHA256 */ + SHA512_CTX sha512; /**< state for SHA512 */ + keccak_state sha3; /**< state for SHA3-[256,512] */ + } d; +}; + +#ifdef TOR_UNIT_TESTS + +digest_algorithm_t +crypto_digest_get_algorithm(crypto_digest_t *digest) +{ + tor_assert(digest); + + return digest->algorithm; +} + +#endif + /** * Return the number of bytes we need to malloc in order to get a * crypto_digest_t for <b>alg</b>, or the number of bytes we need to wipe diff --git a/src/common/crypto.h b/src/common/crypto.h index 3766830..5951321 100644 --- a/src/common/crypto.h +++ b/src/common/crypto.h @@ -339,21 +339,6 @@ void crypto_add_spaces_to_fp(char *out, size_t outlen, const char *in);
#ifdef CRYPTO_PRIVATE
-/** Intermediate information about the digest of a stream of data. */ -struct crypto_digest_t { - digest_algorithm_t algorithm; /**< Which algorithm is in use? */ - /** State for the digest we're using. Only one member of the - * union is usable, depending on the value of <b>algorithm</b>. Note also - * that space for other members might not even be allocated! - */ - union { - SHA_CTX sha1; /**< state for SHA1 */ - SHA256_CTX sha2; /**< state for SHA256 */ - SHA512_CTX sha512; /**< state for SHA512 */ - keccak_state sha3; /**< state for SHA3-[256,512] */ - } d; -}; - STATIC int crypto_force_rand_ssleay(void); STATIC int crypto_strongest_rand_raw(uint8_t *out, size_t out_len);
@@ -365,6 +350,7 @@ extern int break_strongest_rng_fallback;
#ifdef TOR_UNIT_TESTS void crypto_pk_assign_(crypto_pk_t *dest, const crypto_pk_t *src); +digest_algorithm_t crypto_digest_get_algorithm(crypto_digest_t *digest); #endif
#endif diff --git a/src/test/test_hs_client.c b/src/test/test_hs_client.c index 938d3d2..77fee88 100644 --- a/src/test/test_hs_client.c +++ b/src/test/test_hs_client.c @@ -188,8 +188,10 @@ test_e2e_rend_circuit_setup_legacy(void *arg) tt_int_op(retval, OP_EQ, 1);
/* Check the digest algo */ - tt_int_op(or_circ->cpath->f_digest->algorithm, OP_EQ, DIGEST_SHA1); - tt_int_op(or_circ->cpath->b_digest->algorithm, OP_EQ, DIGEST_SHA1); + tt_int_op(crypto_digest_get_algorithm(or_circ->cpath->f_digest), + OP_EQ, DIGEST_SHA1); + tt_int_op(crypto_digest_get_algorithm(or_circ->cpath->b_digest), + OP_EQ, DIGEST_SHA1); tt_assert(or_circ->cpath->f_crypto); tt_assert(or_circ->cpath->b_crypto);
@@ -255,8 +257,10 @@ test_e2e_rend_circuit_setup(void *arg) tt_int_op(retval, OP_EQ, 1);
/* Check that the crypt path has prop224 algorithm parameters */ - tt_int_op(or_circ->cpath->f_digest->algorithm, OP_EQ, DIGEST_SHA3_256); - tt_int_op(or_circ->cpath->b_digest->algorithm, OP_EQ, DIGEST_SHA3_256); + tt_int_op(crypto_digest_get_algorithm(or_circ->cpath->f_digest), + OP_EQ, DIGEST_SHA3_256); + tt_int_op(crypto_digest_get_algorithm(or_circ->cpath->b_digest), + OP_EQ, DIGEST_SHA3_256); tt_assert(or_circ->cpath->f_crypto); tt_assert(or_circ->cpath->b_crypto);
diff --git a/src/test/test_hs_service.c b/src/test/test_hs_service.c index 5793747..aa9a12e 100644 --- a/src/test/test_hs_service.c +++ b/src/test/test_hs_service.c @@ -301,8 +301,10 @@ test_e2e_rend_circuit_setup(void *arg) tt_int_op(retval, OP_EQ, 1);
/* Check the digest algo */ - tt_int_op(or_circ->cpath->f_digest->algorithm, OP_EQ, DIGEST_SHA3_256); - tt_int_op(or_circ->cpath->b_digest->algorithm, OP_EQ, DIGEST_SHA3_256); + tt_int_op(crypto_digest_get_algorithm(or_circ->cpath->f_digest), + OP_EQ, DIGEST_SHA3_256); + tt_int_op(crypto_digest_get_algorithm(or_circ->cpath->b_digest), + OP_EQ, DIGEST_SHA3_256); tt_assert(or_circ->cpath->f_crypto); tt_assert(or_circ->cpath->b_crypto);