Skip to content

Commit 9ec51ad

Browse files
committed
Optimize siphash stream reader.
1 parent de74747 commit 9ec51ad

1 file changed

Lines changed: 7 additions & 5 deletions

File tree

src/hash/siphash.cpp

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -83,14 +83,16 @@ uint64_t siphash(const siphash_key& key,
8383

8484
constexpr auto eight = sizeof(uint64_t);
8585
const auto bytes = message.size();
86-
read::bytes::copy source(message);
86+
stream::in::fast stream(message);
87+
read::bytes::fast source(stream);
8788

8889
for (size_t index = eight; index <= bytes; index += eight)
89-
compression_round(v0, v1, v2, v3,
90-
source.read_8_bytes_little_endian());
90+
compression_round(v0, v1, v2, v3, source.read_8_bytes_little_endian());
9191

92-
auto last = is_zero(bytes % eight) ? 0_u64 :
93-
source.read_8_bytes_little_endian();
92+
// Read zero to seven remainder bytes (zero padded, fails stream).
93+
BC_ASSERT(source);
94+
auto last = source.read_8_bytes_little_endian();
95+
BC_ASSERT(!source);
9496

9597
last ^= ((bytes % max_encoded_byte_count) << to_bits(sub1(eight)));
9698
compression_round(v0, v1, v2, v3, last);

0 commit comments

Comments
 (0)