diff --git a/.cargo/config.toml b/.cargo/config.toml new file mode 100644 index 00000000000..d911f804a0a --- /dev/null +++ b/.cargo/config.toml @@ -0,0 +1,2 @@ +[target.wasm32-unknown-unknown] +rustflags = ["--cfg", "getrandom_backend=\"wasm_js\""] # for getrandom 0.3 diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 3cb5fd6b366..c32a9497c36 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -6,9 +6,6 @@ on: branches: - main -env: - RUSTFLAGS: -Dwarnings - jobs: test: name: Build and Test @@ -17,6 +14,10 @@ jobs: matrix: os: [ubuntu-latest, macOS-latest, windows-latest] rust: [stable, nightly] + env: + # This environment variable would override the RUSTFLAGS value set in .config/cargo.toml when + # building for WASM. Thus, we only use it on host builds. + RUSTFLAGS: -Dwarnings steps: - uses: actions/checkout@v4 - name: Install ${{ matrix.rust }} @@ -37,6 +38,10 @@ jobs: check_fmt_and_docs: name: Lints and Docs runs-on: ubuntu-latest + env: + # This environment variable would override the RUSTFLAGS value set in .config/cargo.toml when + # building for WASM. Thus, we only use it on host builds. + RUSTFLAGS: -Dwarnings steps: - uses: actions/checkout@v4 - uses: actions-rs/toolchain@v1 @@ -69,8 +74,11 @@ jobs: target: wasm32-unknown-unknown - uses: actions/setup-node@v4 with: - node-version: "20" - - uses: jetli/wasm-pack-action@v0.4.0 + node-version: "22" + - name: install cargo-binstall + uses: cargo-bins/cargo-binstall@v1.12.6 + - name: install wasm-pack + run: cargo binstall wasm-pack --version 0.13.1 - name: build with default features run: wasm-pack build - name: node test @@ -82,7 +90,7 @@ jobs: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: - node-version: 18 + node-version: "22" - run: npm ci - run: npm run build - run: npm run test diff --git a/Cargo.toml b/Cargo.toml index 7917d341a84..d3bcf75f83a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "hpke-dispatch" -version = "0.7.0" +version = "0.8.0" edition = "2021" description = "runtime algorithmic selection for hybrid public key encryption" license = "MPL-2.0" @@ -31,10 +31,10 @@ kem-dh-p521-hkdf-sha512 = ["hpke/p521"] kem-x25519-hkdf-sha256 = ["hpke/x25519"] [dependencies] -rand = "0.8.5" +rand = "0.9.2" num_enum = "0.7.0" cfg-if = "1.0.0" -hpke = { version = "0.12.0", default-features = false, features = ["std"] } +hpke = { version = "0.13.0", default-features = false, features = ["std"] } zeroize = "1.6" [dependencies.serde_crate] @@ -43,9 +43,10 @@ features = ["derive"] optional = true package = "serde" -[target.'cfg(target_arch = "wasm32")'.dependencies] +[target.wasm32-unknown-unknown.dependencies] wasm-bindgen = "0.2.87" -getrandom = { version = "0.2.10", features = ["js", "js-sys"] } +getrandom_2 = { package = "getrandom", version = "0.2.16", features = ["js", "js-sys"] } # for getrandom 0.2 +getrandom_3 = { package = "getrandom", version = "0.3.3", features = ["wasm_js"] } # for getrandom 0.3 [lib] crate-type = ["cdylib", "rlib"] diff --git a/package-lock.json b/package-lock.json index f3ed93579d6..2ddc198eff0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "hpke", - "version": "0.7.0", + "version": "0.8.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "hpke", - "version": "0.7.0", + "version": "0.8.0", "license": "MPL-2.0", "devDependencies": { "@tsconfig/node18": "^1.0.1", @@ -21,7 +21,7 @@ "prettier": "^2.7.1", "ts-mocha": "^10.0.0", "typescript": "^4.7.4", - "wasm-pack": "^0.13.0" + "wasm-pack": "^0.13.1" } }, "node_modules/@esbuild/aix-ppc64": { @@ -3884,11 +3884,12 @@ } }, "node_modules/wasm-pack": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/wasm-pack/-/wasm-pack-0.13.0.tgz", - "integrity": "sha512-AmboGZEnZoIcVCzSlkLEmNFEqJN+IwgshJ5S7pi30uNUTce4LvWkifQzsQRxnWj47G8gkqZxlyGlyQplsnIS7w==", + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/wasm-pack/-/wasm-pack-0.13.1.tgz", + "integrity": "sha512-P9exD4YkjpDbw68xUhF3MDm/CC/3eTmmthyG5bHJ56kalxOTewOunxTke4SyF8MTXV6jUtNjXggPgrGmMtczGg==", "dev": true, "hasInstallScript": true, + "license": "MIT OR Apache-2.0", "dependencies": { "binary-install": "^1.0.1" }, @@ -6711,9 +6712,9 @@ } }, "wasm-pack": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/wasm-pack/-/wasm-pack-0.13.0.tgz", - "integrity": "sha512-AmboGZEnZoIcVCzSlkLEmNFEqJN+IwgshJ5S7pi30uNUTce4LvWkifQzsQRxnWj47G8gkqZxlyGlyQplsnIS7w==", + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/wasm-pack/-/wasm-pack-0.13.1.tgz", + "integrity": "sha512-P9exD4YkjpDbw68xUhF3MDm/CC/3eTmmthyG5bHJ56kalxOTewOunxTke4SyF8MTXV6jUtNjXggPgrGmMtczGg==", "dev": true, "requires": { "binary-install": "^1.0.1" diff --git a/package.json b/package.json index c49f9e15bd5..3fadf84b892 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "hpke", "description": "hybrid public key encryption", - "version": "0.7.0", + "version": "0.8.0", "license": "MPL-2.0", "repository": { "type": "git", @@ -35,6 +35,6 @@ "prettier": "^2.7.1", "ts-mocha": "^10.0.0", "typescript": "^4.7.4", - "wasm-pack": "^0.13.0" + "wasm-pack": "^0.13.1" } } diff --git a/src/base_mode_seal.rs b/src/base_mode_seal.rs index b262549878f..749e258e55f 100644 --- a/src/base_mode_seal.rs +++ b/src/base_mode_seal.rs @@ -52,7 +52,7 @@ where info, plaintext, aad, - &mut rand::thread_rng(), + &mut rand::rng(), )?; Ok(EncappedKeyAndCiphertext { diff --git a/src/kem.rs b/src/kem.rs index 5cd2201ec43..fdf2d52cebf 100644 --- a/src/kem.rs +++ b/src/kem.rs @@ -68,7 +68,7 @@ impl FromStr for Kem { } impl Kem { - /// generate a [`Keypair`] for this [`Config`] or [`Kem`]. + /// generate a [`Keypair`] for this [`Kem`]. #[must_use] pub fn gen_keypair(self) -> Keypair { crate::gen_keypair(self) diff --git a/src/keypair.rs b/src/keypair.rs index ac73c357086..f711c89596c 100644 --- a/src/keypair.rs +++ b/src/keypair.rs @@ -52,7 +52,7 @@ pub fn gen_keypair(kem: Kem) -> Keypair { } fn gen_kp() -> Keypair { - let (private_key, public_key) = KemT::gen_keypair(&mut rand::thread_rng()); + let (private_key, public_key) = KemT::gen_keypair(&mut rand::rng()); let public_key = public_key.to_bytes().to_vec(); let private_key = private_key.to_bytes().to_vec(); diff --git a/src/lib.rs b/src/lib.rs index e52896cb736..beef33e9e3f 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -9,7 +9,11 @@ unused_qualifications )] #![warn(missing_docs, clippy::cargo)] -#![allow(clippy::missing_errors_doc, clippy::use_self)] +#![allow( + clippy::missing_errors_doc, + clippy::use_self, + clippy::multiple_crate_versions +)] #![doc = include_str!("../README.md")] use hpke::Deserializable;