Release Libgcrypt 1.12.3
Open, NormalPublic

Assigned To
None
Authored By
werner
Apr 15 2026, 10:44 AM
Subscribers

Description

Noteworthy changes in version 1.12.3 (2026-08-26) [C28/A8/R0]

  • Bug fixes:
    • Avoid theoretical drive-by loading of netapi32.dll and shell32.dll. [T8375]
    • Validate hash algorithm for use with RSA modulus. [T8376]
    • Validate parameters of Balloon KDF. [T8374,T8383]
    • Validate parallelism of Argon2 KDF. [T8373,T8382]
    • Fix parsing quoted parts and CRLF/LFCR in s-expression. [T8371]
    • Support BUFLEN check for GCRYMPI_FMT_SSH. [T8371]
    • Fix RSA PSS verify message length checking. [rC0d64fc228f]
    • Avoid a NULL ptr deref due to a unsupported genkey flag for ECC. [rC3b259530bc]
    • Assert 32 KiB input cap in gcm_ctr_encrypt. [T8387]
    • Fix assertion failure in OCB when a buffered block becomes block 65536. [T8389]
    • Fix OOB read in IMIT MAC verify of GOST28147. [T8388]
    • Fix CMAC block-count truncation for 64 GiB writes. [T8384]
    • Fix AEAD spurious byte-counter carry for 4 GiB adds. [T8381]
    • Validate all KEM input lengths. [T8259]
    • Add length check of DATALEN when parsing s-expression. [T8267]
    • Only accept canonical value for S with EdDSA. [T8386]
    • Only accept canonical signatures for RSA. [T8392]
    • Fix an assertion failure for invalid small-order Ed25519 public keys. [T8380]
    • Validate length of supplied receiver public-key length in DHKEM decapsulation. [T8385]
    • Use a more strict value for the PKCS#1 minimal frame length. [T8393,T8394]
  • Performance:
    • Use just strong random for the Dilithium signature nonce and the Kyber encapsulation coins. [rC70ecc4e943,rCd7a3acc130]
    • Allow internal users to skip fast random poll for ciphers and hashes. [rC75ff7a959b]
    • Speedup sntrup761 by defer reduction in polynomial multiplication, reading random with a single call, and reducing freeze helpers w/o division. [rCbaa3a6376b,rC3f2f39bf75,rC317c661b16]
    • Avoid byte-wise load/store on RISC-V with Zicclsm. [rCe18a5eb650]
    • Use unaligned vector memory access on RSIV-V when supported. [rCecaa3572e1]
    • Add Intel SM4 instructions accelerated AVX512 and AVX2 implementation. [rC14d1a882aa,rCdf44b486ba]
    • Add Intel SM3 extension implementation. [rC3f94b92e05]
    • Add Intel SHA512 extension implementation. [rC0f8a34038d]
  • Other:
    • kyber: Accept and return a seed using the gcry_pk_genkey API. [rCe099ccfea9]
    • Add curve "ietf25" as alternative to "Curve25519" with exact RFC-8410 semantics. The name "X25519" was already used as an alias, thus this new name. [rC997217e600]
    • Add straight-line speculation hardening for function ends. [rC9b684f4a44]
    • Fix constant time memequal check for SM2. [T8395]
    • Add post-quantum algorithm benchmarking to bench-slope.
    • Due to the minor API updates and but with no newer branch released the SO name has been updated.

(prev: T8114 next: T8414)

Related Objects

Mentioned In
T8400: libgcrypt: Add a curve name for ietf25 defined in RFC9580
T8417: Release Libgcrypt 1.12.4
T8114: Release Libgcrypt 1.12.2
Mentioned Here
rC997217e600ab: cipher:ecc: Add curve ietf25 with exact RFC8410 semantics.
rC9b684f4a448e: Add straight-line speculation hardening for function ends
rC0f8a34038db4: sha512: add Intel SHA512 extension implementation
rC3f94b92e0570: sm3: add Intel SM3 extension implementation
rCdf44b486ba99: sm4: add Intel SM4 instructions accelerated AVX2 implementation
rC14d1a882aacd: sm4: add Intel SM4 instructions accelerated AVX512 implementation
rCecaa3572e10f: riscv: use unaligned vector memory access when supported
rCe18a5eb65009: bufhelp: avoid byte-wise load/store on RISC-V with Zicclsm
rC3b259530bca5: ecc: Avoid a NULL ptr deref due to a unsupported genkey flag.
rC0d64fc228f10: cipher:rsa: Fix verify RSA PSS verify.
rC317c661b16cc: sntrup761: reduce freeze helpers without division
rC3f2f39bf7578: sntrup761: read random values with single call
rCbaa3a6376bba: sntrup761: defer reduction in polynomial multiplication
rC75ff7a959b81: md,cipher: allow internal users to skip fast random poll
rCd7a3acc13029: kyber: use strong random for encapsulation coins
rC70ecc4e943c6: dilithium: use strong random for signature nonce
rCe099ccfea936: cipher:kyber: Accept and return a seed with gcry_pk_genkey.
T8259: libgcrypt: KEM: Validate input length
T8267: s-expression parser datalen overflow
T8371: gcry_mpi_scan with GCRYPTMPI_FMT_SSH (rarely used), gcry_sexp_sscan OOB
T8373: Argon2 parallelism arithmetic underallocates lane storage on 32-bit
T8374: Balloon parallelism wraps flexible thread-array sizing on 32-bit
T8375: Windows entropy initialization loads NETAPI32 from the process DLL search path
T8376: OAEP size-check underflow permits heap writes past tiny RSA frames
T8380: Small-order Ed25519 public keys reach a fatal internal arithmetic assertion
T8381: AEAD byte counters add a spurious carry for writes of 4 GiB or more
T8382: Argon2 parallelism overflow creates a zero divisor
T8383: Balloon space cost wraps before conversion to the 64-bit block count
T8384: CMAC truncates one-shot block counts above 64 GiB
T8385: DHKEM decapsulation ignores the supplied receiver-public-key length
T8386: EdDSA verifier accepts non-canonical S plus the group order
T8388: GOST IMIT verification reads past its eight-byte stack tag
T8389: OCB split AAD aborts when a buffered block becomes block 65,536
T8392: RSA verification accepts signature representatives greater than the modulus
T8393: RSAES-PKCS1-v1_5 decoder accepts padding strings shorter than eight bytes
T8394: RSAES-PKCS1-v1_5 encoder emits padding strings as short as four bytes
T8395: SM2 ciphertext authentication uses a prefix-leaking comparison
T8414: libgcrypt: non-secure EC curves can be specified by gcry_mpi_ec_new
T8114: Release Libgcrypt 1.12.2