From fb5addd05b3358dcfaa763df5a92170205660cff Mon Sep 17 00:00:00 2001 From: Tony Arcieri Date: Sun, 25 Oct 2026 15:59:22 -0600 Subject: [PATCH] Bump `ctutils` to v0.4.5; MSRV 1.87 This release includs important constant-time correctness fixes --- .github/workflows/dhkem.yml | 2 +- .github/workflows/frodo-kem.yml | 2 +- .github/workflows/hqc-kem.yml | 2 +- .github/workflows/ml-kem.yml | 2 +- .github/workflows/module-lattice.yml | 2 +- .github/workflows/sntrup-kem.yml | 2 +- .github/workflows/x-wing.yml | 2 +- Cargo.lock | 4 ++-- dhkem/Cargo.toml | 4 ++-- dhkem/README.md | 2 +- frodo-kem/Cargo.toml | 4 ++-- frodo-kem/README.md | 22 +++++++++++++++------- hqc-kem/Cargo.toml | 2 +- hqc-kem/README.md | 26 ++++++++++++++++++++++---- ml-kem/Cargo.toml | 2 +- ml-kem/README.md | 2 +- module-lattice/Cargo.toml | 4 ++-- module-lattice/README.md | 2 +- sntrup-kem/Cargo.toml | 3 ++- sntrup-kem/README.md | 2 +- x-wing/Cargo.toml | 2 +- 21 files changed, 61 insertions(+), 34 deletions(-) diff --git a/.github/workflows/dhkem.yml b/.github/workflows/dhkem.yml index 4741208f..3592cf2d 100644 --- a/.github/workflows/dhkem.yml +++ b/.github/workflows/dhkem.yml @@ -26,7 +26,7 @@ jobs: set-msrv: uses: RustCrypto/actions/.github/workflows/set-msrv.yml@master with: - msrv: 1.85.0 + msrv: 1.87.0 minimal-versions: # temporarily disabled as requested by Tony (https://github.com/RustCrypto/KEMs/pull/15#pullrequestreview-2006378802) diff --git a/.github/workflows/frodo-kem.yml b/.github/workflows/frodo-kem.yml index 866e6349..9cf150e5 100644 --- a/.github/workflows/frodo-kem.yml +++ b/.github/workflows/frodo-kem.yml @@ -30,7 +30,7 @@ jobs: set-msrv: uses: RustCrypto/actions/.github/workflows/set-msrv.yml@master with: - msrv: 1.85.0 + msrv: 1.87.0 build: needs: set-msrv diff --git a/.github/workflows/hqc-kem.yml b/.github/workflows/hqc-kem.yml index d18761c6..c5b65ee9 100644 --- a/.github/workflows/hqc-kem.yml +++ b/.github/workflows/hqc-kem.yml @@ -26,7 +26,7 @@ jobs: set-msrv: uses: RustCrypto/actions/.github/workflows/set-msrv.yml@master with: - msrv: 1.85.0 + msrv: 1.87.0 minimal-versions: if: false diff --git a/.github/workflows/ml-kem.yml b/.github/workflows/ml-kem.yml index 7a10d72b..1cea7bca 100644 --- a/.github/workflows/ml-kem.yml +++ b/.github/workflows/ml-kem.yml @@ -27,7 +27,7 @@ jobs: set-msrv: uses: RustCrypto/actions/.github/workflows/set-msrv.yml@master with: - msrv: 1.85.0 + msrv: 1.87.0 minimal-versions: uses: RustCrypto/actions/.github/workflows/minimal-versions.yml@master diff --git a/.github/workflows/module-lattice.yml b/.github/workflows/module-lattice.yml index ba7bc984..85b0f93e 100644 --- a/.github/workflows/module-lattice.yml +++ b/.github/workflows/module-lattice.yml @@ -26,7 +26,7 @@ jobs: set-msrv: uses: RustCrypto/actions/.github/workflows/set-msrv.yml@master with: - msrv: 1.85.0 + msrv: 1.87.0 minimal-versions: uses: RustCrypto/actions/.github/workflows/minimal-versions.yml@master diff --git a/.github/workflows/sntrup-kem.yml b/.github/workflows/sntrup-kem.yml index 18cdfbdd..ebce9d47 100644 --- a/.github/workflows/sntrup-kem.yml +++ b/.github/workflows/sntrup-kem.yml @@ -26,7 +26,7 @@ jobs: set-msrv: uses: RustCrypto/actions/.github/workflows/set-msrv.yml@master with: - msrv: 1.85.0 + msrv: 1.87.0 minimal-versions: if: false diff --git a/.github/workflows/x-wing.yml b/.github/workflows/x-wing.yml index c2aab966..0218cebf 100644 --- a/.github/workflows/x-wing.yml +++ b/.github/workflows/x-wing.yml @@ -27,7 +27,7 @@ jobs: set-msrv: uses: RustCrypto/actions/.github/workflows/set-msrv.yml@master with: - msrv: 1.85.0 + msrv: 1.87.0 minimal-versions: # temporarily disabled as requested by Tony (https://github.com/RustCrypto/KEMs/pull/15#pullrequestreview-2006378802) diff --git a/Cargo.lock b/Cargo.lock index 9c7d6970..f34459b1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -313,9 +313,9 @@ dependencies = [ [[package]] name = "ctutils" -version = "0.4.2" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d5515a3834141de9eafb9717ad39eea8247b5674e6066c404e8c4b365d2a29e" +checksum = "38d28fb6aa7dd680b3ffd1a3e64e115c177bdba63c0ae7f9cd48129ff05c4fa0" dependencies = [ "cmov", "subtle", diff --git a/dhkem/Cargo.toml b/dhkem/Cargo.toml index 22344da5..89c39a6f 100644 --- a/dhkem/Cargo.toml +++ b/dhkem/Cargo.toml @@ -6,7 +6,7 @@ Diffie Hellman (ECDH) protocols """ version = "0.1.0" edition = "2024" -rust-version = "1.85" +rust-version = "1.87" license = "Apache-2.0 OR MIT" repository = "https://github.com/RustCrypto/KEMs/tree/master/dhkem" categories = ["cryptography"] @@ -14,7 +14,7 @@ keywords = ["crypto", "ecdh", "ecc"] readme = "README.md" [dependencies] -ctutils = "0.4" +ctutils = "0.4.5" hkdf = "0.13" kem = "0.3" rand_core = "0.10" diff --git a/dhkem/README.md b/dhkem/README.md index e3d2b839..bf799ff7 100644 --- a/dhkem/README.md +++ b/dhkem/README.md @@ -59,7 +59,7 @@ dual licensed as above, without any additional terms or conditions. [build-image]: https://github.com/RustCrypto/KEMs/actions/workflows/dhkem.yml/badge.svg [build-link]: https://github.com/RustCrypto/KEMs/actions/workflows/dhkem.yml [license-image]: https://img.shields.io/badge/license-Apache2.0/MIT-blue.svg -[rustc-image]: https://img.shields.io/badge/rustc-1.85+-blue.svg +[rustc-image]: https://img.shields.io/badge/rustc-1.87+-blue.svg [chat-image]: https://img.shields.io/badge/zulip-join_chat-blue.svg [chat-link]: https://rustcrypto.zulipchat.com/#narrow/stream/406484-KEMs diff --git a/frodo-kem/Cargo.toml b/frodo-kem/Cargo.toml index 7e31bc20..6dfd9eb8 100644 --- a/frodo-kem/Cargo.toml +++ b/frodo-kem/Cargo.toml @@ -12,7 +12,7 @@ exclude = ["tests/**", "bench/**", "examples/**", ".github/**"] license = "Apache-2.0 OR MIT" readme = "README.md" edition = "2024" -rust-version = "1.85" +rust-version = "1.87" [features] default = [ @@ -58,7 +58,7 @@ std = [] [dependencies] aes = { version = "0.9", optional = true } -ctutils = "0.4" +ctutils = "0.4.5" hex = { version = "0.4", optional = true } hybrid-array = { version = "0.4.13", features = ["extra-sizes"] } kem = "0.3" diff --git a/frodo-kem/README.md b/frodo-kem/README.md index 512af985..034285ef 100644 --- a/frodo-kem/README.md +++ b/frodo-kem/README.md @@ -1,10 +1,11 @@ -# [RustCrypto] Frodo-KEM +# [RustCrypto]: Frodo-KEM -[![Crate][crate-image]][crate-link] +[![crate][crate-image]][crate-link] [![Docs][docs-image]][docs-link] -![Build](https://github.com/RustCrypto/KEMs/actions/workflows/frodo-kem.yml/badge.svg) +[![Build Status][build-image]][build-link] ![Apache2/MIT licensed][license-image] -![MSRV][msrv-image] +![Rust Version][rustc-image] +[![Project Chat][chat-image]][chat-link] A pure Rust implementation of FrodoKEM and eFrodoKEM as specified in [ISO/IEC 18033-2:2006/Amd 2:2026][iso-standard]. @@ -128,12 +129,19 @@ conditions. [//]: # (badges) -[RustCrypto]: https://github.com/rustcrypto -[crate-image]: https://img.shields.io/crates/v/frodo-kem.svg?logo=rust +[crate-image]: https://img.shields.io/crates/v/frodo-kem?logo=rust [crate-link]: https://crates.io/crates/frodo-kem [docs-image]: https://docs.rs/frodo-kem/badge.svg [docs-link]: https://docs.rs/frodo-kem/ +[build-image]: https://github.com/RustCrypto/KEMs/actions/workflows/frodo-kem.yml/badge.svg +[build-link]: https://github.com/RustCrypto/KEMs/actions/workflows/frodo-kem.yml [license-image]: https://img.shields.io/badge/license-Apache2.0/MIT-blue.svg -[msrv-image]: https://img.shields.io/badge/rustc-1.85+-blue.svg +[rustc-image]: https://img.shields.io/badge/rustc-1.87+-blue.svg +[chat-image]: https://img.shields.io/badge/zulip-join_chat-blue.svg +[chat-link]: https://rustcrypto.zulipchat.com/#narrow/stream/406484-KEMs + +[//]: # (links) + +[RustCrypto]: https://github.com/rustcrypto [iso-standard]: https://www.iso.org/standard/86890.html [reference-kats]: https://github.com/microsoft/PQCrypto-LWEKE/tree/7a4e7219d06305e16aef734213001cd8fefbcc14 diff --git a/hqc-kem/Cargo.toml b/hqc-kem/Cargo.toml index bdde394f..ebf0cb40 100644 --- a/hqc-kem/Cargo.toml +++ b/hqc-kem/Cargo.toml @@ -27,7 +27,7 @@ const-oid = { version = "0.10", optional = true } hybrid-array = { version = "0.4.10", optional = true, features = ["extra-sizes"] } kem_traits = { package = "kem", version = "0.3", optional = true } pkcs8 = { version = "0.11", optional = true, default-features = false } -ctutils = { version = "0.4", default-features = false } +ctutils = { version = "0.4.5", default-features = false } rand = { version = "0.10", default-features = false } sha3 = { version = "0.12", default-features = false } shake = { version = "0.1", default-features = false } diff --git a/hqc-kem/README.md b/hqc-kem/README.md index 4c5b2b15..5e2c19a9 100644 --- a/hqc-kem/README.md +++ b/hqc-kem/README.md @@ -1,12 +1,17 @@ # hqc-kem +[![crate][crate-image]][crate-link] +[![Docs][docs-image]][docs-link] +[![Build Status][build-image]][build-link] +![Apache2/MIT licensed][license-image] +![Rust Version][rustc-image] +[![Project Chat][chat-image]][chat-link] + Pure Rust implementation of **HQC-KEM** (Hamming Quasi-Cyclic Key Encapsulation Mechanism), a post-quantum KEM based on quasi-cyclic codes over the ring Z_2[X]/(X^n-1). -HQC uses concatenated Reed-Solomon + Reed-Muller error correction with the Fujisaki-Okamoto transform for IND-CCA2 security. It's currently selected as the backup approved KEM to ML-KEM. +## About -[![Crates.io](https://img.shields.io/crates/v/hqc-kem.svg)](https://crates.io/crates/hqc-kem) -[![Documentation](https://docs.rs/hqc-kem/badge.svg)](https://docs.rs/hqc-kem) -[![License](https://img.shields.io/crates/l/hqc-kem.svg)](https://github.com/mikelodder7/hqc-kem) +HQC uses concatenated Reed-Solomon + Reed-Muller error correction with the Fujisaki-Okamoto transform for IND-CCA2 security. It's currently selected as the backup approved KEM to ML-KEM. ## References @@ -208,3 +213,16 @@ Licensed under either of: - [MIT License](http://opensource.org/licenses/MIT) at your option. + +[//]: # (badges) + +[crate-image]: https://img.shields.io/crates/v/hqc-kem?logo=rust +[crate-link]: https://crates.io/crates/hqc-kem +[docs-image]: https://docs.rs/hqc-kem/badge.svg +[docs-link]: https://docs.rs/hqc-kem/ +[build-image]: https://github.com/RustCrypto/KEMs/actions/workflows/hqc-kem.yml/badge.svg +[build-link]: https://github.com/RustCrypto/KEMs/actions/workflows/hqc-kem.yml +[license-image]: https://img.shields.io/badge/license-Apache2.0/MIT-blue.svg +[rustc-image]: https://img.shields.io/badge/rustc-1.87+-blue.svg +[chat-image]: https://img.shields.io/badge/zulip-join_chat-blue.svg +[chat-link]: https://rustcrypto.zulipchat.com/#narrow/stream/406484-KEMs diff --git a/ml-kem/Cargo.toml b/ml-kem/Cargo.toml index d4740967..05f9887c 100644 --- a/ml-kem/Cargo.toml +++ b/ml-kem/Cargo.toml @@ -6,7 +6,7 @@ Pure Rust implementation of the Module-Lattice-Based Key-Encapsulation Mechanism """ version = "0.3.3" edition = "2024" -rust-version = "1.85" +rust-version = "1.87" license = "Apache-2.0 OR MIT" readme = "README.md" homepage = "https://github.com/RustCrypto/KEMs/tree/master/ml-kem" diff --git a/ml-kem/README.md b/ml-kem/README.md index 730bc6cc..596e36a2 100644 --- a/ml-kem/README.md +++ b/ml-kem/README.md @@ -79,7 +79,7 @@ dual licensed as above, without any additional terms or conditions. [build-image]: https://github.com/RustCrypto/KEMs/actions/workflows/ml-kem.yml/badge.svg [build-link]: https://github.com/RustCrypto/KEMs/actions/workflows/ml-kem.yml [license-image]: https://img.shields.io/badge/license-Apache2.0/MIT-blue.svg -[rustc-image]: https://img.shields.io/badge/rustc-1.85+-blue.svg +[rustc-image]: https://img.shields.io/badge/rustc-1.87+-blue.svg [chat-image]: https://img.shields.io/badge/zulip-join_chat-blue.svg [chat-link]: https://rustcrypto.zulipchat.com/#narrow/stream/406484-KEMs diff --git a/module-lattice/Cargo.toml b/module-lattice/Cargo.toml index 268fe3d8..22dd78c8 100644 --- a/module-lattice/Cargo.toml +++ b/module-lattice/Cargo.toml @@ -7,7 +7,7 @@ and vectors, as well as packing of polynomials into coefficients with a specifie """ version = "0.2.3" edition = "2024" -rust-version = "1.85" +rust-version = "1.87" license = "Apache-2.0 OR MIT" readme = "README.md" homepage = "https://github.com/RustCrypto/KEMs/tree/master/module-lattice" @@ -20,7 +20,7 @@ array = { version = "0.4.8", package = "hybrid-array", features = ["extra-sizes" num-traits = { version = "0.2", default-features = false } # optional dependencies -ctutils = { version = "0.4", optional = true } +ctutils = { version = "0.4.5", optional = true } zeroize = { version = "1.8.1", optional = true, default-features = false } [dev-dependencies] diff --git a/module-lattice/README.md b/module-lattice/README.md index d74bb4ea..168b7589 100644 --- a/module-lattice/README.md +++ b/module-lattice/README.md @@ -57,7 +57,7 @@ dual licensed as above, without any additional terms or conditions. [build-image]: https://github.com/RustCrypto/KEMs/actions/workflows/module-lattice.yml/badge.svg [build-link]: https://github.com/RustCrypto/KEMs/actions/workflows/module-lattice.yml [license-image]: https://img.shields.io/badge/license-Apache2.0/MIT-blue.svg -[rustc-image]: https://img.shields.io/badge/rustc-1.85+-blue.svg +[rustc-image]: https://img.shields.io/badge/rustc-1.87+-blue.svg [chat-image]: https://img.shields.io/badge/zulip-join_chat-blue.svg [chat-link]: https://rustcrypto.zulipchat.com/#narrow/stream/406484-KEMs [hazmat-image]: https://img.shields.io/badge/crypto-hazmat%E2%9A%A0-red.svg diff --git a/sntrup-kem/Cargo.toml b/sntrup-kem/Cargo.toml index 64aa83ec..38c2b85a 100644 --- a/sntrup-kem/Cargo.toml +++ b/sntrup-kem/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sntrup-kem" -version = "0.1.0" +version = "0.0.0" authors = ["Michael Lodder "] license = "MIT OR Apache-2.0" keywords = ["sntrup", "kem", "post-quantum", "cryptography", "NTRU"] @@ -10,6 +10,7 @@ repository = "https://github.com/RustCrypto/KEMs" categories = ["algorithms", "cryptography"] readme = "README.md" edition = "2024" +rust-version = "1.87" [package.metadata.docs.rs] features = ["kem", "serde"] diff --git a/sntrup-kem/README.md b/sntrup-kem/README.md index 05d125d8..29517f71 100644 --- a/sntrup-kem/README.md +++ b/sntrup-kem/README.md @@ -258,4 +258,4 @@ conditions. [docs-link]: https://docs.rs/sntrup-kem/ [license-image]: https://img.shields.io/badge/license-Apache2.0/MIT-blue.svg [downloads-image]: https://img.shields.io/crates/d/sntrup-kem.svg -[msrv-image]: https://img.shields.io/badge/rustc-1.85+-blue.svg +[msrv-image]: https://img.shields.io/badge/rustc-1.87+-blue.svg diff --git a/x-wing/Cargo.toml b/x-wing/Cargo.toml index 90fa856c..c5610e92 100644 --- a/x-wing/Cargo.toml +++ b/x-wing/Cargo.toml @@ -3,7 +3,7 @@ name = "x-wing" description = "Pure Rust implementation of the X-Wing Key Encapsulation Mechanism (draft 06)" version = "0.1.1" edition = "2024" -rust-version = "1.85" +rust-version = "1.87" license = "Apache-2.0 OR MIT" readme = "README.md" homepage = "https://github.com/RustCrypto/KEMs/tree/master/x-wing"