-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathCHANGELOG
More file actions
68 lines (51 loc) · 2.53 KB
/
Copy pathCHANGELOG
File metadata and controls
68 lines (51 loc) · 2.53 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# Changelog
- 0.3.4 (2026-07-06)
* Reverts the unrolled MAC comparison introduced in 0.3.3, which was
found to introduce timing variation on both aarch64 and x86-64 when
compiled via the LLVM backend (the NCG backend was unaffected).
- 0.3.3 (2026-07-06)
* The constant-time 'Eq' on 'MAC' now folds over the two buffers
directly, rather than materialising an intermediate ByteString
holding their XOR on the heap. Semantics are unchanged.
* Improves the performance of constant-time MAC comparison.
- 0.3.2 (2026-02-01)
* The library has been refactored substantially to achieve greater
control over heap allocation, particularly around HMAC calculation.
* A couple of very low-level functions, '_hmac_rr' and '_hmac_rsb' are
now quietly exported for calculating specialized destructive HMAC
operations, mostly of use to HMAC-DRBG implementations.
* HMAC performance is also improved, now only about 2x that of hash
computation.
- 0.3.1 (2026-01-11)
* Adds a basic quickcheck test suite for asserting memory safety of
library functions on random inputs.
- 0.3.0 (2026-01-10)
* The HMAC functions now produce a value of type MAC, which is a
newtype over a ByteString. The 'Eq' instance for MAC compares values
in constant time.
- 0.2.5 (2026-01-08)
* We now check if the ARM cryptographic extensions are available, and,
if so, use them to calculate hashes. If they're unavailable we
simply use the pure implementation as a fallback. This yields about
a 5x performance boost for 'hash' and 3.5x boost for 'hmac' (again,
when available).
* Allocation for both the 'hash' and 'hmac' functions has been reduced
dramatically, mostly by optimising the padding internals, and is now
constant with respect to input.
- 0.2.4 (2025-12-28)
* Adds an 'llvm' build flag and tests with GHC 9.10.3.
- 0.2.3 (2025-01-21)
* Improves padding handling for the strict bytestring case, yielding
performance increases for both 'hash' and 'hmac'.
- 0.2.2 (2025-01-07)
* Minor bytestring-handling optimisations.
- 0.2.1 (2024-10-13)
* Adds an INLINE pragma to an internal step function.
* 'hmac' no longer calls 'hmac_lazy', which has no practical effect
other than to clean up profiling reports generated by GHC.
- 0.2.0 (2024-10-07)
* 'hmac' and 'hmac_lazy' now hash long keys before computing a HMAC,
instead of throwing an error, matching RFC 2104's suggested behaviour.
- 0.1.0 (2024-09-14)
* Initial release, supporting SHA256 and HMAC-SHA256 on strict and lazy
bytestrings.