diff options
author | Micah Elizabeth Scott <beth@torproject.org> | 2023-03-14 15:25:12 -0700 |
---|---|---|
committer | Micah Elizabeth Scott <beth@torproject.org> | 2023-05-10 07:38:28 -0700 |
commit | 1a3afeb387461680bcf97f5cf8574ee0e0cad893 (patch) | |
tree | 271cebad707b17853cc47d7cc3a75bf65fa751c0 /src/test | |
parent | 037dea2252e5122059bd189c57ad606f05c7b0b7 (diff) | |
download | tor-1a3afeb387461680bcf97f5cf8574ee0e0cad893.tar.gz tor-1a3afeb387461680bcf97f5cf8574ee0e0cad893.zip |
hs_pow: unswap byte order of seed_head field
In proposal 327, "POW_SEED is the first 4 bytes of the seed used".
The proposal doesn't specifically mention the data type of this field,
and the code in hs_pow so far treats it as an integer but semantically
it's more like the first four bytes of an already-encoded little endian
blob. This leads to a byte swap, since the type confusion takes place
in a little-endian subsystem but the wire encoding of seed_head uses
tor's default of big endian.
This patch does not address the underlying type confusion, it's a
minimal change that only swaps the byte order and updates unit tests
accordingly. Further changes will clean up the data types.
Signed-off-by: Micah Elizabeth Scott <beth@torproject.org>
Diffstat (limited to 'src/test')
-rw-r--r-- | src/test/test_hs_pow.c | 9 | ||||
-rw-r--r-- | src/test/test_hs_pow_slow.c | 5 |
2 files changed, 6 insertions, 8 deletions
diff --git a/src/test/test_hs_pow.c b/src/test/test_hs_pow.c index 706ad2db05..e2111478fc 100644 --- a/src/test/test_hs_pow.c +++ b/src/test/test_hs_pow.c @@ -315,7 +315,7 @@ test_hs_pow_vectors(void *arg) "cdd49fdbc34326d9d2f18ed277469c63", "7f153437c58620d3ea4717746093dde6", "01" "cdd49fdbc34326d9d2f18ed277469c63" - "0001869f" "cf0afb86" + "0001869f" "86fb0acf" "7f153437c58620d3ea4717746093dde6" }, { @@ -325,7 +325,7 @@ test_hs_pow_vectors(void *arg) "cdd49fdbc34326d9d2f18ed270469c63", "7f153437c58620d3ea4717746093dde6", "01" "cdd49fdbc34326d9d2f18ed270469c63" - "000186a0" "cf0afb86" + "000186a0" "86fb0acf" "7f153437c58620d3ea4717746093dde6" }, { @@ -335,7 +335,7 @@ test_hs_pow_vectors(void *arg) "cdd49fdbc34326d9d2f18ed277469c63", "7f153437c58620d3ea4717746093dde6", "01" "cdd49fdbc34326d9d2f18ed277469c63" - "000186a0" "cf0afb86" + "000186a0" "86fb0acf" "7f153437c58620d3ea4717746093dde6" } }; @@ -382,8 +382,7 @@ test_hs_pow_vectors(void *arg) sol_hex, 2 * sizeof solution.equix_solution), OP_EQ, HS_POW_EQX_SOL_LEN); - memcpy(&solution.seed_head, pow_state->seed_previous, - sizeof solution.seed_head); + solution.seed_head = tor_ntohl(get_uint32(pow_state->seed_previous)); /* Try to encode 'solution' into a relay cell */ diff --git a/src/test/test_hs_pow_slow.c b/src/test/test_hs_pow_slow.c index 4d28765ba9..8ccbf8025c 100644 --- a/src/test/test_hs_pow_slow.c +++ b/src/test/test_hs_pow_slow.c @@ -211,15 +211,14 @@ test_hs_pow_vectors(void *arg) sizeof solution.equix_solution, sol_hex, 2 * sizeof solution.equix_solution), OP_EQ, HS_POW_EQX_SOL_LEN); - memcpy(&solution.seed_head, params.seed, sizeof solution.seed_head); + solution.seed_head = tor_ntohl(get_uint32(params.seed)); memset(&output, 0xaa, sizeof output); testing_enable_prefilled_rng(rng_bytes, HS_POW_NONCE_LEN); tt_int_op(0, OP_EQ, hs_pow_solve(¶ms, &output)); testing_disable_prefilled_rng(); - tt_mem_op(params.seed, OP_EQ, &output.seed_head, - sizeof output.seed_head); + tt_int_op(solution.seed_head, OP_EQ, output.seed_head); tt_mem_op(&solution.nonce, OP_EQ, &output.nonce, sizeof output.nonce); tt_mem_op(&solution.equix_solution, OP_EQ, &output.equix_solution, |