Crypt-RIPEMD160
view release on metacpan or search on metacpan
Revision history for Perl extension Crypt::RIPEMD160.
0.14 2026-04-23
Maintenance:
- Use GNU tar (gtar) on macOS when building the dist tarball to avoid
PaxHeader/ entries that fail the CPANTS no_pax_headers kwalitee
check. Falls back to system tar on non-macOS platforms. PR #66
- Update MANIFEST. PR #66
0.13 2026-04-23
Bug fixes:
- Use SvPVbyte in XS add() so wide-character strings are handled
consistently rather than relying on the caller's UTF-8 flag. PR #56
- Add binmode to addfile() for cross-platform consistency on Windows. PR #57
- Return $self from Perl-level add() and addfile() to enable method
chaining at the Perl layer (XS already returned $self). PR #54
- Zero MAC key material (key, k_ipad, k_opad) in DESTROY to reduce
the window for key material leaking into freed memory. PR #62
- Use dead-store-proof memset loop for zeroing sensitive memory so the
compiler cannot optimise away the wipe. PR #50
- Define PERL_NO_GET_CONTEXT in the XS file for correctness under
threaded Perl builds. PR #60
- Silence -Wall -Wextra compiler warnings in XS code. PR #49
- Include t/03streaming.t in MANIFEST so it is shipped in CPAN
distributions. PR #48
Improvements:
- Inherit from Digest::base to support the standard Perl Digest API:
b64digest, add_bits, and loading via Digest->new('RIPEMD-160'). PR #58
- Return $self from XS-level add() and reset() to allow method
chaining: $ctx->reset->add($data)->digest(). PR #53
- Delegate MAC addfile() to the inner RIPEMD-160 addfile() to avoid
duplicating the read loop and binmode handling. PR #64
Maintenance:
- Add proper =head2 method sections to MAC.pm POD. PR #51
- Add comprehensive MAC test suite covering HMAC correctness, reset,
addfile, and long-key hashing. PR #55
- Add streaming consistency tests verifying that single-call and
multi-call add() produce identical digests. PR #46
- Move X[] scratch buffer from the RIPEMD-160 state struct to the
stack, reducing per-context memory usage. PR #52
- Add #!include_default to MANIFEST.SKIP for robust exclusion of
build artefacts. PR #59
- Fix CI author-test failures on older Perls: install develop deps
and skip tests for methods unavailable before Digest::base
integration. PR #61
- Narrow .gitignore *.c pattern to only the XS-generated C file. PR #63
0.12 2026-04-02
Bug fixes:
- Fix MAC reset() after mac()/hexmac() by preserving the key so the
inner pad can be recomputed. PR #23
- Prevent STRLEN-to-dword truncation for large inputs on 64-bit
platforms in the XS add() method. PR #26
- Croak on read errors in addfile() instead of silently truncating
the hash input. GH #35, PR #35
- Zero sensitive memory (hash state) on destroy and reset to avoid
leaking intermediate digests. PR #39
- Zero MDfinish stack buffer after final compression to prevent
transient data from lingering on the stack. PR #44
Improvements:
- Add clone() method for copying mid-computation state, enabling
efficient digest of data sharing a common prefix. PR #27
- Simplify digest byte extraction and MAC reset internals. PR #36
- Add const qualifiers to C function signatures and remove unused
includes. PR #24
Maintenance:
- Add LICENSE file and =head1 LICENSE sections to module POD. PR #29
- Add LICENSE section to MAC.pm POD and exclude .claude/ from dist.
PR #37
- Remove executable permission and shebang from Makefile.PL. PR #28
- Modernize Makefile.PL metadata: add META_PROVIDES, test
dependencies, and MIN_PERL_VERSION. PR #25, PR #33
- Modernize misc/ scripts and clean up MANIFEST.SKIP. PR #34
- Modernize README and clean cpanfile. PR #25
- Add CONTRIBUTING.md. PR #31
- Add SECURITY.md with vulnerability reporting contact. PR #32
- Add AI_POLICY.md for AI policy.
- Add CLAUDE.md with generated file warnings. PR #45
- Add author tests for POD validation and coverage. PR #42
- Add padding boundary test vectors. PR #43
0.11 2026-03-22
Bug fixes:
- Replace platform-dependent C typedefs (unsigned char, unsigned int)
with C99 fixed-width types (uint8_t, uint32_t) from <stdint.h>.
This eliminates the class of portability bug from 0.04_01 where
dword was 8 bytes on 64-bit systems by guaranteeing exact widths
at the type level. PR #22
Maintenance:
- Remove unused `word` (unsigned short) typedef from rmd160.h. PR #22
- Fix cpanfile to reference XSLoader instead of replaced DynaLoader.
PR #22
( run in 1.423 second using v1.01-cache-2.11-cpan-140bd7fdf52 )