Changes for CryptX

0.088   2026-MM-DD
        - Crypt::KeyDerivation - new functions: pbkdf1_openssl, bcrypt_pbkdf, scrypt_pbkdf, argon2_pbkdf
        - Crypt::Misc - new functions: random_v7uuid, is_uuid
        - bundled libtomcrypt update branch:develop (commit: 2e441a17 2026-04-15)
        - bundled libtommath update branch:develop (commit: ae40a87 2026-04-20)
        - security fix CVE-2026-41564 https://github.com/DCIT/perl-CryptX/security/advisories/GHSA-24c2-gp6c-24c6

0.087   2025-06-11
        - bundled libtomcrypt update branch:develop (commit: d448df1 2025-05-06)
        - bundled libtommath update branch:develop (commit: 839ae9e 2025-06-11)
        - fix #120 Create SECURITY.md
        - fix #121 Failures on ARM after upgrading libtommath
        - security fix CVE-2025-40914 https://github.com/DCIT/perl-CryptX/security/advisories/GHSA-6fh3-7qjq-8v22

0.086   2025-05-02
        - fixe #118 Syncing with recent Math-BigInt
        - bundled libtomcrypt update branch:develop (commit:3905c289 2025-04-23)

0.085   2025-02-08
        - fix #114 #113 #112 (improved detection of Apple+x86_64 / AESNI)
        - fix #115 Crypt::PRNG - fix typo and specify ChaCha20 is the default

0.084   2024-10-16
        - libtommath: fix cpantesters crash on freebsd/i386
        - updated ppport.h

0.083   2024-10-15
        - fix #110 regression: 0.081 fails to parse PEMs that 0.080 parsed fine
        - bundled libtomcrypt update branch:develop (commit:cbb01b37 2024-10-14)

0.082   2024-10-07
        - fix #111 libcryptx-perl: t/sshkey.t fails on some architectures
        - CHANGE: Crypt::Cipher::Blowfish max key size increased to 72 bytes
        - bundled libtomcrypt update branch:develop (commit:29af8922 2024-10-07)

0.081   2024-09-08
        - fix #107 Drop -msse4.1 -maes for libtomcrypt
        - fix #105 Several functions in CryptX::AuthEnc deal weirdly with non-simple-string plaintext
        - fix #104 Add ethereum format signature
        - fix #103 Use standard __asm__ blocks instead of asm
        - fix #99 ltc: fix aesni flag handling
        - fix #87 Add possibility to use different hash algorithms in RSAES-OAEP
        - BIG CHANGE switch to PEM/SSH key loading via libtomcrypt
        - bundled libtomcrypt update branch:develop (commit:ce904c86 2024-09-02)

0.080   2023-10-04
        - fix #95 AES-NI troubles on MS Windows (gcc compiler)
        - fix #96 Tests failure with Math::BigInt >= 1.999840
        - Enabled AES-NI for platforms with gcc/clang/llvm

0.079   2023-10-01
        - fix #92 update libtomcrypt
        - bundled libtomcrypt update branch:develop (commit:1e629e6f 2023-06-22)

0.078   2023-04-28
        - fix #89 Crypt::Mac::HMAC b64mac and b64umac object methods do not work

0.077   2022-08-21
        - fix #82 + #84 new t/mbi_ltm_big*.t failures
        - fix #85 wrong linker options for aix

0.076   2022-01-07
        - fix #80 github actions (mac, windows, cygwin)
        - fix #79 isolate ltc functions (via -Wl,--exclude-libs,ALL)
        - fix #68 Segmentation fault on Apache due to symbol clash with libasn1

0.075   2021-12-25
        - fix #78 bundled libtomcrypt update branch:develop (commit:673f5ce2 2021-06-04)

0.074   2021-11-06
        - fix #75 Missing methods _sadd + _ssub in Math::BigInt::LTM
        - fix #76 Tests failing for numbers with multiple underscore characters (Math::BigInt::LTM)

0.073   2021-07-18
        - fix #73 CPAN testers failure with Math::BigInt 1.99982
        - fix #70 remove lto related hacks from Makefile.PL
        - fix #72 drop optional prereqs JSON::XS + Cpanel::JSON::XS, use optionally only JSON

0.072   2021-04-29
        - fix #69 Identifier Octet's Leniency in RSA PKCS#1 Signature Verification
        - bundled libtomcrypt update branch:develop (commit:165c795b 2021-04-14)

0.071   2021-03-30
        - fix #67 (better handling of PEM decoding failures)

0.070   2021-02-12
        - fix #66 remove -flto=auto (Makefile.PL)
        - fix #65 typo in docs (lib/Crypt/Cipher.pm)
        - bundled libtomcrypt update branch:develop (commit:910d6252 2021-01-19)

0.069   2020-08-25
        - fix #64 ECC: segfault on invalid input
        - fix #63 ltc Licensing could be clearer (added src/{ltc,ltm}/LICENSE)
        - fix #62 documentation only (Crypt::CBC related)
        - bundled libtomcrypt update branch:develop (commit:d8d7a83b 2020-07-14)

0.068   2020-03-10
        - fix #60 Test failues on macOS Catalina

0.067   2020-02-01
        - new: Crypt::PK::Ed25519
        - new: Crypt::PK::X25519
        - bundled libtomcrypt update branch:develop (commit:1937f412 2019-11-22)

0.066   2019-10-20
        - fix #57 Build fails on i686
        - bundled libtomcrypt update branch:develop (commit:354c9051 2019-10-20)
        - no perl module code change

0.065   2019-10-19
        - fix #56 Math::BigInt 1.999817 breaks the tests of CryptX
        - bundled libtomcrypt update branch:develop (commit:25410c75 2019-10-17)
        - no perl module code change, just tests

0.064   2019-06-14
        - fix #50 libtommath patch - building on HP-UX 11.11 / PA-RISC
        - necessary XS adaptation to the latest libtommath
        - bundled libtomcrypt update branch:develop (commit:c600d81e 2019-06-09)

0.063   2018-11-28
        - proper patch for #46 (related to Math::BigInt::LTM)

0.062   2018-10-30
        - bundled libtommath  update branch:develop (commit:8b9f98ba 2018-09-23) + stdint.h workaround
        - bundled libtomcrypt update branch:develop (commit:f413335b 2018-10-29)
        - fix #45 doc only - sign_message_rfc7518 / sign_message_rfc7518
        - fix #46 tests only - t/mbi_ltm_bigintpm.t etc. started to fail with latest Math::BigInt
        - fix #47 gcm_decrypt_verify + chacha20poly1305_decrypt_verify don't verify the tag - SERIOUS SECURITY BUG!
        - improved CBC/ECB padding (using libtomcrypt's functions: padding_depad + padding_pad)
        - enable pkcs#8 encrypted RSA keys (supported by the latest libtomcrypt)
        - exclude wycheproof tests (too big) from dist tarball (via MANIFEST.SKIP)

0.061   2018-06-07
        - bundled libtommath update (+stdint.h workaround)
        - bundled libtomcrypt update (+necessary adaptation)
        - fix #43 HP-UX 11.11 C-ANSI-C has no stdint.h
        - fix #44 Anonymous unions are GNU and C11 (troubles with HP C/aC++, HP-UX 11.31/IA64)

0.060   2018-05-01
        - bundled libtomcrypt update
        - Math::BigInt::LTM - remove buggy tests failing with the latest Math::BigInt
        - basically no changes to the perl modules

0.059   2018-03-25
        - new Crypt::Digest::Keccak(224|256|384|512)
        - new methods sign_hash_rfc7518 + verify_hash_rfc7518 (Crypt::PK::ECC)
        - improved import of pkcs#8 private keys (Crypt::PK::ECC)
        - improved export allowing "compressed" variants (Crypt::PK::ECC)
        - fix #28 Apple's APNS pkcs8 auth key import fails (Crypt::PK::ECC)
        - fix cpantesters failure (5.8.1 related)

0.058   2018-02-27
        - fix: decode_b58b + invalid input

0.057   2018-01-31
        - significant speed-up (more stuff handled on XS level)
        - Crypt::Checksum is deprecated in favour of Crypt::Checksum::Adler32|CRC32

0.056   2017-12-22
        - new Crypt::Stream::Rabbit

0.055   2017-11-28
        - new Crypt::Cipher::IDEA
        - new Crypt::Cipher::Serpent
        - new Crypt::Stream::Salsa20
        - new Crypt::Stream::Sosemanuk
        - added CCM object oriented interface: new-add-add-done
        - fix #39 accept CFLAGS and CPPFLAGS from the environment
        - fix #40 typos in POD
        - fix HMAC+SHA3 (now compliant with NIST test vectors)

0.054   2017-10-12
        - fix Crypt::PK::DSA verify
        - libtomcrypt updated to 1.18 (+ some extra patches)
        - documentation fixes

0.053   2017-09-15
        - fix Crypt::PK::DSA generate_key

0.051   2017-08-08
        - INCOMPATIBLE CHANGE: Crypt::AuthEnc::OCB is now compliant with RFC 7253

0.050   2017-07-18
        - fix cpantesters failures/warnings

0.049   2017-07-18
        - libtomcrypt updated to 1.18-rc2 (+ some extra patches)
        - REMOVED: Crypt::PK::DH encrypt decrypt sign_message verify_message sign_hash verify_hash
        - NEW: Crypt::Misc - encode_b32*, decode_b32*, encode_b58*, decode_b58*
        - Crypt::PK::RSA: import public key from X509 certificate
        - Crypt::PK::DSA: improved generate_key()
        - Crypt::PK::DH: improved generate_key()
        - fix #36 aad_add is obsolete for all EncAuth algs (correct is adata_add)
        - fix #37 GCM - Encryption of the empty string

0.048   2017-05-31
        - NEW: Crypt::Digest::SHA3_224
        - NEW: Crypt::Digest::SHA3_256
        - NEW: Crypt::Digest::SHA3_384
        - NEW: Crypt::Digest::SHA3_512
        - NEW: Crypt::Digest::SHAKE
        - NEW: Crypt::Digest::BLAKE2b_160
        - NEW: Crypt::Digest::BLAKE2b_256
        - NEW: Crypt::Digest::BLAKE2b_384
        - NEW: Crypt::Digest::BLAKE2b_512
        - NEW: Crypt::Digest::BLAKE2s_128
        - NEW: Crypt::Digest::BLAKE2s_160
        - NEW: Crypt::Digest::BLAKE2s_224
        - NEW: Crypt::Digest::BLAKE2s_256
        - NEW: Crypt::AuthEnc::ChaCha20Poly1305
        - NEW: Crypt::Mac::Poly1305
        - NEW: Crypt::Mac::BLAKE2s
        - NEW: Crypt::Mac::BLAKE2b
        - NEW: Crypt::PRNG::ChaCha20
        - NEW: Crypt::Stream::ChaCha
        - NEW: Crypt::Stream::RC4
        - NEW: Crypt::Stream::Sober128
        - NEW: functions in Crypt::Misc - increment_octets_be, increment_octets_le
        - Crypt::PRNG now uses chacha20 prng by default

0.047   2017-04-05
        - fix #32 Compile "ar" step fails when Perl built with -flto (better version)
        - fix #33 build fails on freebsd 9.2 and 10.0 (ar: fatal: Numeric group ID too large)

0.046   2017-04-04
        - fix #32 Compile "ar" step fails when Perl built with -flto

0.045   2017-03-31
        - sync with libtomcrypt/develop
        - fix #30 fix on SPARC+SolarisStudio
        - fix #31 Fails tests without '.' in @INC
        - polish compiler warnings

0.044   2016-11-28
        - fix #27 Math::BigInt::LTM compatibility with older Math::BigInt

0.043   2016-11-27
        - fix #26 Math::BigInt::LTM compatibility with Math::BigInt 1.999801+

0.042   2016-11-12
        - RSA: sign/verify functions now support 'none' padding (INSECURE!)
        - RC2: min keylen 40bit, used to be 64bit (INSECURE!)

0.041   2016-10-12
        - ECC: ltc_ecc_is_point memory leak
        - DSA: properly handle FIPS 186-4 (4.6 + 4.7)
        - GCM: counter incrementation isn't stopped at 2^32 blocks, which breaks GCM
        - fix issue #24 Crypt::PK::ECC needs $VERSION (all *.pm have $VERSION)

0.040   2016-09-12
        - fix file permissions
        - fix compiler warnings

0.039   2016-08-02
        - fix build troubles for MacOS / PPC

0.038   2016-07-06
        - fix issue #20 DSA/RSA/ECC/DH key2hash - hexadecimal numbers are missing leading zero
        - Math::BigInt::LTM fixed mp_invmod(a,b,c) for b == 1
        - Math::BigInt::LTM fixed _log_int()
        - Math::BigInt::LTM fixed _alen()
        - fix 'Please specify prototyping behavior for CryptX.xs'
        - libtomcrypt (renaming *tab.c > *tab.c.inc not needed anymore)

0.037   2016-06-16
        - fix issue #18 Minor issue with comment syntax
        - fix issue #19 t/checksum.t fails on AIX-5.3

0.036   2016-06-07
        - fix issue #17 ability to export ecc keys in short/oid form

0.035   2016-06-03
        - fix issue #14 Ensure Crypt::PK::ECC->key2hash()->{curve_name} is lowercase
        - fix issue #15 OpenSSL interoperability broken

0.034   2016-05-11
        - Prevent RSA import_key() from altering a JWK hash reference

0.033   2016-05-09
        - MSVC6 related fixes (needed for older ActivePerl@MSWin32)

0.032   2016-05-04
        - Crypt::PK::DH - accept base/prime values
        - new: DH methods export_key_raw, import_key_raw, params2hash
        - enhanced: DH method generate_key
        - new: Crypt::Checksum, Crypt::Checksum::CRC32, Crypt::Checksum::Adler32

0.031   2016-05-01
        - new: RSA+ECC method export_key_jwk_thumbprint()
        - new: Crypt::Misc functions random_v4uuid + is_v4uuid
        - fix: RSA+ECC export_key_jwk produces canonical JSON
        - fix: RSA+DSA public key export now produces PEM/DER compatible with openssl
                  public keys exported be previous version can still be imported
        - fix: ECC import_key now accepts non-standard JWK curve names e.g. "secp112r1", "secp521r1"

0.030   2016-04-13
        - fix: 0.029 + 0.028 by mistake installed *.inc files to perl/(lib|site|vendor)

0.029   2016-04-13
        - NEW module: Math::BigInt::LTM
        - NEW module: Crypt::Misc

0.028   2016-03-23
        - IMPORTANT: switch from Module::Build to ExtUtils::MakeMaker
        - fix for broken DSA key (ssh format) loading

0.027   2016-01-25
        - sync with https://github.com/libtom/libtomcrypt (branch develop)
        - sync with https://github.com/libtom/libtommath (branch develop)
        - HP-UX related fixes
        - JSON dependency is now optional (we check JSON::PP, JSON::XS, Cpanel::JSON::XS)
        - skip jwk.t if no JSON::* module available
        - does not require MIME::Base64 (we use base64 routines from libtomcrypt)

0.026   2015-11-28
        - switch to JSON::MaybeXS
        - Crypt::PRNG - rand/irand related cosmetics
        - consistently using UNIX newlines

0.025   2015-07-07
        - Crypt::PK::ECC+RSA export_key_jwk() allows to export a perl HASH with JWK structure

0.024   2015-06-29
        - new Crypt::PK::ECC methods
            verify_message_rfc7518()
            sign_message_rfc7518()
            curve2hash()
        - fix for Crypt::PK::RSA - bug in loading private key in JWK format

0.023   2015-06-10
        - support for older compilers (gcc3, vc6)
        - typo in documentation (by tomhukins)

0.022   2015-05-22
        - new: Crypt::PK::ECC+RSA export_key_jwk() - exporting JWK format
        - new: Crypt::Digest::SHA512_224
        - new: Crypt::Digest::SHA512_256
        - Crypt::PK::ECC+RSA import_key() - support for:
          * public/private keys in JWK format
          * private keys in PKCS8 PEM/DER format (unencrypted only)
        - Crypt::PK::ECC+RSA+DSA import_key() - support for:
          * public keys in SSH format
          * public/private keys as a hashref exported via key2hash
        - libtomcrypt updated to the latest develop branch, commit aeaa6d4a51 Apr 17 08:59:35 2015 +0200
        - libtommath  updated to the latest develop branch, commit 0fd5e6c17f Dec 11 14:59:35 2014 +0100
        - documentation fixes

0.021   2014-01-23
        - fixed asm(...) related compiler failures
        - dsa_encrypt_key small correction
        - optimized ecc_encrypt_key

0.020   2014-01-18
        - INCOMPATIBLE CHANGE: huge redesign of Crypt::PK::ECC
        - ECC now supports curves y^2 = x^3 + a*x + b
        - ECC you can use custom curves
        - ECC import/export of keys in DER/PEM format now compatible with openssl
        - enabling compile options ASM + ECC_TIMING_RESISTANT
        - added many test vectors (RSA, DSA, EC) for interoperability with openssl

0.019   2013-10-20
        - fixed broken CAMELLIA implementation

0.018   2013-10-18
        - DSA: make_key + sign_hash fixes

0.017   2013-09-24
        - lowering MIME::Base64 version requirement
        - support for import/export of password protected RSA/DSA keys
        - RSA: added - export_key_pem('public_x509')
        - better handling of dh_free/rsa_free/dsa_free/ecc_free
        - added openssl test vectors
        - fixed compiler warnings (RSA/DSA/ECC/DH)

0.016   2013-09-15
        - added missing test for key2hash, sign_hash, verify_hash
        - fixed build failures on VC6

0.015   2013-09-12
        - only documentation fixes

0.014   2013-09-11
        - Crypt::Digest::NNN + Crypt::Mac::NNN - can produce Base64-URL-Safe encoded digest/mac
        - Crypt::PRNG + Crypt::PRNG::NNN - Base64-URL-Safe encoded random bytes (random_bytes_b64u/bytes_b64u)
        - Crypt::PK::RSA/DSA/DH/ECC - sign/verify replaced by sign_message/verify_message + sign_hash/verify_hash
        - Crypt::PK::RSA/DSA/DH/ECC - new method key2hash
        - documentation fixes

0.013   2013-08-28
        - DSA/RSA/ECC/DH - importing keys from string changed - now: $pk->import_key(\$buffer_with_key)
        - DSA/RSA/ECC/DH - size() and is_private() now return undef if no key loaded
        - improved RSA doc

0.012   2013-06-17
        - README, LICENSE etc. to improve CPANTS score
        - somehow works with perl 5.6.2

0.011   2013-06-15
        - fixing various compiler warnings

0.009   2013-05-19
        - doc fixes
        - requires perl 5.8.8 or higher
        - INCOMPATIBILITY: all digest related 'xxx_base64' functions renamed to 'xxx_b64'

0.008   2013-05-02
        - fixed prng test failures
        - Crypt::Digest::* croaks with the "real caller" (not a nice solution)

0.007   2013-04-23
        - Crypt::PRNG supports add_entropy() - without params
        - Crypt::PRNG fork-safe & thread-safe
        - random_string has default $len = 20
        - doc fixes
        - cpan tester failure fix for pk_dsa.t

0.006   2013-04-19
        - added Crypt::KeyDerivation
        - Win64 compatibility

0.005   2013-04-18
        - added Crypt::PRNG::Fortuna|RC4|Sober128|Yarrow
        - added Crypt::PK::RSA|DSA|ECC|DH

0.004   2013-04-16
        - removing illegal Crypt::Random

0.003   2013-04-16
        - added Crypt::Mode::CBC|CFB|CTR|ECB|OFB
        - added Crypt::AuthEnc::CCM|EAX|GCM|OCB

0.002   2013-04-11
        - first release on CPAN
