From 8711458e4664794f31c06d77c6a61bb7a5bdff60 Mon Sep 17 00:00:00 2001 From: Lann Martin Date: Fri, 21 Aug 2026 23:13:05 -0400 Subject: [PATCH 1/2] polyengine 0.3.0 (the deltic rename); @polymorph/webcrypto 0.3.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The engine renamed deltic -> polyengine (@deltic/* -> @polyengine/* on JSR) and cut 0.3.0; the runner core @polymorph/test cut 0.2.0 with its exports renamed to match. Full rename here: js/deltic -> js/polyengine, conformance/driver-ct/deltic -> polyengine, justfile targets, driver ids polyengine-deno/polyengine-browser across targets*.toml, matrix docs and compat/registry.toml keys, and the extract script's artifact name. Pins: exact jsr:@polyengine/*@0.3.0 (conformance), caret ^0.3.0 in the published package (bumped 0.2.0 -> 0.3.0); @polymorph/test@0.2.0 via jsr and @jsr/polymorph__test@0.2.0 across the npm-compat trees; all locks regenerated. The Rust component-test pins bump to 38bfedf2 (the 0.2.0 release rev) per the bump-together contract, with ci.yml action refs. conformance-ct::_viewer-prepared drops the long-retired fetch script for the checkout's own `just polyengine-assets` (the successor mechanism upstream adopted before v0.1.0 — the old path was dead at every rev this repo has pinned since). Gates: js package check + tests (17/17), driver-ct check, polyengine-pin-check, runner-js-pin-check, conformance-ct build + lock-check + run-polyengine (expected-fail counts exactly per targets*.toml), just check — green locally; browser legs to CI. --- .github/justfile | 22 +-- .github/workflows/ci.yml | 28 +-- .github/workflows/jsr-publish.yml | 4 +- .github/workflows/pages.yml | 12 +- AGENTS.md | 18 +- Cargo.lock | 26 +-- Cargo.toml | 6 +- README.md | 22 +-- conformance/README.md | 16 +- conformance/driver-ct/compat/registry.toml | 6 +- conformance/driver-ct/deltic/deno.json | 15 -- conformance/driver-ct/deltic/deno.lock | 72 ------- conformance/driver-ct/deltic/package.json | 10 - conformance/driver-ct/jco/package-lock.json | 24 +-- conformance/driver-ct/jco/package.json | 2 +- conformance/driver-ct/jco/reuse-worker.mjs | 4 +- conformance/driver-ct/jco/run-browser.mjs | 6 +- conformance/driver-ct/jco/stage-viewer.mjs | 40 ++-- conformance/driver-ct/justfile | 147 +++++++-------- conformance/driver-ct/matrix-signing.md | 174 ++++++++--------- conformance/driver-ct/matrix.md | 72 +++---- .../driver-ct/{deltic => polyengine}/.npmrc | 0 .../{deltic => polyengine}/README.md | 54 +++--- .../browser-bundle-entry.ts | 14 +- .../browser/worker-entry.ts | 18 +- conformance/driver-ct/polyengine/deno.json | 15 ++ conformance/driver-ct/polyengine/deno.lock | 60 ++++++ .../extract-translator-wasm.py | 8 +- .../{deltic => polyengine}/package-lock.json | 12 +- conformance/driver-ct/polyengine/package.json | 10 + .../{deltic => polyengine}/run-browser.mjs | 24 +-- .../driver-ct/{deltic => polyengine}/run.ts | 48 ++--- conformance/driver-ct/targets-signing.toml | 176 +++++++++--------- conformance/driver-ct/targets.toml | 78 ++++---- conformance/guest-ct/src/probes.rs | 2 +- examples/jco-demo/package-lock.json | 24 +-- examples/jco-demo/package.json | 2 +- js/componentize/wpt/parity/package-lock.json | 24 +-- js/componentize/wpt/parity/package.json | 2 +- js/deltic/deno.json | 18 -- js/deltic/deno.lock | 23 --- js/jco/package-lock.json | 38 ++-- js/jco/package.json | 2 +- js/{deltic => polyengine}/README.md | 30 +-- js/polyengine/deno.json | 18 ++ js/polyengine/deno.lock | 23 +++ js/{deltic => polyengine}/src/aead.ts | 2 +- js/{deltic => polyengine}/src/cipher.ts | 2 +- js/{deltic => polyengine}/src/derivation.ts | 0 js/{deltic => polyengine}/src/digest.ts | 2 +- js/{deltic => polyengine}/src/ec.ts | 0 js/{deltic => polyengine}/src/ecdh.ts | 0 js/{deltic => polyengine}/src/ecdsa.ts | 0 js/{deltic => polyengine}/src/errors.ts | 2 +- js/{deltic => polyengine}/src/hkdf.ts | 0 js/{deltic => polyengine}/src/keyAgreement.ts | 0 js/{deltic => polyengine}/src/keyWrap.ts | 0 js/{deltic => polyengine}/src/mac.ts | 2 +- js/{deltic => polyengine}/src/mod.ts | 16 +- js/{deltic => polyengine}/src/pbkdf2.ts | 0 js/{deltic => polyengine}/src/platform.ts | 2 +- .../src/publicEncryption.ts | 0 js/{deltic => polyengine}/src/rsaSignature.ts | 0 js/{deltic => polyengine}/src/sha1Checked.ts | 0 js/{deltic => polyengine}/src/signature.ts | 2 +- js/{deltic => polyengine}/src/util.ts | 2 +- js/{deltic => polyengine}/src/wrapping.ts | 0 js/{deltic => polyengine}/tests/asserts.ts | 2 +- .../tests/families_test.ts | 12 +- js/{deltic => polyengine}/tests/testStream.ts | 2 +- justfile | 10 +- 71 files changed, 748 insertions(+), 759 deletions(-) delete mode 100644 conformance/driver-ct/deltic/deno.json delete mode 100644 conformance/driver-ct/deltic/deno.lock delete mode 100644 conformance/driver-ct/deltic/package.json rename conformance/driver-ct/{deltic => polyengine}/.npmrc (100%) rename conformance/driver-ct/{deltic => polyengine}/README.md (67%) rename conformance/driver-ct/{deltic => polyengine}/browser-bundle-entry.ts (51%) rename conformance/driver-ct/{deltic => polyengine}/browser/worker-entry.ts (69%) create mode 100644 conformance/driver-ct/polyengine/deno.json create mode 100644 conformance/driver-ct/polyengine/deno.lock rename conformance/driver-ct/{deltic => polyengine}/extract-translator-wasm.py (85%) rename conformance/driver-ct/{deltic => polyengine}/package-lock.json (67%) create mode 100644 conformance/driver-ct/polyengine/package.json rename conformance/driver-ct/{deltic => polyengine}/run-browser.mjs (82%) rename conformance/driver-ct/{deltic => polyengine}/run.ts (85%) delete mode 100644 js/deltic/deno.json delete mode 100644 js/deltic/deno.lock rename js/{deltic => polyengine}/README.md (68%) create mode 100644 js/polyengine/deno.json create mode 100644 js/polyengine/deno.lock rename js/{deltic => polyengine}/src/aead.ts (99%) rename js/{deltic => polyengine}/src/cipher.ts (99%) rename js/{deltic => polyengine}/src/derivation.ts (100%) rename js/{deltic => polyengine}/src/digest.ts (97%) rename js/{deltic => polyengine}/src/ec.ts (100%) rename js/{deltic => polyengine}/src/ecdh.ts (100%) rename js/{deltic => polyengine}/src/ecdsa.ts (100%) rename js/{deltic => polyengine}/src/errors.ts (99%) rename js/{deltic => polyengine}/src/hkdf.ts (100%) rename js/{deltic => polyengine}/src/keyAgreement.ts (100%) rename js/{deltic => polyengine}/src/keyWrap.ts (100%) rename js/{deltic => polyengine}/src/mac.ts (99%) rename js/{deltic => polyengine}/src/mod.ts (90%) rename js/{deltic => polyengine}/src/pbkdf2.ts (100%) rename js/{deltic => polyengine}/src/platform.ts (99%) rename js/{deltic => polyengine}/src/publicEncryption.ts (100%) rename js/{deltic => polyengine}/src/rsaSignature.ts (100%) rename js/{deltic => polyengine}/src/sha1Checked.ts (100%) rename js/{deltic => polyengine}/src/signature.ts (99%) rename js/{deltic => polyengine}/src/util.ts (98%) rename js/{deltic => polyengine}/src/wrapping.ts (100%) rename js/{deltic => polyengine}/tests/asserts.ts (93%) rename js/{deltic => polyengine}/tests/families_test.ts (96%) rename js/{deltic => polyengine}/tests/testStream.ts (92%) diff --git a/.github/justfile b/.github/justfile index cd497f40..287f34c5 100644 --- a/.github/justfile +++ b/.github/justfile @@ -15,16 +15,16 @@ rust-checks: # Everything the conformance CI job runs: the cross-implementation # conformance targets that share its runner (wasmtime-rustcrypto, -# composed, jco-node, jco-browser, deltic-deno), their aggregates, and -# the deltic host module's own unit gate (same module, fast local +# composed, jco-node, jco-browser, polyengine-deno), their aggregates, and +# the polyengine host module's own unit gate (same module, fast local # check). The jco-firefox and jco-webkit legs run as their own CI jobs, # and the committed-matrix and compat gates run in the # conformance-aggregate job, where every target's results have joined. conformance-checks: - @just gha::_step conformance-ct::deltic-pin-check + @just gha::_step conformance-ct::polyengine-pin-check @just gha::_step conformance-ct::runner-js-pin-check @just gha::_step conformance-ct::all - @just gha::_step deltic-module-check + @just gha::_step polyengine-module-check # Everything the conformance-suites CI job runs: transpile the suite # components into conformance/driver-ct/jco/generated for the engine-leg @@ -126,11 +126,11 @@ timing-lab-scheduled: # the suite component wasms (prebuilt when the pages workflow restores # the CI run's conformance-artifacts cache — CONFORMANCE_PREBUILT — and # rebuilt by the recipe's cargo fallback otherwise) and the -# deltic-browser worker bundle + repo-pinned translator shim the staged +# polyengine-browser worker bundle + repo-pinned translator shim the staged # viewer's live pane loads. pages-live-assets: just conformance-ct::build - just conformance-ct::_deltic-browser-bundle + just conformance-ct::_polyengine-browser-bundle # Assemble the Pages site in target/conformance-site: the browser WPT # parity page, the conformance results viewer + live run, the public @@ -157,7 +157,7 @@ pages-site: cp -r js/componentize/wpt/parity/generated-web \ target/conformance-site/js/componentize/wpt/parity/ # The conformance results viewer: the staged component-test page - # (self-contained: the deltic release assets and the raw + # (self-contained: the polyengine release assets and the raw # viewer-aggregate component ride inside viewer/), the committed # lockfiles/manifests, and — when the pages workflow could fetch the # latest main CI run's conformance-results artifact — the @@ -181,11 +181,11 @@ pages-site: # resolve to locally: the worker bundle + its pin-matched translator # shim, and both suite component wasms. Weight: the suites are # multi-MB but fetched only when a visitor starts a run. - mkdir -p target/conformance-site/target/deltic-browser \ + mkdir -p target/conformance-site/target/polyengine-browser \ target/conformance-site/target/wasm32-wasip2/release - cp target/deltic-browser/webcrypto-worker.mjs \ - target/deltic-browser/deltic-translator-shim.wasm \ - target/conformance-site/target/deltic-browser/ + cp target/polyengine-browser/webcrypto-worker.mjs \ + target/polyengine-browser/polyengine-translator-shim.wasm \ + target/conformance-site/target/polyengine-browser/ cp target/wasm32-wasip2/release/conformance_guest_ct.wasm \ target/wasm32-wasip2/release/conformance_signing_guest_ct.wasm \ target/conformance-site/target/wasm32-wasip2/release/ diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e44df10e..1dbcd6f9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -47,9 +47,9 @@ jobs: # The cross-implementation conformance targets that run in this job # (component-test stack): both suites across wasmtime-rustcrypto, # composed, jco-node, jco-browser (headless Chromium via jco), - # deltic-browser (headless Chromium via deltic), and deltic-deno + # polyengine-browser (headless Chromium via polyengine), and polyengine-deno # (runtime-linked under stock Deno) — plus the aggregates over those - # targets and the deltic host module's unit gate. The jco-firefox and + # targets and the polyengine host module's unit gate. The jco-firefox and # jco-webkit legs run as their own jobs below (Firefox needs a runner # to itself; WebKit needs macOS); the committed-matrix and compat # gates run in conformance-aggregate once every target's results @@ -110,7 +110,7 @@ jobs: # Owns the rev derivation, the rev-keyed tools cache, the # install, and the pins gate; conformance-ct::_ct-tools # recognizes the stamped install and does not repeat it. - uses: polymorph-components/polymorph-test/actions/setup@b4444a25a22106ad4128549bdc9e579552e62210 + uses: polymorph-components/polymorph-test/actions/setup@38bfedf2b989522b82ddce5320fc1557a2f61461 - name: Install Node 24 # Exact-pinned, like every engine here (Deno, the Playwright @@ -127,10 +127,10 @@ jobs: node-version: "24.19.0" - name: Install Deno - # For the deltic-deno conformance target and js/deltic's own unit - # gate: deltic runs the suites RUNTIME-LINKED under stock Deno, - # its runtime graph pinned by the conformance/driver-ct/deltic and - # js/deltic import maps + frozen deno.lock files (no npm tree, no + # For the polyengine-deno conformance target and js/polyengine's own unit + # gate: polyengine runs the suites RUNTIME-LINKED under stock Deno, + # its runtime graph pinned by the conformance/driver-ct/polyengine and + # js/polyengine import maps + frozen deno.lock files (no npm tree, no # transpile). Version-pinned like every other toolchain here. uses: denoland/setup-deno@v2 with: @@ -487,7 +487,7 @@ jobs: save-if: false - name: Install the component-test tools at the pinned revision - uses: polymorph-components/polymorph-test/actions/setup@b4444a25a22106ad4128549bdc9e579552e62210 + uses: polymorph-components/polymorph-test/actions/setup@38bfedf2b989522b82ddce5320fc1557a2f61461 - name: Download the ubuntu conformance results uses: actions/download-artifact@v4 @@ -520,7 +520,7 @@ jobs: # input polices the `uses:` refs against the pin. - name: Publish the conformance matrix if: always() && hashFiles('conformance/driver-ct/results/*.jsonl') != '' - uses: polymorph-components/polymorph-test/actions/aggregate@b4444a25a22106ad4128549bdc9e579552e62210 + uses: polymorph-components/polymorph-test/actions/aggregate@38bfedf2b989522b82ddce5320fc1557a2f61461 with: lock: conformance/guest-ct/tests.lock manifest: conformance/driver-ct/targets.toml @@ -529,17 +529,17 @@ jobs: composed=conformance/driver-ct/results/composed.jsonl jco-node=conformance/driver-ct/results/jco-node.jsonl jco-browser=conformance/driver-ct/results/jco-browser.jsonl - deltic-browser=conformance/driver-ct/results/deltic-browser.jsonl + polyengine-browser=conformance/driver-ct/results/polyengine-browser.jsonl jco-firefox=conformance/driver-ct/results/jco-firefox.jsonl jco-webkit=conformance/driver-ct/results/jco-webkit.jsonl - deltic-deno=conformance/driver-ct/results/deltic-deno.jsonl + polyengine-deno=conformance/driver-ct/results/polyengine-deno.jsonl summary-title: Conformance matrix cli: target/ct-tools/bin/component-test cargo-lock: Cargo.lock - name: Publish the signing conformance matrix if: always() && hashFiles('conformance/driver-ct/results/*.jsonl') != '' - uses: polymorph-components/polymorph-test/actions/aggregate@b4444a25a22106ad4128549bdc9e579552e62210 + uses: polymorph-components/polymorph-test/actions/aggregate@38bfedf2b989522b82ddce5320fc1557a2f61461 with: lock: conformance/signing-guest-ct/tests.lock manifest: conformance/driver-ct/targets-signing.toml @@ -547,10 +547,10 @@ jobs: wasmtime-rustcrypto=conformance/driver-ct/results/wasmtime-signing.jsonl jco-node=conformance/driver-ct/results/jco-node-signing.jsonl jco-browser=conformance/driver-ct/results/jco-browser-signing.jsonl - deltic-browser=conformance/driver-ct/results/deltic-browser-signing.jsonl + polyengine-browser=conformance/driver-ct/results/polyengine-browser-signing.jsonl jco-firefox=conformance/driver-ct/results/jco-firefox-signing.jsonl jco-webkit=conformance/driver-ct/results/jco-webkit-signing.jsonl - deltic-deno=conformance/driver-ct/results/deltic-deno-signing.jsonl + polyengine-deno=conformance/driver-ct/results/polyengine-deno-signing.jsonl summary-title: Signing conformance matrix cli: target/ct-tools/bin/component-test cargo-lock: Cargo.lock diff --git a/.github/workflows/jsr-publish.yml b/.github/workflows/jsr-publish.yml index eab23139..ece89dfe 100644 --- a/.github/workflows/jsr-publish.yml +++ b/.github/workflows/jsr-publish.yml @@ -1,4 +1,4 @@ -# Publish @polymorph/webcrypto (js/deltic) to JSR. +# Publish @polymorph/webcrypto (js/polyengine) to JSR. # # Auth is GitHub Actions OIDC: the package's GitHub-repository link on # jsr.io authorizes runs from this repository — no tokens. Dispatch @@ -20,4 +20,4 @@ jobs: with: deno-version: "2.9.5" - run: deno publish - working-directory: js/deltic + working-directory: js/polyengine diff --git a/.github/workflows/pages.yml b/.github/workflows/pages.yml index 4f9c3a32..881c3282 100644 --- a/.github/workflows/pages.yml +++ b/.github/workflows/pages.yml @@ -64,9 +64,9 @@ jobs: node-version: "24.19.0" - name: Install Deno - # For the viewer staging's deltic release assets - # (conformance-ct::_viewer-prepared runs the checkout's - # fetch-deltic.ts). Version-pinned as in ci.yml. + # For the viewer staging's polyengine release assets + # (conformance-ct::_viewer-prepared runs `just polyengine-assets` + # inside the polymorph-test checkout). Version-pinned as in ci.yml. uses: denoland/setup-deno@v2 with: deno-version: "2.9.5" @@ -95,7 +95,7 @@ jobs: - name: Build the live pane's assets # The suite wasms (prebuilt on a cache hit) and the - # deltic-browser worker bundle + translator shim the staged + # polyengine-browser worker bundle + translator shim the staged # viewer's live pane loads. run: just gha::pages-live-assets env: @@ -106,8 +106,8 @@ jobs: - name: Build the conformance viewer artifacts # component-test's results viewer staged at the pin: the page - # files, the raw viewer-aggregate component (deltic translates - # it in-page — no transpile), and the pinned deltic release + # files, the raw viewer-aggregate component (polyengine translates + # it in-page — no transpile), and the pinned polyengine release # assets. run: just conformance-ct::_viewer-prepared diff --git a/AGENTS.md b/AGENTS.md index 280f7036..8872fbaf 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -6,7 +6,7 @@ Guidance for automated agents (and humans) working in this repository. `polymorph:webcrypto`: a WIT interface plus multiple implementations that run the *same* guest component against real cryptography: a Wasmtime host (RustCrypto) -and two JS hosts over the platform Web Crypto API — deltic (runtime-linked; +and two JS hosts over the platform Web Crypto API — polyengine (runtime-linked; the primary JS path) and jco (transpile-based). It is a sibling of `polymorph:webrtc-datachannels` and deliberately mirrors its architecture — prefer clarity and correctness over features, and keep the implementations @@ -66,12 +66,12 @@ rust/ # the Rust library surface (directory = crate name # export policy js/ # the JS library surface (directory = npm name minus # the `@polymorph/webcrypto-` family root) - deltic/ # deltic host MODULE (src/mod.ts): the same - # reference host over deltic's embedder API, + polyengine/ # polyengine host MODULE (src/mod.ts): the same + # reference host over polyengine's embedder API, # runtime-linked — no transpile step; the - # canonical module deltic-family consumers pin + # canonical module polyengine-family consumers pin # by URL (deno.lock frozen, release-pinned - # import maps). Gate: `just deltic-module-check` + # import maps). Gate: `just polyengine-module-check` jco/ # @polymorph/webcrypto-jco: jco host LIBRARY. # webcrypto.js implements the imports over the # browser-compatible Web Crypto API ONLY; no @@ -133,12 +133,12 @@ conformance/ # cross-implementation conformance tests, on the signing-guest-ct/ # the host-only suite for surfaces the in-guest # provider does not export (ecdsa-sign) driver-ct/ # the wasmtime host driver (ct-driver), the - # deltic children (deltic/) serving the - # deltic-deno and deltic-browser targets, the + # polyengine children (polyengine/) serving the + # polyengine-deno and polyengine-browser targets, the # jco runner (jco/) serving jco-node plus the # browser-engine targets jco-browser # (Chromium), jco-firefox, and jco-webkit - # (macOS CI only; jco-browser/deltic-browser + # (macOS CI only; jco-browser/polyengine-browser # gate in CI and are locally opt-in via # CONFORMANCE_BROWSER=1, jco-firefox via # CONFORMANCE_FIREFOX=1), targets.toml + @@ -431,7 +431,7 @@ and the cross-target conformance-aggregate job.) | `just componentize::typecheck` | the `webcrypto-componentize` library, or `wit/extension-conditions.json`. Asserts its exported surface against the Web Cryptography API definitions TypeScript ships, and its extension-condition table against the wit/ registry; no component build, nothing generated. | | `just componentize::test` | the `webcrypto-componentize` library, the componentize-demo guest, the in-guest provider, or any WIT. Gates in CI. Componentizes the JS demo guest from your tree (with the downloaded, digest-verified componentize-js — see the WPT row for the pin mechanics), composes it with the in-guest provider and driver, and runs it under `wasmtime`. The behavioral gate on the shim's checks the WPT census cannot observe (the SHA-1 collision postures, the extension-error transport). | | `just wpt::test` | the `webcrypto-componentize` library, its `wpt/` harness or vendored files, the in-guest provider, or any WIT. Gates in CI. The runner is componentized from your tree in seconds; the componentize-js build it needs is downloaded and digest-verified (`js/componentize/wpt/component.sh`), never compiled here. Changing `js/componentize/componentize-js.rev` triggers the `componentize-js-toolchain` workflow; this check then fails until that publishes *and* `just componentize::update-toolchain-digest` records the new digests. Intentional changes to the test census also need `just wpt::update-expectations`. | -| `just conformance-ct::all` | any host/guest behavior the tests assert — the WIT surface, an implementation, the conformance suites/vectors/translation policy, or driver-ct/targets.toml. Runs the wasmtime-rustcrypto, composed, jco-node, and deltic-deno targets always (Node 24+, Deno), the jco-browser and deltic-browser legs under CI or CONFORMANCE_BROWSER=1, and the jco-firefox leg under CONFORMANCE_FIREFOX=1 (in CI it is the dedicated conformance-firefox job — Firefox needs a runner to itself), aggregating against the committed lockfiles and target manifests and building the compat matrix (results/compat.json); the jco-webkit leg runs only as the macOS CI job, and CI's conformance-aggregate job re-aggregates all eight targets, diffs the committed matrices (`matrix-check`), and gates the compat registry (`compat-check --require-all`). Intentional case changes also need `just conformance-ct::lock-update` and `just conformance-ct::matrix-update` — the latter from a full run, which only CI can produce (the WebKit leg needs macOS), so in practice `just gha::update-matrices-from-ci` (copies the matrices from the branch's CI `conformance-results` artifact). | +| `just conformance-ct::all` | any host/guest behavior the tests assert — the WIT surface, an implementation, the conformance suites/vectors/translation policy, or driver-ct/targets.toml. Runs the wasmtime-rustcrypto, composed, jco-node, and polyengine-deno targets always (Node 24+, Deno), the jco-browser and polyengine-browser legs under CI or CONFORMANCE_BROWSER=1, and the jco-firefox leg under CONFORMANCE_FIREFOX=1 (in CI it is the dedicated conformance-firefox job — Firefox needs a runner to itself), aggregating against the committed lockfiles and target manifests and building the compat matrix (results/compat.json); the jco-webkit leg runs only as the macOS CI job, and CI's conformance-aggregate job re-aggregates all eight targets, diffs the committed matrices (`matrix-check`), and gates the compat registry (`compat-check --require-all`). Intentional case changes also need `just conformance-ct::lock-update` and `just conformance-ct::matrix-update` — the latter from a full run, which only CI can produce (the WebKit leg needs macOS), so in practice `just gha::update-matrices-from-ci` (copies the matrices from the branch's CI `conformance-results` artifact). | | `just demo::transpile` | anything affecting the component's interfaces, or the transpile flags in `examples/jco-demo/package.json`. | | `just jco::test-host` | the jco host's input-buffering admission subsystem (`configure`, the admission queue). Runs `webcrypto.js` directly under `node --test`; the conformance suite cannot reach this code, since its workers each run their cases sequentially against their own host instance. | | `just jco::typecheck` | the jco host (`webcrypto.js`), its world, or any WIT. Regenerates the interface definitions and type-checks the host against them; no component build. | diff --git a/Cargo.lock b/Cargo.lock index a233412a..cc5a3c35 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -335,8 +335,8 @@ dependencies = [ [[package]] name = "component-test-core" -version = "0.1.0" -source = "git+https://github.com/polymorph-components/polymorph-test?rev=b4444a25a22106ad4128549bdc9e579552e62210#b4444a25a22106ad4128549bdc9e579552e62210" +version = "0.1.1" +source = "git+https://github.com/polymorph-components/polymorph-test?rev=38bfedf2b989522b82ddce5320fc1557a2f61461#38bfedf2b989522b82ddce5320fc1557a2f61461" dependencies = [ "arcstr", "serde", @@ -344,8 +344,8 @@ dependencies = [ [[package]] name = "component-test-formats" -version = "0.1.0" -source = "git+https://github.com/polymorph-components/polymorph-test?rev=b4444a25a22106ad4128549bdc9e579552e62210#b4444a25a22106ad4128549bdc9e579552e62210" +version = "0.1.1" +source = "git+https://github.com/polymorph-components/polymorph-test?rev=38bfedf2b989522b82ddce5320fc1557a2f61461#38bfedf2b989522b82ddce5320fc1557a2f61461" dependencies = [ "anyhow", "component-test-core", @@ -359,8 +359,8 @@ dependencies = [ [[package]] name = "component-test-results" -version = "0.1.0" -source = "git+https://github.com/polymorph-components/polymorph-test?rev=b4444a25a22106ad4128549bdc9e579552e62210#b4444a25a22106ad4128549bdc9e579552e62210" +version = "0.1.1" +source = "git+https://github.com/polymorph-components/polymorph-test?rev=38bfedf2b989522b82ddce5320fc1557a2f61461#38bfedf2b989522b82ddce5320fc1557a2f61461" dependencies = [ "anyhow", "component-test-core", @@ -370,8 +370,8 @@ dependencies = [ [[package]] name = "component-test-runner" -version = "0.1.0" -source = "git+https://github.com/polymorph-components/polymorph-test?rev=b4444a25a22106ad4128549bdc9e579552e62210#b4444a25a22106ad4128549bdc9e579552e62210" +version = "0.1.1" +source = "git+https://github.com/polymorph-components/polymorph-test?rev=38bfedf2b989522b82ddce5320fc1557a2f61461#38bfedf2b989522b82ddce5320fc1557a2f61461" dependencies = [ "anyhow", "component-test-core", @@ -386,8 +386,8 @@ dependencies = [ [[package]] name = "component-test-sdk" -version = "0.1.0" -source = "git+https://github.com/polymorph-components/polymorph-test?rev=b4444a25a22106ad4128549bdc9e579552e62210#b4444a25a22106ad4128549bdc9e579552e62210" +version = "0.1.1" +source = "git+https://github.com/polymorph-components/polymorph-test?rev=38bfedf2b989522b82ddce5320fc1557a2f61461#38bfedf2b989522b82ddce5320fc1557a2f61461" dependencies = [ "component-test-core", "component-test-sdk-macro", @@ -398,8 +398,8 @@ dependencies = [ [[package]] name = "component-test-sdk-macro" -version = "0.1.0" -source = "git+https://github.com/polymorph-components/polymorph-test?rev=b4444a25a22106ad4128549bdc9e579552e62210#b4444a25a22106ad4128549bdc9e579552e62210" +version = "0.1.1" +source = "git+https://github.com/polymorph-components/polymorph-test?rev=38bfedf2b989522b82ddce5320fc1557a2f61461#38bfedf2b989522b82ddce5320fc1557a2f61461" dependencies = [ "component-test-core", "proc-macro2", @@ -2461,7 +2461,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd" dependencies = [ "fastrand", - "getrandom 0.4.3", + "getrandom 0.3.4", "once_cell", "rustix", "windows-sys 0.61.2", diff --git a/Cargo.toml b/Cargo.toml index 726a6184..ae9b11bf 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -22,14 +22,14 @@ resolver = "2" # release-tag commit, `cargo update -p component-test-sdk -p # component-test-runner`, then set the matching release version on every # `@jsr/polymorph__test` dependency (conformance/driver-ct/{jco, -# deltic}, examples/jco-demo, js/jco, js/componentize/wpt/parity) and +# polyengine}, examples/jco-demo, js/jco, js/componentize/wpt/parity) and # `npm install` in each — the cargo pins gate, the runner-js pin gate, # and the CI ref guard fail on skew; the CI tools cache and the # ct/ct-runner binaries key off the locked rev. To develop against a # local checkout, add a `[patch]` override — see AGENTS.md "Build & run". [workspace.dependencies] -component-test-sdk = { git = "https://github.com/polymorph-components/polymorph-test", rev = "b4444a25a22106ad4128549bdc9e579552e62210" } -component-test-runner = { git = "https://github.com/polymorph-components/polymorph-test", rev = "b4444a25a22106ad4128549bdc9e579552e62210" } +component-test-sdk = { git = "https://github.com/polymorph-components/polymorph-test", rev = "38bfedf2b989522b82ddce5320fc1557a2f61461" } +component-test-runner = { git = "https://github.com/polymorph-components/polymorph-test", rev = "38bfedf2b989522b82ddce5320fc1557a2f61461" } # The mutation run's profile (`just mutants`): dependencies optimized — # wasmtime and the RustCrypto cores are compiled once, at baseline, and make diff --git a/README.md b/README.md index 1c67049f..0760fba0 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ A WebCrypto-flavored WIT package plus multiple implementations that run the *same* guest component: a Wasmtime host backed by RustCrypto, two JS hosts -backed by the platform's Web Crypto API — [deltic](https://github.com/lann/deltic) +backed by the platform's Web Crypto API — [polyengine](https://github.com/polymorph-components/polyengine) (runtime-linked on stock Deno and in the browser; the primary JS path) and jco (transpile-based) — and an in-guest wasm component (RustCrypto compiled to wasm, composable via `wac plug`). A sibling of @@ -15,7 +15,7 @@ Everything here is **unstable** (0.x), but [releases](../../releases) are **caret-honest**: within a minor line they stay backward-compatible, and anything breaking bumps the minor. Consumption is pinned at a release's commit — cargo git dependencies, vendored WIT, the release-pinned -deltic/JSR graph — and bumped deliberately. +polyengine/JSR graph — and bumped deliberately. ## Design @@ -111,12 +111,12 @@ rust/ # the Rust crates (dir = crate name minus the # timing-channel classification & export policy js/ # the JS packages (dir = npm name minus the # `@polymorph/webcrypto-` family root) - deltic/ # deltic host MODULE: src/mod.ts, the same - # reference host rewritten over deltic's + polyengine/ # polyengine host MODULE: src/mod.ts, the same + # reference host rewritten over polyengine's # embedder API and runtime-linked (no # transpile step, no engine flag); the - # canonical module deltic-family consumers - # pin by URL. Gate: `just deltic-module-check` + # canonical module polyengine-family consumers + # pin by URL. Gate: `just polyengine-module-check` jco/ # jco host library: webcrypto.js, # browser-compatible Web Crypto API only # (crypto.subtle / getRandomValues); no @@ -159,7 +159,7 @@ crate's bindings instead. ## Build & run Prerequisites: Rust (via rustup; the toolchain and wasm target are pinned in -`rust-toolchain.toml`), `wasm-tools`, Deno 2.x (the deltic host — the +`rust-toolchain.toml`), `wasm-tools`, Deno 2.x (the polyengine host — the primary JS path; stock, no flags), and — for the jco host — Node 24+ (jco's async ABI uses JSPI). `./scripts/setup.sh` installs the rest. The [polymorph-components/polymorph-test](https://github.com/polymorph-components/polymorph-test) test stack is @@ -169,10 +169,10 @@ an ordinary git dependency pinned by rev in the root `Cargo.toml` ```sh just test # Rust tests, incl. the guest-under-Wasmtime integration test just demo::wasmtime # run the guest under the Wasmtime (RustCrypto) host -just conformance-ct::run-deltic # the conformance suites under the deltic host +just conformance-ct::run-polyengine # the conformance suites under the polyengine host # (runtime-linked on stock Deno — the primary - # JS path; `run-deltic-browser` for Chromium) -just deltic-module-check # js/deltic's own gate (type-check + KAT units) + # JS path; `run-polyengine-browser` for Chromium) +just polyengine-module-check # js/polyengine's own gate (type-check + KAT units) just demo::test-node # transpile and run the same guest under the jco host just demo::test-composed # compose guest + in-guest provider + driver (wac plug) # and run the whole thing under `wasmtime run` @@ -214,7 +214,7 @@ All implementations run identical suite components. The conformance tests (the vendored Wycheproof/CAVP/speccheck vectors — see [`conformance/vectors/README.md`](conformance/vectors/README.md) — under multiple stream-chunking schedules, plus API-contract probes) gate the -wasmtime-rustcrypto, deltic-deno, and jco-node targets everywhere (the +wasmtime-rustcrypto, polyengine-deno, and jco-node targets everywhere (the browser targets gate in CI); the `crypto-demo` guest additionally covers the jco host end to end. diff --git a/conformance/README.md b/conformance/README.md index 330111ca..7a47beea 100644 --- a/conformance/README.md +++ b/conformance/README.md @@ -40,8 +40,8 @@ class-d/ # the class-D gate's dedicated probe worlds (no Rust: # generic-kind exports keep those mints uncomposable driver-ct/ # the host driver (ct-driver: wasmtime + RustCrypto as # the SUT, component-test-runner as the harness), the - # jco/Node runner (jco/), the deltic/Deno runner - # (deltic/), targets.toml (target capability + # jco/Node runner (jco/), the polyengine/Deno runner + # (polyengine/), targets.toml (target capability # manifests), the justfile module, the committed # matrix.md / matrix-signing.md, and compat/ (the # generated support matrix: registry + page + @@ -134,18 +134,18 @@ the lockfiles, runs the targets, and aggregates: Runs as the dedicated macOS CI job (the transpiles are built on ubuntu and handed over); results reach local checkouts via the CI artifact flow. -- **deltic-deno** (`run-deltic`): the same reference host rewritten over - deltic's embedder API, runtime-linked under stock Deno — no transpile; +- **polyengine-deno** (`run-polyengine`): the same reference host rewritten over + polyengine's embedder API, runtime-linked under stock Deno — no transpile; missing `sha1-checked` and `rsa-verify-8192`, with an expected-fail ledger for the Deno platform windows (#351). -- **deltic-browser** (`run-deltic-browser`): the deltic host module +- **polyengine-browser** (`run-polyengine-browser`): the polyengine host module runtime-linked in headless Chromium (the worker is one deno-bundled module — no transpile, no generated tree); the same platform posture as jco-browser. Optional like jco-browser: gates in CI, locally `CONFORMANCE_BROWSER=1`. - The **signing suite** runs under the host-backed targets (wasmtime-rustcrypto, jco-node, the browser-engine targets, and - deltic-deno) only: its world imports + polyengine-deno) only: its world imports `ecdsa-sign` structurally, which class D keeps out of the in-guest provider (see `rust/guest-provider/README.md`). The negative-composition gate (`just conformance-ct::class-d`, part of @@ -187,9 +187,9 @@ main CI run's results. repository's data wiring (`driver-ct/jco/stage-viewer.mjs`) — over the repository root: the matrix pane aggregates the last run's `driver-ct/results/` with the gate's own aggregation code (the raw -viewer-aggregate component, translated in-page by deltic), and the live +viewer-aggregate component, translated in-page by polyengine), and the live pane runs the suites runtime-linked in the browser — it needs the -deltic-browser worker bundle from `just conformance-ct::run-deltic-browser` +polyengine-browser worker bundle from `just conformance-ct::run-polyengine-browser` and a suite build. The Pages site publishes the same viewer (results pane only — #362) with the latest main CI run's results staged from the `conformance-results` artifact, alongside the compat page. diff --git a/conformance/driver-ct/compat/registry.toml b/conformance/driver-ct/compat/registry.toml index 9f6c9045..62367636 100644 --- a/conformance/driver-ct/compat/registry.toml +++ b/conformance/driver-ct/compat/registry.toml @@ -9,13 +9,13 @@ version = "0.1" # ── Columns ────────────────────────────────────────────────────────── # The platform-backed hosts first, engine-major, then the two Rust # implementations of this repository. Chromium is one column serving -# both host stacks: deltic (the primary JS path) carries the results, +# both host stacks: polyengine (the primary JS path) carries the results, # and the jco arm folds in under the builder's cell-equality gate — a # divergence between the stacks on the same platform fails the build, # splitting the columns again. [[columns]] -target = "deltic-browser" +target = "polyengine-browser" label = "Chromium" kind = "host" merges = "jco-browser" @@ -36,7 +36,7 @@ label = "Node.js" kind = "host" [[columns]] -target = "deltic-deno" +target = "polyengine-deno" label = "Deno" kind = "host" diff --git a/conformance/driver-ct/deltic/deno.json b/conformance/driver-ct/deltic/deno.json deleted file mode 100644 index ea9813c4..00000000 --- a/conformance/driver-ct/deltic/deno.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "//": "MODULE-IDENTITY CONSTRAINT: deltic's wasi module imports @deltic/runtime/embedder by bare specifier internally. The @deltic/runtime/embedder entry here must map to the IDENTICAL exact-pinned JSR version as ../../../js/deltic/deno.json's entry, or the embedder module loads twice and `instanceof ComponentException` stops holding across the module boundary. deltic ships as exact-pinned JSR releases (caret-honest upstream: within a minor line releases stay compatible, breaking bumps the minor; between releases, per-commit `-pre.g` prereleases exist — pin exactly); deno.lock carries integrity, --frozen enforced; the pin gate (just conformance-ct::deltic-pin-check) asserts one @deltic version repo-wide.", - "imports": { - "@deltic/ct-runner": "jsr:@deltic/ct-runner@0.2.0", - "@deltic/runtime/embedder": "jsr:@deltic/runtime@0.2.0/embedder", - "@deltic/runtime/shim": "jsr:@deltic/runtime@0.2.0/shim", - "@deltic/wasi": "jsr:@deltic/wasi@0.2.0", - "@deltic/translator": "jsr:@deltic/translator@0.2.0", - "@polymorph/test/deltic-worker-main": "jsr:@polymorph/test@0.1.1/deltic-worker-main" - }, - "minimumDependencyAge": { "age": "P1D", "exclude": ["jsr:@deltic/*", "jsr:@polymorph/*"] }, - "tasks": { - "check": "deno check run.ts browser/worker-entry.ts browser-bundle-entry.ts" - } -} \ No newline at end of file diff --git a/conformance/driver-ct/deltic/deno.lock b/conformance/driver-ct/deltic/deno.lock deleted file mode 100644 index ee9a35b9..00000000 --- a/conformance/driver-ct/deltic/deno.lock +++ /dev/null @@ -1,72 +0,0 @@ -{ - "version": "5", - "specifiers": { - "jsr:@deltic/ct-runner@0.2.0": "0.2.0", - "jsr:@deltic/protocol@0.2": "0.2.0", - "jsr:@deltic/runtime@0.2": "0.2.0", - "jsr:@deltic/runtime@0.2.0": "0.2.0", - "jsr:@deltic/translator@0.2.0": "0.2.0", - "jsr:@deltic/wasi@0.2.0": "0.2.0", - "jsr:@polymorph/test@0.1.1": "0.1.1", - "npm:@jsr/polymorph__test@0.1.1": "0.1.1", - "npm:playwright-core@1.62.1": "1.62.1" - }, - "jsr": { - "@deltic/ct-runner@0.2.0": { - "integrity": "810eec021dc07dbc7efe00e0e7df900f557c5b30bd11f077195eeb44bcce81b4", - "dependencies": [ - "jsr:@deltic/runtime@0.2" - ] - }, - "@deltic/protocol@0.2.0": { - "integrity": "028be6a3623c5e910598aa7a199209b85e8931ae484ac7f6638d610ddb0e19fa" - }, - "@deltic/runtime@0.2.0": { - "integrity": "cf8b0bdd9e6bc4488ba78cc91661103bfcbd78f5a5c4ff99132799618a9db4bb", - "dependencies": [ - "jsr:@deltic/protocol" - ] - }, - "@deltic/translator@0.2.0": { - "integrity": "8104b54e2acdccfd75f5ddc941d72b581e7defbbe31c05bbc66598d2df7a34f9", - "dependencies": [ - "jsr:@deltic/runtime@0.2" - ] - }, - "@deltic/wasi@0.2.0": { - "integrity": "82c76d4fda0a1c9238a91f8ebc7fdbac952a03aa06d4a2a820213df2654f5c24", - "dependencies": [ - "jsr:@deltic/protocol", - "jsr:@deltic/runtime@0.2" - ] - }, - "@polymorph/test@0.1.1": { - "integrity": "50ce81310c97591c523bbfdbe74e18a806e709ae1c09f47297da98267b5be8b3" - } - }, - "npm": { - "@jsr/polymorph__test@0.1.1": { - "integrity": "sha512-bu0jE52btthChm83f04rQo+twOLszJ/JN7nLGl/5W/66cZb8tQrlZG+Lnd4/XierTlBgy0PpW75bjbqQBY2nDg==", - "tarball": "https://npm.jsr.io/~/11/@jsr/polymorph__test/0.1.1.tgz" - }, - "playwright-core@1.62.1": { - "integrity": "sha512-wPYSwEBJY9GHraISXqyqtx0na0LpO3XEX7jNDhntbex7tzUS7kLnZsOlFruFJB4Hi/rhDMjXGqHewDZ68nYZVw==", - "bin": true - } - }, - "workspace": { - "dependencies": [ - "jsr:@deltic/ct-runner@0.2.0", - "jsr:@deltic/runtime@0.2.0", - "jsr:@deltic/translator@0.2.0", - "jsr:@deltic/wasi@0.2.0", - "jsr:@polymorph/test@0.1.1" - ], - "packageJson": { - "dependencies": [ - "npm:@jsr/polymorph__test@0.1.1", - "npm:playwright-core@1.62.1" - ] - } - } -} diff --git a/conformance/driver-ct/deltic/package.json b/conformance/driver-ct/deltic/package.json deleted file mode 100644 index 829e8691..00000000 --- a/conformance/driver-ct/deltic/package.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "name": "@polymorph/webcrypto-conformance-deltic-browser", - "private": true, - "type": "module", - "description": "Node driver + bundled worker inputs for the deltic-browser conformance rows: both suites runtime-linked inside headless Chromium with this repo's deltic host module, through the upstream page driver and deltic worker-main.", - "dependencies": { - "@jsr/polymorph__test": "0.1.1", - "playwright-core": "1.62.1" - } -} diff --git a/conformance/driver-ct/jco/package-lock.json b/conformance/driver-ct/jco/package-lock.json index 132a90e5..52b2bbbd 100644 --- a/conformance/driver-ct/jco/package-lock.json +++ b/conformance/driver-ct/jco/package-lock.json @@ -8,7 +8,7 @@ "dependencies": { "@bytecodealliance/jco-transpile": "0.7.0", "@bytecodealliance/preview2-shim": "0.17.9", - "@jsr/polymorph__test": "0.1.1", + "@jsr/polymorph__test": "0.2.0", "playwright-core": "1.62.1" } }, @@ -25,9 +25,9 @@ } }, "node_modules/@bytecodealliance/jco-transpile/node_modules/@bytecodealliance/preview2-shim": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/@bytecodealliance/preview2-shim/-/preview2-shim-0.20.1.tgz", - "integrity": "sha512-gvQP6DWfeQIYKHBb+nPykku1DRtfXQjM685+e75YYr8ZF2ZxisE4+nWrpwf84+NaWJRfuL5HvoLKQFbup1iwkQ==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@bytecodealliance/preview2-shim/-/preview2-shim-0.20.2.tgz", + "integrity": "sha512-Bp1cer1jztaQamLv1YKdc4MimI9LNAAKM2lNxOtGTLs7/At5KlA0fW1HWTi3ZJ5McaWNwJUDWSe5Lr0EgUpsnA==", "license": "(Apache-2.0 WITH LLVM-exception)" }, "node_modules/@bytecodealliance/preview2-shim": { @@ -83,14 +83,14 @@ } }, "node_modules/@jsr/polymorph__test": { - "version": "0.1.1", - "resolved": "https://npm.jsr.io/~/11/@jsr/polymorph__test/0.1.1.tgz", - "integrity": "sha512-bu0jE52btthChm83f04rQo+twOLszJ/JN7nLGl/5W/66cZb8tQrlZG+Lnd4/XierTlBgy0PpW75bjbqQBY2nDg==" + "version": "0.2.0", + "resolved": "https://npm.jsr.io/~/11/@jsr/polymorph__test/0.2.0.tgz", + "integrity": "sha512-fM1IYIy4HnBJm2IlZn/3Gk0d9AmQZz9Kg6JkY0E+fPAhFb2hrAW+4G7TCRQsJ4PStl0rzuBqF9VI6w30f7xCMA==" }, "node_modules/@napi-rs/wasm-runtime": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.2.2.tgz", - "integrity": "sha512-JfB4kuJQjaoHuCTseIINHtHWeJnvgEcxjwA5t/Y00ZgaOO1Crz3fjT/p8kT28zA/Caz7oiUMn3d6H2yOVCVwuw==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.2.3.tgz", + "integrity": "sha512-UMduMbqO5s5zF2NkNacMT/yK5Y5QiKvWr2+50bzIIxFDwVJ2h49b+oyjaCGPhJxd2/gC2x39EHv/gHVuu36x2Q==", "license": "MIT", "optional": true, "dependencies": { @@ -104,8 +104,8 @@ "url": "https://github.com/sponsors/Brooooooklyn" }, "peerDependencies": { - "@emnapi/core": "^1.7.1 || ^2.0.0-alpha.3", - "@emnapi/runtime": "^1.7.1 || ^2.0.0-alpha.3" + "@emnapi/core": "^1.7.1 || ^2.0.0-alpha.4", + "@emnapi/runtime": "^1.7.1 || ^2.0.0-alpha.4" } }, "node_modules/@oxc-minify/binding-android-arm-eabi": { diff --git a/conformance/driver-ct/jco/package.json b/conformance/driver-ct/jco/package.json index 816b5ec2..113127fc 100644 --- a/conformance/driver-ct/jco/package.json +++ b/conformance/driver-ct/jco/package.json @@ -12,7 +12,7 @@ "dependencies": { "@bytecodealliance/jco-transpile": "0.7.0", "@bytecodealliance/preview2-shim": "0.17.9", - "@jsr/polymorph__test": "0.1.1", + "@jsr/polymorph__test": "0.2.0", "playwright-core": "1.62.1" } } \ No newline at end of file diff --git a/conformance/driver-ct/jco/reuse-worker.mjs b/conformance/driver-ct/jco/reuse-worker.mjs index 6d5b7b8e..700cab3f 100644 --- a/conformance/driver-ct/jco/reuse-worker.mjs +++ b/conformance/driver-ct/jco/reuse-worker.mjs @@ -3,8 +3,8 @@ // callback — so one component instance serves a worker's whole shard // instead of ~19.9k instantiations per suite serving one case each. // -// REUSE RATIONALE (the deltic-deno leg's, measured there at ~22x — -// see ../deltic/run.ts "CONTAINMENT MODE" for the full argument): a +// REUSE RATIONALE (the polyengine-deno leg's, measured there at ~22x — +// see ../polyengine/run.ts "CONTAINMENT MODE" for the full argument): a // fresh instance per case is ~free under wasmtime but dominates wall // time under a browser engine — Gecko most of all, where the fresh // convention priced the jco-firefox leg near an hour. Reuse is sound diff --git a/conformance/driver-ct/jco/run-browser.mjs b/conformance/driver-ct/jco/run-browser.mjs index 574982d0..0542727c 100644 --- a/conformance/driver-ct/jco/run-browser.mjs +++ b/conformance/driver-ct/jco/run-browser.mjs @@ -8,7 +8,7 @@ // This file is the frame: engine selection, core-URL enumeration, // per-suite configuration, results writing. The shard worker is the // local reuse-worker.mjs — one component instance per shard, the -// deltic legs' measured-and-argued containment trade (its header) — +// polyengine legs' measured-and-argued containment trade (its header) — // unless --fresh-cases restores the upstream per-case worker. // // Engine → target key: chromium → jco-browser, firefox → jco-firefox, @@ -27,8 +27,8 @@ // than record facts for the wrong platform. The leg runs as the // dedicated macOS CI job (`just conformance-ct::run-webkit`). // -// EXIT STATUS. Case failures do NOT fail this driver (the deltic -// pattern — see ../deltic/run.ts): engine targets carry declared +// EXIT STATUS. Case failures do NOT fail this driver (the polyengine +// pattern — see ../polyengine/run.ts): engine targets carry declared // expected-fail debt (targets.toml / targets-signing.toml), and the // aggregate is what assesses each failure as declared-or-not, failing // the gate on any undeclared failure or stale declaration. Runner-level diff --git a/conformance/driver-ct/jco/stage-viewer.mjs b/conformance/driver-ct/jco/stage-viewer.mjs index 9ed9fcb4..00700858 100644 --- a/conformance/driver-ct/jco/stage-viewer.mjs +++ b/conformance/driver-ct/jco/stage-viewer.mjs @@ -2,8 +2,8 @@ // pinned checkout, argv[2]) into ./viewer/, wired to this repository's // data: the demo button loads the committed lockfiles/manifests plus // the last run's results-JSONL, and the live pane defaults to this -// repository's suites — runtime-linked through the deltic-browser -// worker bundle (built by `just conformance-ct::_deltic-browser-bundle`). +// repository's suites — runtime-linked through the polyengine-browser +// worker bundle (built by `just conformance-ct::_polyengine-browser-bundle`). // Every injected path is RELATIVE to the viewer page: the page is // served from two roots that both mirror the repository layout — the // repo root locally (`just conformance-ct::web`) and the project @@ -14,9 +14,9 @@ // review the bump owes. // // Invoked by `conformance-ct::_viewer-prepared`, which also stages the -// viewer's wasm engine (the raw viewer-aggregate component — deltic -// translates it in-page; no transpile) and the pinned deltic release -// assets into viewer/generated/ and viewer/deltic/; ./viewer/ is +// viewer's wasm engine (the raw viewer-aggregate component — polyengine +// translates it in-page; no transpile) and the pinned polyengine release +// assets into viewer/generated/ and viewer/polyengine/; ./viewer/ is // gitignored, stamped with the rev. import { copyFileSync, mkdirSync, readFileSync, writeFileSync } from "node:fs"; import { join } from "node:path"; @@ -42,8 +42,8 @@ function rewrite(text, anchor, replacement, what) { } // Pass-through files: the page's import closure — app.mjs pulls -// harness.mjs and deltic.mjs, and harness.mjs pulls context.js. -for (const file of ["viewer.css", "harness.mjs", "deltic.mjs", "context.js"]) { +// harness.mjs and polyengine.mjs, and harness.mjs pulls context.js. +for (const file of ["viewer.css", "harness.mjs", "polyengine.mjs", "context.js"]) { copyFileSync(join(from, file), join("viewer", file)); } @@ -84,7 +84,7 @@ html = rewrite( html = rewrite( html, ``, - ``, + ``, "the live target default", ); writeFileSync("viewer/index.html", html); @@ -130,8 +130,8 @@ const handler = `$("btn-demo").onclick = async () => { ["jco-browser", RESULTS + "jco-browser.jsonl"], ["jco-firefox", RESULTS + "jco-firefox.jsonl"], ["jco-webkit", RESULTS + "jco-webkit.jsonl"], - ["deltic-deno", RESULTS + "deltic-deno.jsonl"], - ["deltic-browser", RESULTS + "deltic-browser.jsonl"], + ["polyengine-deno", RESULTS + "polyengine-deno.jsonl"], + ["polyengine-browser", RESULTS + "polyengine-browser.jsonl"], ], }, signing: { @@ -143,8 +143,8 @@ const handler = `$("btn-demo").onclick = async () => { ["jco-browser", RESULTS + "jco-browser-signing.jsonl"], ["jco-firefox", RESULTS + "jco-firefox-signing.jsonl"], ["jco-webkit", RESULTS + "jco-webkit-signing.jsonl"], - ["deltic-deno", RESULTS + "deltic-deno-signing.jsonl"], - ["deltic-browser", RESULTS + "deltic-browser-signing.jsonl"], + ["polyengine-deno", RESULTS + "polyengine-deno-signing.jsonl"], + ["polyengine-browser", RESULTS + "polyengine-browser-signing.jsonl"], ], }, }; @@ -176,17 +176,17 @@ app = app.slice(0, start) + handler + app.slice(end + "\n};".length); // app.mjs: the live pane's shard worker must serve this package's // imports — the suites are runtime-linked and import polymorph:webcrypto, // which upstream's stock (no-SUT) worker cannot satisfy — so it is the -// deltic-browser worker bundle (deltic engine + this repo's host module), -// built by `just conformance-ct::_deltic-browser-bundle` and served from -// target/deltic-browser/ (page-relative: the repo root is four levels up +// polyengine-browser worker bundle (polyengine engine + this repo's host module), +// built by `just conformance-ct::_polyengine-browser-bundle` and served from +// target/polyengine-browser/ (page-relative: the repo root is four levels up // from viewer/). The translator must match the bundled engine's pin — -// this repository's deltic pin, not the viewer checkout's — so the +// this repository's polyengine pin, not the viewer checkout's — so the // worker message's translatorUrl is rewritten to the shim extracted -// beside the bundle instead of the viewer's own deltic assets. +// beside the bundle instead of the viewer's own polyengine assets. app = rewrite( app, - `new URL("../runner-deltic/browser-worker.mjs", import.meta.url),`, - `new URL("../../../../target/deltic-browser/webcrypto-worker.mjs", import.meta.url),`, + `new URL("../runner-polyengine/browser-worker.mjs", import.meta.url),`, + `new URL("../../../../target/polyengine-browser/webcrypto-worker.mjs", import.meta.url),`, "the live pane's worker URL", ); app = rewrite( @@ -196,7 +196,7 @@ app = rewrite( suiteUrl,`, ` bundleUrl, translatorUrl: new URL( - "../../../../target/deltic-browser/deltic-translator-shim.wasm", + "../../../../target/polyengine-browser/polyengine-translator-shim.wasm", import.meta.url, ).href, suiteUrl,`, diff --git a/conformance/driver-ct/justfile b/conformance/driver-ct/justfile index 3d683342..62271786 100644 --- a/conformance/driver-ct/justfile +++ b/conformance/driver-ct/justfile @@ -28,33 +28,33 @@ conformance-browser-enabled := if env('GITHUB_ACTIONS', '') == 'true' { '1' } el conformance-firefox-enabled := if env('CONFORMANCE_FIREFOX', '') == '1' { '1' } else { '' } # The one-VERSION-everywhere pin gate, replacing the old -# assertPinConsistency script: every resolved `@deltic/*` package (except -# @deltic/protocol, which is versioned independently) across BOTH -# deno.lock files (this directory's and js/deltic's) must resolve to the -# exact same version — js/deltic's published manifest carries a caret +# assertPinConsistency script: every resolved `@polyengine/*` package (except +# @polyengine/protocol, which is versioned independently) across BOTH +# deno.lock files (this directory's and js/polyengine's) must resolve to the +# exact same version — js/polyengine's published manifest carries a caret # range, so the specifier string no longer pins identity; the resolved # lockfile version is what module identity actually needs. Wired into the # conformance CI job (.github/justfile's conformance-checks) as the # fail-loud point. -deltic-pin-check: +polyengine-pin-check: #!/usr/bin/env bash set -euo pipefail v=$(jq -r '.jsr | keys[]' \ - {{root}}/js/deltic/deno.lock deltic/deno.lock \ - | grep '^@deltic/' | grep -v '^@deltic/protocol@' \ + {{root}}/js/polyengine/deno.lock polyengine/deno.lock \ + | grep '^@polyengine/' | grep -v '^@polyengine/protocol@' \ | sed 's/.*@//' | sort -u) if [ "$(printf '%s\n' "$v" | wc -l)" != 1 ]; then - echo "deltic pin drift: $v" >&2 + echo "polyengine pin drift: $v" >&2 exit 1 fi - echo "deltic pin OK: $v" + echo "polyengine pin OK: $v" # The JS runner core's one-version gate: every npm tree consuming # @jsr/polymorph__test (jsr:@polymorph/test through JSR's npm-compat # registry, per each tree's .npmrc) must resolve the same # version — a skewed bump runs the JS harness against a Rust runner # from a different polymorph-test release, a subtle contract-mismatch -# generator. Wired next to deltic-pin-check in the conformance CI job. +# generator. Wired next to polyengine-pin-check in the conformance CI job. runner-js-pin-check: #!/usr/bin/env bash set -euo pipefail @@ -63,7 +63,7 @@ runner-js-pin-check: ../../examples/jco-demo/package-lock.json \ ../../js/jco/package-lock.json \ ../../js/componentize/wpt/parity/package-lock.json; \ - jq -r '.jsr | keys[]' deltic/deno.lock \ + jq -r '.jsr | keys[]' polyengine/deno.lock \ | grep '^@polymorph/test@' | sed 's/.*@//'; } | sort -u) if [ "$v" = "null" ] || [ "$(printf '%s\n' "$v" | wc -l)" != 1 ]; then echo "runner-js pin drift: $v" >&2 @@ -159,12 +159,16 @@ _ct-leaves: build # Stage component-test's results viewer for this repository: the page # files from a checkout at the Cargo.lock-pinned rev (the npm facade # deliberately packs only the harness core), the viewer's wasm engine — -# the RAW viewer-aggregate component, which deltic translates in-page; -# no transpile step — plus the deltic release assets at the checkout's -# own pin (its fetch-deltic.ts owns tag + sha256; needs deno), and the -# data wiring applied by jco/stage-viewer.mjs (anchored transforms that -# fail loudly when a pin bump changes the page's shape). Output: -# jco/viewer/ (gitignored), stamped with the rev. +# the RAW viewer-aggregate component, which polyengine translates in-page; +# no transpile step — plus the polyengine release assets, REPO-BUILT at +# the checkout's own pin via its own `just polyengine-assets` recipe +# (bundled from js/runner-polyengine's pinned JSR graph — no GitHub +# release fetch: the checkout's own fetch-based asset script was retired +# upstream when polyengine started shipping on JSR, see +# polymorph-components/polymorph-test@f76a73b; needs deno), and the data +# wiring applied by jco/stage-viewer.mjs (anchored transforms that fail +# loudly when a pin bump changes the page's shape). Output: jco/viewer/ +# (gitignored), stamped with the rev. _viewer-prepared: #!/usr/bin/env bash set -euo pipefail @@ -185,16 +189,13 @@ _viewer-prepared: fi cargo build -q --manifest-path "$src/Cargo.toml" \ --target wasm32-wasip2 --release -p viewer-aggregate - fetch() { (cd "$src" && deno run \ - --allow-read=js/runner-deltic,target --allow-write=target \ - --allow-net=github.com,objects.githubusercontent.com,release-assets.githubusercontent.com \ - js/runner-deltic/fetch-deltic.ts --asset "$1"); } - translator=$(fetch translator) - bundle=$(fetch embedder) + (cd "$src" && just polyengine-assets) + translator="$src/target/polyengine-browser/polyengine-translator-shim.wasm" + bundle="$src/target/polyengine-browser/polyengine-embedder.mjs" cd jco node stage-viewer.mjs "$src" - mkdir -p viewer/deltic viewer/generated - cp "$translator" "$bundle" viewer/deltic/ + mkdir -p viewer/polyengine viewer/generated + cp "$translator" "$bundle" viewer/polyengine/ cp "$src/target/wasm32-wasip2/release/viewer_aggregate.wasm" \ viewer/generated/viewer-aggregate.wasm printf '%s' "$rev" > viewer/.rev @@ -278,36 +279,36 @@ run-jco: build _jco-prepared node -e 'process.stdout.write(JSON.stringify({target:"jco-node",engine:"node",version:"Node.js "+process.versions.node})+"\n")' \ > results/jco-node.meta.json -# The deltic-deno target (the same reference host as jco-node, rewritten -# over deltic's embedder API — js/deltic/src/mod.ts — and RUNTIME-LINKED +# The polyengine-deno target (the same reference host as jco-node, rewritten +# over polyengine's embedder API — js/polyengine/src/mod.ts — and RUNTIME-LINKED # under stock Deno), both suites. Unlike the jco legs there is no # transpile step and no npm tree: the exact-pinned JSR import maps (both -# deno.json files) own the pin, cross-checked by `deltic-pin-check`, and -# the packaged `@deltic/translator` is resolved through the module graph +# deno.json files) own the pin, cross-checked by `polyengine-pin-check`, and +# the packaged `@polyengine/translator` is resolved through the module graph # (no fetch, no net grant) by run.ts's default translator. --frozen on # every lock-bearing invocation; permissions scoped throughout. # -# Case failures do not fail this recipe — deltic-deno carries declared +# Case failures do not fail this recipe — polyengine-deno carries declared # expected-fail debt (targets.toml / targets-signing.toml, #351) and the # aggregate is what assesses it. run.ts still exits nonzero on any # runner-level error. # # The suites run as two CONCURRENT processes: each process's case loop -# is single-threaded (ct-runner has no shard option yet — lann/deltic#110 +# is single-threaded (ct-runner has no shard option yet — polymorph-components/polyengine#110 # tracks one; #372 tracks the worker fan-out here), so suite-level # concurrency is the available parallelism, hiding the signing leg's # wall time under the shared leg's. -run-deltic: build +run-polyengine: build #!/usr/bin/env bash set -euo pipefail mkdir -p results run_suite() { deno run \ - --config {{root}}/conformance/driver-ct/deltic/deno.json --frozen \ + --config {{root}}/conformance/driver-ct/polyengine/deno.json --frozen \ --allow-read={{root}} \ --allow-write={{root}}/conformance/driver-ct/results \ - {{root}}/conformance/driver-ct/deltic/run.ts \ - --target deltic-deno --suite "$1" + {{root}}/conformance/driver-ct/polyengine/run.ts \ + --target polyengine-deno --suite "$1" } run_suite shared & shared=$! run_suite signing & signing=$! @@ -315,8 +316,8 @@ run-deltic: build wait "$shared" || status=$? wait "$signing" || status=$? if [ "$status" -ne 0 ]; then exit "$status"; fi - deno eval 'console.log(JSON.stringify({target:"deltic-deno",engine:"deno",version:"Deno "+Deno.version.deno}))' \ - > results/deltic-deno.meta.json + deno eval 'console.log(JSON.stringify({target:"polyengine-deno",engine:"deno",version:"Deno "+Deno.version.deno}))' \ + > results/polyengine-deno.meta.json # Build the in-guest RustCrypto provider (composed target SUT; also the # class-D gate's plug). Prebuilt-skip as for `build`. @@ -425,64 +426,64 @@ _run-browser-if-enabled: echo "skipping the jco-browser conformance target (opt in with CONFORMANCE_BROWSER=1; needs Chrome/Chromium 137+)" fi -# The deltic browser driver's npm tree (the upstream page driver + +# The polyengine browser driver's npm tree (the upstream page driver + # worker message loop + playwright-core; no transpiler). -_deltic-browser-prepared: +_polyengine-browser-prepared: #!/usr/bin/env bash set -euo pipefail - cd deltic + cd polyengine if [ package-lock.json -nt node_modules/.package-lock.json ]; then npm ci --no-audit --no-fund fi -# The deltic-browser shard worker bundle + the repo-pinned translator -# shim, into target/deltic-browser/. The worker is one deno-bundled -# module (deltic engine + this repo's deltic host module + upstream -# message loop; deltic/browser/worker-entry.ts, which imports the engine -# surface through deltic/browser-bundle-entry.ts rather than a raw-URL +# The polyengine-browser shard worker bundle + the repo-pinned translator +# shim, into target/polyengine-browser/. The worker is one deno-bundled +# module (polyengine engine + this repo's polyengine host module + upstream +# message loop; polyengine/browser/worker-entry.ts, which imports the engine +# surface through polyengine/browser-bundle-entry.ts rather than a raw-URL # release bundle), so no transpile step and no generated tree. The # translator wasm is extracted from the deno.lock-pinned JSR module # cache (no fetch, no sha bookkeeping — see extract-translator-wasm.py) # at the same pin as the bundled engine, which is why the pair must -# travel together. Consumed by run-deltic-browser (the conformance +# travel together. Consumed by run-polyengine-browser (the conformance # leg) and by the pages build (the staged viewer's live pane serves # both files). -_deltic-browser-bundle: _deltic-browser-prepared +_polyengine-browser-bundle: _polyengine-browser-prepared #!/usr/bin/env bash set -euo pipefail - mkdir -p {{root}}/target/deltic-browser - (cd deltic && deno bundle --config deno.json --frozen --platform browser \ - -o ../{{root}}/target/deltic-browser/webcrypto-worker.mjs browser/worker-entry.ts) - deno info --json --config deltic/deno.json --frozen @deltic/translator \ - > {{root}}/target/deltic-browser/.translator-info.json - pin=$(grep -o 'jsr:@deltic/runtime@[^/"]*' deltic/deno.json | head -1 | sed 's/.*@//') - python3 deltic/extract-translator-wasm.py \ - {{root}}/target/deltic-browser/.translator-info.json \ - {{root}}/target/deltic-browser/deltic-translator-shim.wasm \ + mkdir -p {{root}}/target/polyengine-browser + (cd polyengine && deno bundle --config deno.json --frozen --platform browser \ + -o ../{{root}}/target/polyengine-browser/webcrypto-worker.mjs browser/worker-entry.ts) + deno info --json --config polyengine/deno.json --frozen @polyengine/translator \ + > {{root}}/target/polyengine-browser/.translator-info.json + pin=$(grep -o 'jsr:@polyengine/runtime@[^/"]*' polyengine/deno.json | head -1 | sed 's/.*@//') + python3 polyengine/extract-translator-wasm.py \ + {{root}}/target/polyengine-browser/.translator-info.json \ + {{root}}/target/polyengine-browser/polyengine-translator-shim.wasm \ "$pin" -# The deltic-browser target: both suites runtime-linked inside headless -# Chromium (browser WebCrypto) against this repo's deltic host module -# (js/deltic), through the worker bundle _deltic-browser-bundle builds. +# The polyengine-browser target: both suites runtime-linked inside headless +# Chromium (browser WebCrypto) against this repo's polyengine host module +# (js/polyengine), through the worker bundle _polyengine-browser-bundle builds. # The --missing declarations mirror the jco-browser entries: the # platform is the same Chromium. -run-deltic-browser: build _deltic-browser-bundle +run-polyengine-browser: build _polyengine-browser-bundle mkdir -p results - cd deltic && node run-browser.mjs \ + cd polyengine && node run-browser.mjs \ --missing sha1-checked \ --missing-signing rsa-sign,rsa-oaep-decrypt -# run-deltic-browser when enabled (CI, or CONFORMANCE_BROWSER=1); a skip -# note otherwise — targets.toml marks deltic-browser optional, so the +# run-polyengine-browser when enabled (CI, or CONFORMANCE_BROWSER=1); a skip +# note otherwise — targets.toml marks polyengine-browser optional, so the # aggregates warn on its missing results rather than failing. -_run-deltic-browser-if-enabled: +_run-polyengine-browser-if-enabled: #!/usr/bin/env bash set -euo pipefail if [ -n "{{conformance-browser-enabled}}" ]; then - just run-deltic-browser + just run-polyengine-browser else - rm -f results/deltic-browser.jsonl results/deltic-browser-signing.jsonl - echo "skipping the deltic-browser conformance target (opt in with CONFORMANCE_BROWSER=1; needs Chrome/Chromium 137+)" + rm -f results/polyengine-browser.jsonl results/polyengine-browser-signing.jsonl + echo "skipping the polyengine-browser conformance target (opt in with CONFORMANCE_BROWSER=1; needs Chrome/Chromium 137+)" fi # run-firefox when enabled (CONFORMANCE_FIREFOX=1); mirrors @@ -508,7 +509,7 @@ aggregate: _ct-tools #!/usr/bin/env bash set -euo pipefail optional=() - for t in jco-browser deltic-browser jco-firefox jco-webkit; do + for t in jco-browser polyengine-browser jco-firefox jco-webkit; do [ -f "results/$t.jsonl" ] && optional+=(--results "$t=results/$t.jsonl") done {{ct}} aggregate \ @@ -517,17 +518,17 @@ aggregate: _ct-tools --results wasmtime-rustcrypto=results/wasmtime-rustcrypto.jsonl \ --results composed=results/composed.jsonl \ --results jco-node=results/jco-node.jsonl \ - --results deltic-deno=results/deltic-deno.jsonl \ + --results polyengine-deno=results/polyengine-deno.jsonl \ ${optional[@]+"${optional[@]}"} \ -o results/matrix.md # The signing suite (host-only: wasmtime, jco-node, the browser-engine -# targets, and deltic-deno). +# targets, and polyengine-deno). aggregate-signing: _ct-tools #!/usr/bin/env bash set -euo pipefail optional=() - for t in jco-browser deltic-browser jco-firefox jco-webkit; do + for t in jco-browser polyengine-browser jco-firefox jco-webkit; do [ -f "results/$t-signing.jsonl" ] && optional+=(--results "$t=results/$t-signing.jsonl") done {{ct}} aggregate \ @@ -535,7 +536,7 @@ aggregate-signing: _ct-tools --manifest targets-signing.toml \ --results wasmtime-rustcrypto=results/wasmtime-signing.jsonl \ --results jco-node=results/jco-node-signing.jsonl \ - --results deltic-deno=results/deltic-deno-signing.jsonl \ + --results polyengine-deno=results/polyengine-deno-signing.jsonl \ ${optional[@]+"${optional[@]}"} \ -o results/matrix-signing.md @@ -584,7 +585,7 @@ all: build build-provider _ct-tools _jco-prepared conformance-ct::run-wasmtime conformance-ct::run-composed \ conformance-ct::run-jco conformance-ct::_run-browser-if-enabled \ conformance-ct::_run-firefox-if-enabled \ - conformance-ct::run-deltic conformance-ct::_run-deltic-browser-if-enabled + conformance-ct::run-polyengine conformance-ct::_run-polyengine-browser-if-enabled just aggregate aggregate-signing compat-data # The class-D negative-composition gate (ported from the incumbent diff --git a/conformance/driver-ct/matrix-signing.md b/conformance/driver-ct/matrix-signing.md index 3ffea9e7..57122bf7 100644 --- a/conformance/driver-ct/matrix-signing.md +++ b/conformance/driver-ct/matrix-signing.md @@ -1,6 +1,6 @@ # Test matrix -| Case | deltic-browser | deltic-deno | jco-browser | jco-firefox | jco-node | jco-webkit | wasmtime-rustcrypto | +| Case | polyengine-browser | polyengine-deno | jco-browser | jco-firefox | jco-node | jco-webkit | wasmtime-rustcrypto | | --- | --- | --- | --- | --- | --- | --- | --- | | probe (16 cases) | 7 N/A, 9 pass | pass | 7 N/A, 9 pass | 7 N/A, 9 pass | pass | 7 N/A, 9 pass | pass | | rsa-oaep-decrypt/decline/minting | pass | N/A | pass | pass | N/A | pass | N/A | @@ -36,95 +36,95 @@ None. ## Expected failures -- `deltic-deno` `rsa-oaep-sha256-2048/wycheproof/tc33-jwk`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `rsa-oaep-sha256-2048/wycheproof/tc33-pkcs8`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `rsa-oaep-sha256-2048/wycheproof/tc34-jwk`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `rsa-oaep-sha256-2048/wycheproof/tc34-pkcs8`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `rsa-oaep-sha256-2048/wycheproof/tc35-jwk`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `rsa-oaep-sha256-2048/wycheproof/tc35-pkcs8`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `rsa-oaep-sha256-2048/wycheproof/tc36-jwk`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `rsa-oaep-sha256-2048/wycheproof/tc36-pkcs8`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `rsa-oaep-sha256-2048/wycheproof/tc37-jwk`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `rsa-oaep-sha256-2048/wycheproof/tc37-pkcs8`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `rsa-oaep-sha256-2688/wycheproof-misc/tc377-jwk`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue) (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `rsa-oaep-sha256-2688/wycheproof-misc/tc377-pkcs8`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue) (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `rsa-oaep-sha256-2688/wycheproof-misc/tc378-jwk`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue) (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `rsa-oaep-sha256-2688/wycheproof-misc/tc378-pkcs8`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue) (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `rsa-oaep-sha256-2688/wycheproof-misc/tc379-jwk`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue) (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `rsa-oaep-sha256-2688/wycheproof-misc/tc379-pkcs8`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue) (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `rsa-oaep-sha256-2688/wycheproof-misc/tc380-jwk`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue) (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `rsa-oaep-sha256-2688/wycheproof-misc/tc380-pkcs8`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue) (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `rsa-oaep-sha256-2688/wycheproof-misc/tc381-jwk`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue) (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `rsa-oaep-sha256-2688/wycheproof-misc/tc381-pkcs8`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue) (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `rsa-oaep-sha256-2688/wycheproof-misc/tc382-jwk`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue) (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `rsa-oaep-sha256-2688/wycheproof-misc/tc382-pkcs8`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue) (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `rsa-oaep-sha256-2688/wycheproof-misc/tc383-jwk`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue) (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `rsa-oaep-sha256-2688/wycheproof-misc/tc383-pkcs8`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue) (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `rsa-oaep-sha256-2688/wycheproof-misc/tc384-jwk`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue) (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `rsa-oaep-sha256-2688/wycheproof-misc/tc384-pkcs8`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue) (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `rsa-oaep-sha256-3072/wycheproof/tc33-jwk`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `rsa-oaep-sha256-3072/wycheproof/tc33-pkcs8`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `rsa-oaep-sha256-3072/wycheproof/tc34-jwk`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `rsa-oaep-sha256-3072/wycheproof/tc34-pkcs8`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `rsa-oaep-sha256-3072/wycheproof/tc35-jwk`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `rsa-oaep-sha256-3072/wycheproof/tc35-pkcs8`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `rsa-oaep-sha256-3072/wycheproof/tc36-jwk`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `rsa-oaep-sha256-3072/wycheproof/tc36-pkcs8`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `rsa-oaep-sha256-3072/wycheproof/tc37-jwk`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `rsa-oaep-sha256-3072/wycheproof/tc37-pkcs8`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `rsa-oaep-sha256-4032/wycheproof-misc/tc386-jwk`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue) (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `rsa-oaep-sha256-4032/wycheproof-misc/tc386-pkcs8`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue) (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `rsa-oaep-sha256-4032/wycheproof-misc/tc387-jwk`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue) (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `rsa-oaep-sha256-4032/wycheproof-misc/tc387-pkcs8`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue) (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `rsa-oaep-sha256-4032/wycheproof-misc/tc388-jwk`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue) (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `rsa-oaep-sha256-4032/wycheproof-misc/tc388-pkcs8`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue) (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `rsa-oaep-sha256-4032/wycheproof-misc/tc389-jwk`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue) (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `rsa-oaep-sha256-4032/wycheproof-misc/tc389-pkcs8`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue) (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `rsa-oaep-sha256-4032/wycheproof-misc/tc390-jwk`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue) (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `rsa-oaep-sha256-4032/wycheproof-misc/tc390-pkcs8`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue) (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `rsa-oaep-sha256-4032/wycheproof-misc/tc391-jwk`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue) (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `rsa-oaep-sha256-4032/wycheproof-misc/tc391-pkcs8`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue) (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `rsa-oaep-sha256-4096/wycheproof/tc33-jwk`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `rsa-oaep-sha256-4096/wycheproof/tc33-pkcs8`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `rsa-oaep-sha256-4096/wycheproof/tc34-jwk`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `rsa-oaep-sha256-4096/wycheproof/tc34-pkcs8`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `rsa-oaep-sha256-4096/wycheproof/tc35-jwk`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `rsa-oaep-sha256-4096/wycheproof/tc35-pkcs8`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `rsa-oaep-sha256-4096/wycheproof/tc36-jwk`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `rsa-oaep-sha256-4096/wycheproof/tc36-pkcs8`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `rsa-oaep-sha256-4096/wycheproof/tc37-jwk`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `rsa-oaep-sha256-4096/wycheproof/tc37-pkcs8`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `rsa-oaep-sha384-2048/wycheproof/tc32-jwk`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `rsa-oaep-sha384-2048/wycheproof/tc32-pkcs8`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `rsa-oaep-sha384-2048/wycheproof/tc33-jwk`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `rsa-oaep-sha384-2048/wycheproof/tc33-pkcs8`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `rsa-oaep-sha384-2048/wycheproof/tc34-jwk`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `rsa-oaep-sha384-2048/wycheproof/tc34-pkcs8`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `rsa-oaep-sha384-3104/wycheproof-misc/tc393-jwk`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue) (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `rsa-oaep-sha384-3104/wycheproof-misc/tc393-pkcs8`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue) (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `rsa-oaep-sha384-3104/wycheproof-misc/tc394-jwk`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue) (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `rsa-oaep-sha384-3104/wycheproof-misc/tc394-pkcs8`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue) (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `rsa-oaep-sha384-3104/wycheproof-misc/tc395-jwk`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue) (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `rsa-oaep-sha384-3104/wycheproof-misc/tc395-pkcs8`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue) (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `rsa-oaep-sha512-2048/wycheproof/tc33-jwk`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `rsa-oaep-sha512-2048/wycheproof/tc33-pkcs8`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `rsa-oaep-sha512-3072/wycheproof/tc32-jwk`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `rsa-oaep-sha512-3072/wycheproof/tc32-pkcs8`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `rsa-oaep-sha512-3072/wycheproof/tc33-jwk`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `rsa-oaep-sha512-3072/wycheproof/tc33-pkcs8`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `rsa-oaep-sha512-4096/wycheproof/tc33-jwk`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `rsa-oaep-sha512-4096/wycheproof/tc33-pkcs8`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `rsa-oaep-sha512-4096/wycheproof/tc34-jwk`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `rsa-oaep-sha512-4096/wycheproof/tc34-pkcs8`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `rsa-oaep-sha512-4096/wycheproof/tc35-jwk`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `rsa-oaep-sha512-4096/wycheproof/tc35-pkcs8`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `rsa-oaep-sha512-4096/wycheproof/tc36-jwk`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `rsa-oaep-sha512-4096/wycheproof/tc36-pkcs8`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `rsa-oaep-sha256-2048/wycheproof/tc33-jwk`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `rsa-oaep-sha256-2048/wycheproof/tc33-pkcs8`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `rsa-oaep-sha256-2048/wycheproof/tc34-jwk`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `rsa-oaep-sha256-2048/wycheproof/tc34-pkcs8`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `rsa-oaep-sha256-2048/wycheproof/tc35-jwk`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `rsa-oaep-sha256-2048/wycheproof/tc35-pkcs8`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `rsa-oaep-sha256-2048/wycheproof/tc36-jwk`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `rsa-oaep-sha256-2048/wycheproof/tc36-pkcs8`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `rsa-oaep-sha256-2048/wycheproof/tc37-jwk`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `rsa-oaep-sha256-2048/wycheproof/tc37-pkcs8`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `rsa-oaep-sha256-2688/wycheproof-misc/tc377-jwk`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue) (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `rsa-oaep-sha256-2688/wycheproof-misc/tc377-pkcs8`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue) (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `rsa-oaep-sha256-2688/wycheproof-misc/tc378-jwk`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue) (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `rsa-oaep-sha256-2688/wycheproof-misc/tc378-pkcs8`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue) (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `rsa-oaep-sha256-2688/wycheproof-misc/tc379-jwk`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue) (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `rsa-oaep-sha256-2688/wycheproof-misc/tc379-pkcs8`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue) (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `rsa-oaep-sha256-2688/wycheproof-misc/tc380-jwk`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue) (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `rsa-oaep-sha256-2688/wycheproof-misc/tc380-pkcs8`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue) (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `rsa-oaep-sha256-2688/wycheproof-misc/tc381-jwk`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue) (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `rsa-oaep-sha256-2688/wycheproof-misc/tc381-pkcs8`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue) (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `rsa-oaep-sha256-2688/wycheproof-misc/tc382-jwk`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue) (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `rsa-oaep-sha256-2688/wycheproof-misc/tc382-pkcs8`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue) (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `rsa-oaep-sha256-2688/wycheproof-misc/tc383-jwk`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue) (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `rsa-oaep-sha256-2688/wycheproof-misc/tc383-pkcs8`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue) (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `rsa-oaep-sha256-2688/wycheproof-misc/tc384-jwk`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue) (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `rsa-oaep-sha256-2688/wycheproof-misc/tc384-pkcs8`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue) (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `rsa-oaep-sha256-3072/wycheproof/tc33-jwk`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `rsa-oaep-sha256-3072/wycheproof/tc33-pkcs8`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `rsa-oaep-sha256-3072/wycheproof/tc34-jwk`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `rsa-oaep-sha256-3072/wycheproof/tc34-pkcs8`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `rsa-oaep-sha256-3072/wycheproof/tc35-jwk`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `rsa-oaep-sha256-3072/wycheproof/tc35-pkcs8`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `rsa-oaep-sha256-3072/wycheproof/tc36-jwk`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `rsa-oaep-sha256-3072/wycheproof/tc36-pkcs8`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `rsa-oaep-sha256-3072/wycheproof/tc37-jwk`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `rsa-oaep-sha256-3072/wycheproof/tc37-pkcs8`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `rsa-oaep-sha256-4032/wycheproof-misc/tc386-jwk`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue) (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `rsa-oaep-sha256-4032/wycheproof-misc/tc386-pkcs8`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue) (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `rsa-oaep-sha256-4032/wycheproof-misc/tc387-jwk`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue) (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `rsa-oaep-sha256-4032/wycheproof-misc/tc387-pkcs8`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue) (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `rsa-oaep-sha256-4032/wycheproof-misc/tc388-jwk`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue) (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `rsa-oaep-sha256-4032/wycheproof-misc/tc388-pkcs8`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue) (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `rsa-oaep-sha256-4032/wycheproof-misc/tc389-jwk`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue) (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `rsa-oaep-sha256-4032/wycheproof-misc/tc389-pkcs8`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue) (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `rsa-oaep-sha256-4032/wycheproof-misc/tc390-jwk`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue) (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `rsa-oaep-sha256-4032/wycheproof-misc/tc390-pkcs8`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue) (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `rsa-oaep-sha256-4032/wycheproof-misc/tc391-jwk`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue) (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `rsa-oaep-sha256-4032/wycheproof-misc/tc391-pkcs8`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue) (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `rsa-oaep-sha256-4096/wycheproof/tc33-jwk`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `rsa-oaep-sha256-4096/wycheproof/tc33-pkcs8`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `rsa-oaep-sha256-4096/wycheproof/tc34-jwk`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `rsa-oaep-sha256-4096/wycheproof/tc34-pkcs8`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `rsa-oaep-sha256-4096/wycheproof/tc35-jwk`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `rsa-oaep-sha256-4096/wycheproof/tc35-pkcs8`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `rsa-oaep-sha256-4096/wycheproof/tc36-jwk`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `rsa-oaep-sha256-4096/wycheproof/tc36-pkcs8`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `rsa-oaep-sha256-4096/wycheproof/tc37-jwk`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `rsa-oaep-sha256-4096/wycheproof/tc37-pkcs8`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `rsa-oaep-sha384-2048/wycheproof/tc32-jwk`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `rsa-oaep-sha384-2048/wycheproof/tc32-pkcs8`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `rsa-oaep-sha384-2048/wycheproof/tc33-jwk`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `rsa-oaep-sha384-2048/wycheproof/tc33-pkcs8`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `rsa-oaep-sha384-2048/wycheproof/tc34-jwk`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `rsa-oaep-sha384-2048/wycheproof/tc34-pkcs8`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `rsa-oaep-sha384-3104/wycheproof-misc/tc393-jwk`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue) (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `rsa-oaep-sha384-3104/wycheproof-misc/tc393-pkcs8`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue) (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `rsa-oaep-sha384-3104/wycheproof-misc/tc394-jwk`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue) (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `rsa-oaep-sha384-3104/wycheproof-misc/tc394-pkcs8`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue) (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `rsa-oaep-sha384-3104/wycheproof-misc/tc395-jwk`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue) (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `rsa-oaep-sha384-3104/wycheproof-misc/tc395-pkcs8`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue) (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `rsa-oaep-sha512-2048/wycheproof/tc33-jwk`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `rsa-oaep-sha512-2048/wycheproof/tc33-pkcs8`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `rsa-oaep-sha512-3072/wycheproof/tc32-jwk`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `rsa-oaep-sha512-3072/wycheproof/tc32-pkcs8`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `rsa-oaep-sha512-3072/wycheproof/tc33-jwk`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `rsa-oaep-sha512-3072/wycheproof/tc33-pkcs8`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `rsa-oaep-sha512-4096/wycheproof/tc33-jwk`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `rsa-oaep-sha512-4096/wycheproof/tc33-pkcs8`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `rsa-oaep-sha512-4096/wycheproof/tc34-jwk`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `rsa-oaep-sha512-4096/wycheproof/tc34-pkcs8`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `rsa-oaep-sha512-4096/wycheproof/tc35-jwk`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `rsa-oaep-sha512-4096/wycheproof/tc35-pkcs8`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `rsa-oaep-sha512-4096/wycheproof/tc36-jwk`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `rsa-oaep-sha512-4096/wycheproof/tc36-pkcs8`: Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) ## Summary -- `deltic-browser`: 761 N/A, 11 pass (772 total) -- `deltic-deno`: 2 N/A, 686 pass, 84 xfail (772 total) +- `polyengine-browser`: 761 N/A, 11 pass (772 total) +- `polyengine-deno`: 2 N/A, 686 pass, 84 xfail (772 total) - `jco-browser`: 761 N/A, 11 pass (772 total) - `jco-firefox`: 761 N/A, 11 pass (772 total) - `jco-node`: 2 N/A, 770 pass (772 total) diff --git a/conformance/driver-ct/matrix.md b/conformance/driver-ct/matrix.md index 520bdccb..22171f13 100644 --- a/conformance/driver-ct/matrix.md +++ b/conformance/driver-ct/matrix.md @@ -1,6 +1,6 @@ # Test matrix -| Case | composed | deltic-browser | deltic-deno | jco-browser | jco-firefox | jco-node | jco-webkit | wasmtime-rustcrypto | +| Case | composed | polyengine-browser | polyengine-deno | jco-browser | jco-firefox | jco-node | jco-webkit | wasmtime-rustcrypto | | --- | --- | --- | --- | --- | --- | --- | --- | --- | | aes-cbc (254 cases) | pass | pass | pass | pass | pass | pass | 252 pass, 2 xfail | pass | | aes-ctr (10 cases) | pass | pass | pass | pass | pass | pass | pass | pass | @@ -59,39 +59,39 @@ None. ## Expected failures -- `deltic-deno` `aes-gcm/wycheproof/tc259/bytes`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 120 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `aes-gcm/wycheproof/tc259/straddle`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 120 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `aes-gcm/wycheproof/tc259/whole`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 120 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `aes-gcm/wycheproof/tc260/bytes`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 160 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `aes-gcm/wycheproof/tc260/straddle`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 160 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `aes-gcm/wycheproof/tc260/whole`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 160 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `aes-gcm/wycheproof/tc263/bytes`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 120 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `aes-gcm/wycheproof/tc263/straddle`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 120 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `aes-gcm/wycheproof/tc263/whole`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 120 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `aes-gcm/wycheproof/tc264/bytes`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 160 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `aes-gcm/wycheproof/tc264/straddle`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 160 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `aes-gcm/wycheproof/tc264/whole`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 160 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `aes-gcm/wycheproof/tc265/bytes`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 256 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `aes-gcm/wycheproof/tc265/straddle`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 256 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `aes-gcm/wycheproof/tc265/whole`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 256 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `aes-gcm/wycheproof/tc266/bytes`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 512 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `aes-gcm/wycheproof/tc266/straddle`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 512 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `aes-gcm/wycheproof/tc266/whole`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 512 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `aes-gcm/wycheproof/tc267/bytes`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 1024 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `aes-gcm/wycheproof/tc267/straddle`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 1024 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `aes-gcm/wycheproof/tc267/whole`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 1024 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `aes-gcm/wycheproof/tc273/bytes`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 256 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `aes-gcm/wycheproof/tc273/straddle`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 256 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `aes-gcm/wycheproof/tc273/whole`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 256 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `aes-gcm/wycheproof/tc274/bytes`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 512 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `aes-gcm/wycheproof/tc274/straddle`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 512 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `aes-gcm/wycheproof/tc274/whole`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 512 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `aes-gcm/wycheproof/tc275/bytes`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 1024 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `aes-gcm/wycheproof/tc275/straddle`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 1024 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `aes-gcm/wycheproof/tc275/whole`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 1024 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `probe/ctr-known-answers`: Deno WebCrypto: AES-CTR counter width limited to 32/64/128 bits (WIT window 1-128) (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `probe/gcm-full-parameters`: Deno WebCrypto: AES-GCM decrypt refuses tags shorter than 128 bits (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `deltic-deno` `probe/gcm-nonce-window`: Deno WebCrypto: AES-GCM IV window is 96/128 bits (WIT window 12-128 bytes) (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `aes-gcm/wycheproof/tc259/bytes`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 120 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `aes-gcm/wycheproof/tc259/straddle`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 120 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `aes-gcm/wycheproof/tc259/whole`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 120 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `aes-gcm/wycheproof/tc260/bytes`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 160 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `aes-gcm/wycheproof/tc260/straddle`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 160 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `aes-gcm/wycheproof/tc260/whole`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 160 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `aes-gcm/wycheproof/tc263/bytes`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 120 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `aes-gcm/wycheproof/tc263/straddle`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 120 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `aes-gcm/wycheproof/tc263/whole`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 120 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `aes-gcm/wycheproof/tc264/bytes`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 160 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `aes-gcm/wycheproof/tc264/straddle`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 160 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `aes-gcm/wycheproof/tc264/whole`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 160 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `aes-gcm/wycheproof/tc265/bytes`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 256 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `aes-gcm/wycheproof/tc265/straddle`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 256 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `aes-gcm/wycheproof/tc265/whole`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 256 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `aes-gcm/wycheproof/tc266/bytes`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 512 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `aes-gcm/wycheproof/tc266/straddle`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 512 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `aes-gcm/wycheproof/tc266/whole`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 512 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `aes-gcm/wycheproof/tc267/bytes`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 1024 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `aes-gcm/wycheproof/tc267/straddle`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 1024 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `aes-gcm/wycheproof/tc267/whole`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 1024 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `aes-gcm/wycheproof/tc273/bytes`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 256 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `aes-gcm/wycheproof/tc273/straddle`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 256 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `aes-gcm/wycheproof/tc273/whole`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 256 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `aes-gcm/wycheproof/tc274/bytes`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 512 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `aes-gcm/wycheproof/tc274/straddle`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 512 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `aes-gcm/wycheproof/tc274/whole`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 512 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `aes-gcm/wycheproof/tc275/bytes`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 1024 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `aes-gcm/wycheproof/tc275/straddle`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 1024 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `aes-gcm/wycheproof/tc275/whole`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 1024 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `probe/ctr-known-answers`: Deno WebCrypto: AES-CTR counter width limited to 32/64/128 bits (WIT window 1-128) (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `probe/gcm-full-parameters`: Deno WebCrypto: AES-GCM decrypt refuses tags shorter than 128 bits (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `probe/gcm-nonce-window`: Deno WebCrypto: AES-GCM IV window is 96/128 bits (WIT window 12-128 bytes) (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) - `jco-firefox` `probe/ctr-known-answers`: Firefox NSS: AES-CTR refuses very narrow counter windows (the probe's 2-bit counter fails; WIT window 1-128) (https://github.com/polymorph-components/polymorph-webcrypto/issues/356) - `jco-firefox` `x25519/wycheproof-jwk/tc117`: Firefox NSS: low-order or non-canonical X25519 public key refused at import (contributory-behavior checks); other platforms import it and derive per RFC 7748 (https://github.com/polymorph-components/polymorph-webcrypto/issues/356) - `jco-firefox` `x25519/wycheproof-jwk/tc118`: Firefox NSS: low-order or non-canonical X25519 public key refused at import (contributory-behavior checks); other platforms import it and derive per RFC 7748 (https://github.com/polymorph-components/polymorph-webcrypto/issues/356) @@ -173,8 +173,8 @@ None. ## Summary - `composed`: 2 N/A, 19089 pass (19091 total) -- `deltic-browser`: 2 N/A, 19089 pass (19091 total) -- `deltic-deno`: 302 N/A, 18756 pass, 33 xfail (19091 total) +- `polyengine-browser`: 2 N/A, 19089 pass (19091 total) +- `polyengine-deno`: 302 N/A, 18756 pass, 33 xfail (19091 total) - `jco-browser`: 2 N/A, 19089 pass (19091 total) - `jco-firefox`: 2 N/A, 19025 pass, 64 xfail (19091 total) - `jco-node`: 2 N/A, 19089 pass (19091 total) diff --git a/conformance/driver-ct/deltic/.npmrc b/conformance/driver-ct/polyengine/.npmrc similarity index 100% rename from conformance/driver-ct/deltic/.npmrc rename to conformance/driver-ct/polyengine/.npmrc diff --git a/conformance/driver-ct/deltic/README.md b/conformance/driver-ct/polyengine/README.md similarity index 67% rename from conformance/driver-ct/deltic/README.md rename to conformance/driver-ct/polyengine/README.md index d55987f5..da3a41de 100644 --- a/conformance/driver-ct/deltic/README.md +++ b/conformance/driver-ct/polyengine/README.md @@ -1,29 +1,29 @@ -# `conformance/driver-ct/deltic` — the deltic-native conformance leg +# `conformance/driver-ct/polyengine` — the polyengine-native conformance leg -The `deltic-deno` target in both conformance matrices: the suites run +The `polyengine-deno` target in both conformance matrices: the suites run runtime-linked under stock Deno — no transpile step, no generated tree, no npm install, no engine flag (the suites' async exports run on the callback -ABI) — against [`js/deltic/src/mod.ts`](../../../js/deltic/src/mod.ts). -This is the deltic analogue of the jco Node leg +ABI) — against [`js/polyengine/src/mod.ts`](../../../js/polyengine/src/mod.ts). +This is the polyengine analogue of the jco Node leg (`conformance/driver-ct/jco/runner.mjs`); see `run.ts`'s header for the leg-for-leg mirror. -Both suites run under the **one** target key `deltic-deno`, exactly as +Both suites run under the **one** target key `polyengine-deno`, exactly as `jco-node` does, writing: | suite | results file | `missing-features` | | --- | --- | --- | -| shared (`conformance_guest_ct`) | `results/deltic-deno.jsonl` | `sha1-checked` | -| signing (`conformance_signing_guest_ct`) | `results/deltic-deno-signing.jsonl` | — | +| shared (`conformance_guest_ct`) | `results/polyengine-deno.jsonl` | `sha1-checked` | +| signing (`conformance_signing_guest_ct`) | `results/polyengine-deno-signing.jsonl` | — | ## Running it ```sh -just conformance-ct::run-deltic +just conformance-ct::run-polyengine ``` which builds the suites and runs both through `ct-runner`, resolving the -`@deltic/translator` package's packaged wasm through the module graph +`@polyengine/translator` package's packaged wasm through the module graph (no fetch step, no net grant — the JSR lock carries integrity). The suite artifacts are the **bare** suites — the same components the jco @@ -35,7 +35,7 @@ because its artifact has the provider plugged in). ## Expected-fail debt -`deltic-deno` is the only target with declared expected failures +`polyengine-deno` is the only target with declared expected failures (`targets.toml`, `targets-signing.toml`, tracked in [#351](https://github.com/polymorph-components/polymorph-webcrypto/issues/351)): Deno's WebCrypto is narrower than Node's and the browsers' in a few @@ -50,7 +50,7 @@ without a named cause and a tracking link. This leg runs each suite on a **single reused component instance** (`freshCases: false`), departing from the family's fresh-instance-per-case convention — a declared property of the -`deltic-deno` target, documented at length in `run.ts`'s CONTAINMENT +`polyengine-deno` target, documented at length in `run.ts`'s CONTAINMENT MODE header. In brief: - The convention prices fresh instances at wasmtime rates (precompiled @@ -76,42 +76,42 @@ fresh-per-case. ## The pin -deltic publishes `@deltic/{runtime,translator,wasi-shims,ct-runner}` to +polyengine publishes `@polyengine/{runtime,translator,wasi-shims,ct-runner}` to JSR as `0.1.0-pre.g` on every green upstream commit — an exact-pinned, non-ordered prerelease version naming one commit (see -deltic's README, "Consuming the unstable prereleases"). This repo pins +polyengine's README, "Consuming the unstable prereleases"). This repo pins that version in **two** places, cross-checked by -`just conformance-ct::deltic-pin-check`: +`just conformance-ct::polyengine-pin-check`: -- `deno.json` (this directory) — `jsr:@deltic/@` import-map - entries for `@deltic/ct-runner`, `@deltic/runtime/embedder`, - `@deltic/runtime/shim`, `@deltic/wasi-shims`, and `@deltic/translator` +- `deno.json` (this directory) — `jsr:@polyengine/@` import-map + entries for `@polyengine/ct-runner`, `@polyengine/runtime/embedder`, + `@polyengine/runtime/shim`, `@polyengine/wasi-shims`, and `@polyengine/translator` (the packaged translator wasm loader — no separate fetch/sha step). `deno.lock` carries integrity hashes for that module graph, enforced with `--frozen`. -- [`../../../js/deltic/deno.json`](../../../js/deltic/deno.json) — the - SAME `@deltic/runtime/embedder` version (the module-identity - constraint: deltic's `wasi-shims` imports that specifier by bare name +- [`../../../js/polyengine/deno.json`](../../../js/polyengine/deno.json) — the + SAME `@polyengine/runtime/embedder` version (the module-identity + constraint: polyengine's `wasi-shims` imports that specifier by bare name internally, so every config resolving it must agree, or the embedder module loads twice and `instanceof ComponentException` stops holding across the boundary). Both `deno.json` files also carry -`"minimumDependencyAge": { "age": "P1D", "exclude": ["jsr:@deltic/*"] }`, -required per the deltic README because the pinned prereleases are +`"minimumDependencyAge": { "age": "P1D", "exclude": ["jsr:@polyengine/*"] }`, +required per the polyengine README because the pinned prereleases are typically published well under 24h before consumption. The browser leg's assets (the worker bundle and the translator wasm) are built from this SAME pinned JSR graph rather than fetched as separate sha-pinned GitHub release assets — see `browser-bundle-entry.ts` and the -`run-deltic-browser` recipe. +`run-polyengine-browser` recipe. To bump: update the version in both `deno.json` files (this directory's -and `js/deltic/deno.json`), delete BOTH `deno.lock` files (this directory -and `js/deltic/`), re-run `deno install` in both directories (`--frozen` +and `js/polyengine/deno.json`), delete BOTH `deno.lock` files (this directory +and `js/polyengine/`), re-run `deno install` in both directories (`--frozen` elsewhere depends on the regenerated lock), confirm -`just conformance-ct::deltic-pin-check` passes, then re-run -`just conformance-ct::run-deltic` plus +`just conformance-ct::polyengine-pin-check` passes, then re-run +`just conformance-ct::run-polyengine` plus `just conformance-ct::aggregate aggregate-signing` and commit the diff (including the regenerated matrices, via `just conformance-ct::matrix-update`). diff --git a/conformance/driver-ct/deltic/browser-bundle-entry.ts b/conformance/driver-ct/polyengine/browser-bundle-entry.ts similarity index 51% rename from conformance/driver-ct/deltic/browser-bundle-entry.ts rename to conformance/driver-ct/polyengine/browser-bundle-entry.ts index 4303c588..4fed8dad 100644 --- a/conformance/driver-ct/deltic/browser-bundle-entry.ts +++ b/conformance/driver-ct/polyengine/browser-bundle-entry.ts @@ -1,7 +1,7 @@ -// Local replacement for the retired `@deltic/release-bundle-entry` raw-URL +// Local replacement for the retired `@polyengine/release-bundle-entry` raw-URL // import: upstream's `tools/release-bundle/entry.ts` re-export surface, // reproduced here so the worker bundle (browser/worker-entry.ts) resolves -// the deltic engine through this repo's own pinned JSR import map instead +// the polyengine engine through this repo's own pinned JSR import map instead // of a second, separately-pinned copy of the same modules — the // module-identity constraint (see deno.json's "//" comment) wants exactly // one embedder module instance. @@ -9,8 +9,8 @@ // See the migration contract's "Browser-leg assets" section for the // upstream entry file this mirrors. -export * from "@deltic/runtime/embedder"; -export { Translator } from "@deltic/runtime/shim"; -export * from "@deltic/ct-runner"; -export { wasi } from "@deltic/wasi"; -export type { WasiImports, WasiOptions } from "@deltic/wasi"; +export * from "@polyengine/runtime/embedder"; +export { Translator } from "@polyengine/runtime/shim"; +export * from "@polyengine/ct-runner"; +export { wasi } from "@polyengine/wasi"; +export type { WasiImports, WasiOptions } from "@polyengine/wasi"; diff --git a/conformance/driver-ct/deltic/browser/worker-entry.ts b/conformance/driver-ct/polyengine/browser/worker-entry.ts similarity index 69% rename from conformance/driver-ct/deltic/browser/worker-entry.ts rename to conformance/driver-ct/polyengine/browser/worker-entry.ts index 4ffc99d5..12e48ba6 100644 --- a/conformance/driver-ct/deltic/browser/worker-entry.ts +++ b/conformance/driver-ct/polyengine/browser/worker-entry.ts @@ -1,24 +1,24 @@ -// The deltic-browser shard worker's bundle entry: the deltic engine +// The polyengine-browser shard worker's bundle entry: the polyengine engine // surface (../browser-bundle-entry.ts, resolved through this repo's // exact-pinned JSR import map), the upstream -// worker message loop, and this repo's deltic host module, resolved +// worker message loop, and this repo's polyengine host module, resolved // through ONE import map so the emitted bundle carries exactly one // embedder module instance — which is what keeps `instanceof ComponentException` // true when the host module throws across the component boundary // (workers resolve no import maps, so bundling is the only sound shape; -// see @jsr/polymorph__test's runner-deltic README). +// see @jsr/polymorph__test's runner-polyengine README). // -// Built by `just conformance-ct::_deltic-browser-bundle` with -// `deno bundle --platform browser` into target/deltic-browser/, and +// Built by `just conformance-ct::_polyengine-browser-bundle` with +// `deno bundle --platform browser` into target/polyengine-browser/, and // served to the page from there: as runSuitesInPage's workerUrl by the // conformance leg, and as the staged results viewer's live-pane worker // (locally and on the published Pages site). Both suites (shared + // signing) run through this one worker; the host module reads no // configuration, so `suiteImports` is the plain record. -import * as deltic from "../browser-bundle-entry.ts"; -import { workerMain } from "@polymorph/test/deltic-worker-main"; -import { setRsaPrivateKeyPolicy, webcryptoImports } from "../../../../js/deltic/src/mod.ts"; +import * as polyengine from "../browser-bundle-entry.ts"; +import { workerMain } from "@polymorph/test/polyengine-worker-main"; +import { setRsaPrivateKeyPolicy, webcryptoImports } from "../../../../js/polyengine/src/mod.ts"; // The browser posture, matching the jco-browser rows: a browser is an // attacker-observable timing domain, so the gated RSA private-key mints @@ -28,6 +28,6 @@ import { setRsaPrivateKeyPolicy, webcryptoImports } from "../../../../js/deltic/ setRsaPrivateKeyPolicy("decline"); workerMain({ - deltic, + polyengine, suiteImports: () => webcryptoImports(), }); diff --git a/conformance/driver-ct/polyengine/deno.json b/conformance/driver-ct/polyengine/deno.json new file mode 100644 index 00000000..3f5452d2 --- /dev/null +++ b/conformance/driver-ct/polyengine/deno.json @@ -0,0 +1,15 @@ +{ + "//": "MODULE-IDENTITY CONSTRAINT: polyengine's wasi module imports @polyengine/runtime/embedder by bare specifier internally. The @polyengine/runtime/embedder entry here must map to the IDENTICAL exact-pinned JSR version as ../../../js/polyengine/deno.json's entry, or the embedder module loads twice and `instanceof ComponentException` stops holding across the module boundary. polyengine ships as exact-pinned JSR releases (caret-honest upstream: within a minor line releases stay compatible, breaking bumps the minor; between releases, per-commit `-pre.g` prereleases exist — pin exactly); deno.lock carries integrity, --frozen enforced; the pin gate (just conformance-ct::polyengine-pin-check) asserts one @polyengine version repo-wide.", + "imports": { + "@polyengine/ct-runner": "jsr:@polyengine/ct-runner@0.3.0", + "@polyengine/runtime/embedder": "jsr:@polyengine/runtime@0.3.0/embedder", + "@polyengine/runtime/shim": "jsr:@polyengine/runtime@0.3.0/shim", + "@polyengine/wasi": "jsr:@polyengine/wasi@0.3.0", + "@polyengine/translator": "jsr:@polyengine/translator@0.3.0", + "@polymorph/test/polyengine-worker-main": "jsr:@polymorph/test@0.2.0/polyengine-worker-main" + }, + "minimumDependencyAge": { "age": "P1D", "exclude": ["jsr:@polyengine/*", "jsr:@polymorph/*"] }, + "tasks": { + "check": "deno check run.ts browser/worker-entry.ts browser-bundle-entry.ts" + } +} \ No newline at end of file diff --git a/conformance/driver-ct/polyengine/deno.lock b/conformance/driver-ct/polyengine/deno.lock new file mode 100644 index 00000000..1cbabf52 --- /dev/null +++ b/conformance/driver-ct/polyengine/deno.lock @@ -0,0 +1,60 @@ +{ + "version": "5", + "specifiers": { + "jsr:@polyengine/ct-runner@0.3.0": "0.3.0", + "jsr:@polyengine/protocol@0.1": "0.1.0", + "jsr:@polyengine/runtime@0.3": "0.3.0", + "jsr:@polyengine/runtime@0.3.0": "0.3.0", + "jsr:@polyengine/translator@0.3.0": "0.3.0", + "jsr:@polyengine/wasi@0.3.0": "0.3.0", + "jsr:@polymorph/test@0.2.0": "0.2.0" + }, + "jsr": { + "@polyengine/ct-runner@0.3.0": { + "integrity": "d58720da80bf29cb6a975e4750a53bbe9b75ab6e3bde1340299ed69726702174", + "dependencies": [ + "jsr:@polyengine/runtime@0.3" + ] + }, + "@polyengine/protocol@0.1.0": { + "integrity": "0c97f34166f22ba55e7b084148df96e47aebe47cd9dd13930057759c9161bb1c" + }, + "@polyengine/runtime@0.3.0": { + "integrity": "97d7648c104dd0f08b4d10e1ed0117ab0cb5243db68c139f1f3df25755ed4e60", + "dependencies": [ + "jsr:@polyengine/protocol" + ] + }, + "@polyengine/translator@0.3.0": { + "integrity": "1d9fcd09d360850bc08927ed1cf8124d50a0fed09ed8c80f354a6d3aedfcad25", + "dependencies": [ + "jsr:@polyengine/runtime@0.3" + ] + }, + "@polyengine/wasi@0.3.0": { + "integrity": "991adfdd39f795f94bba91a523322b88d45ff42800669b5b472356676e3c97e7", + "dependencies": [ + "jsr:@polyengine/protocol", + "jsr:@polyengine/runtime@0.3" + ] + }, + "@polymorph/test@0.2.0": { + "integrity": "a0d716133b0221cd0efd4f28c5c3d85d6e3ac330207d15889a6a981c8d0c5e37" + } + }, + "workspace": { + "dependencies": [ + "jsr:@polyengine/ct-runner@0.3.0", + "jsr:@polyengine/runtime@0.3.0", + "jsr:@polyengine/translator@0.3.0", + "jsr:@polyengine/wasi@0.3.0", + "jsr:@polymorph/test@0.2.0" + ], + "packageJson": { + "dependencies": [ + "npm:@jsr/polymorph__test@0.2.0", + "npm:playwright-core@1.62.1" + ] + } + } +} diff --git a/conformance/driver-ct/deltic/extract-translator-wasm.py b/conformance/driver-ct/polyengine/extract-translator-wasm.py similarity index 85% rename from conformance/driver-ct/deltic/extract-translator-wasm.py rename to conformance/driver-ct/polyengine/extract-translator-wasm.py index b720f2ca..64b5c645 100644 --- a/conformance/driver-ct/deltic/extract-translator-wasm.py +++ b/conformance/driver-ct/polyengine/extract-translator-wasm.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -"""Extract the deltic translator-shim wasm from a `deno info --json` module +"""Extract the polyengine translator-shim wasm from a `deno info --json` module graph, i.e. from the deno.lock-pinned JSR module cache — no network, no sha256 bookkeeping (JSR package integrity already lives in the lock). @@ -19,9 +19,9 @@ def main() -> None: info_path, out_path, expected_pin = sys.argv[1], sys.argv[2], sys.argv[3] graph = json.load(open(info_path)) - mods = [m for m in graph["modules"] if "/@deltic/" in m.get("specifier", "")] + mods = [m for m in graph["modules"] if "/@polyengine/" in m.get("specifier", "")] if not mods: - sys.exit("no @deltic modules found in module graph") + sys.exit("no @polyengine modules found in module graph") bad = {m["specifier"] for m in mods if expected_pin not in m["specifier"]} if bad: @@ -29,7 +29,7 @@ def main() -> None: candidates = [m for m in mods if m["specifier"].endswith("/translator_shim.wasm")] if not candidates: - sys.exit("translator_shim.wasm not found in @deltic module graph") + sys.exit("translator_shim.wasm not found in @polyengine module graph") asset = candidates[0] data = open(asset["local"], "rb").read() diff --git a/conformance/driver-ct/deltic/package-lock.json b/conformance/driver-ct/polyengine/package-lock.json similarity index 67% rename from conformance/driver-ct/deltic/package-lock.json rename to conformance/driver-ct/polyengine/package-lock.json index 8a764cc7..6eb9539d 100644 --- a/conformance/driver-ct/deltic/package-lock.json +++ b/conformance/driver-ct/polyengine/package-lock.json @@ -1,19 +1,19 @@ { - "name": "@polymorph/webcrypto-conformance-deltic-browser", + "name": "@polymorph/webcrypto-conformance-polyengine-browser", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "@polymorph/webcrypto-conformance-deltic-browser", + "name": "@polymorph/webcrypto-conformance-polyengine-browser", "dependencies": { - "@jsr/polymorph__test": "0.1.1", + "@jsr/polymorph__test": "0.2.0", "playwright-core": "1.62.1" } }, "node_modules/@jsr/polymorph__test": { - "version": "0.1.1", - "resolved": "https://npm.jsr.io/~/11/@jsr/polymorph__test/0.1.1.tgz", - "integrity": "sha512-bu0jE52btthChm83f04rQo+twOLszJ/JN7nLGl/5W/66cZb8tQrlZG+Lnd4/XierTlBgy0PpW75bjbqQBY2nDg==" + "version": "0.2.0", + "resolved": "https://npm.jsr.io/~/11/@jsr/polymorph__test/0.2.0.tgz", + "integrity": "sha512-fM1IYIy4HnBJm2IlZn/3Gk0d9AmQZz9Kg6JkY0E+fPAhFb2hrAW+4G7TCRQsJ4PStl0rzuBqF9VI6w30f7xCMA==" }, "node_modules/playwright-core": { "version": "1.62.1", diff --git a/conformance/driver-ct/polyengine/package.json b/conformance/driver-ct/polyengine/package.json new file mode 100644 index 00000000..bb6e1b3a --- /dev/null +++ b/conformance/driver-ct/polyengine/package.json @@ -0,0 +1,10 @@ +{ + "name": "@polymorph/webcrypto-conformance-polyengine-browser", + "private": true, + "type": "module", + "description": "Node driver + bundled worker inputs for the polyengine-browser conformance rows: both suites runtime-linked inside headless Chromium with this repo's polyengine host module, through the upstream page driver and polyengine worker-main.", + "dependencies": { + "@jsr/polymorph__test": "0.2.0", + "playwright-core": "1.62.1" + } +} diff --git a/conformance/driver-ct/deltic/run-browser.mjs b/conformance/driver-ct/polyengine/run-browser.mjs similarity index 82% rename from conformance/driver-ct/deltic/run-browser.mjs rename to conformance/driver-ct/polyengine/run-browser.mjs index 711f6442..dc14651a 100644 --- a/conformance/driver-ct/deltic/run-browser.mjs +++ b/conformance/driver-ct/polyengine/run-browser.mjs @@ -1,6 +1,6 @@ -// deltic-browser driver for the ported conformance suites: both suites' +// polyengine-browser driver for the ported conformance suites: both suites' // case loops run inside headless Chromium via the upstream page driver -// against this repo's deltic host module (js/deltic over the browser's +// against this repo's polyengine host module (js/polyengine over the browser's // Web Crypto) — the worker is one deno-bundled module (see // browser/worker-entry.ts) linking the suite COMPONENT at run time: no // transpile step, no generated tree, no core files. This file is the @@ -10,7 +10,7 @@ // Gates in CI (the Actions runner image ships Chrome); locally it needs // a Chrome/Chromium install and runs only when opted in with // CONFORMANCE_BROWSER=1 (`just conformance-ct::all`), or directly with -// `just conformance-ct::run-deltic-browser`. +// `just conformance-ct::run-polyengine-browser`. import { access } from "node:fs/promises"; import { fileURLToPath } from "node:url"; import { parseArgs } from "node:util"; @@ -24,10 +24,10 @@ import { writeResultsFile } from "@jsr/polymorph__test/node-runner"; const REPO_ROOT = fileURLToPath(new URL("../../../", import.meta.url)); const RESULTS_DIR = fileURLToPath(new URL("../results/", import.meta.url)); -const WORKER_URL = "/target/deltic-browser/webcrypto-worker.mjs"; -// Version-free: the lock owns @deltic versioning now (see the migration +const WORKER_URL = "/target/polyengine-browser/webcrypto-worker.mjs"; +// Version-free: the lock owns @polyengine versioning now (see the migration // contract), so this output path carries no tag. -const TRANSLATOR_URL = "/target/deltic-browser/deltic-translator-shim.wasm"; +const TRANSLATOR_URL = "/target/polyengine-browser/polyengine-translator-shim.wasm"; // CI hardware headroom, not a platform gap (the deno leg's 300 s case // timeout precedent): the 19k-case census and the slowest vector // batches can hold the heartbeat quiet for minutes on a 2-core runner. @@ -41,7 +41,7 @@ const { values } = parseArgs({ options: { missing: { type: "string", default: "" }, "missing-signing": { type: "string", default: "" }, - target: { type: "string", default: "deltic-browser" }, + target: { type: "string", default: "polyengine-browser" }, }, }); @@ -57,22 +57,22 @@ const common = { const SUITES = [ { ...common, - key: "deltic-browser", + key: "polyengine-browser", suite: "conformance-guest-ct", suiteUrl: "/target/wasm32-wasip2/release/conformance_guest_ct.wasm", missing: values.missing.split(",").filter(Boolean), }, { ...common, - key: "deltic-browser-signing", + key: "polyengine-browser-signing", suite: "conformance-signing-guest-ct", suiteUrl: "/target/wasm32-wasip2/release/conformance_signing_guest_ct.wasm", missing: values["missing-signing"].split(",").filter(Boolean), }, ]; for (const [what, rel] of [ - ["bundled worker (run `just conformance-ct::run-deltic-browser`)", WORKER_URL], - ["translator asset (run `just conformance-ct::run-deltic-browser`)", common.translatorUrl], + ["bundled worker (run `just conformance-ct::run-polyengine-browser`)", WORKER_URL], + ["translator asset (run `just conformance-ct::run-polyengine-browser`)", common.translatorUrl], ...SUITES.map((s) => [`suite component (run \`just conformance-ct::build\`)`, s.suiteUrl]), ]) { try { @@ -89,7 +89,7 @@ const outcome = await runPageHarness({ executablePath: await findChrome(), repoRoot: REPO_ROOT, html: buildHarnessPage({ - title: "polymorph:webcrypto conformance (deltic-browser)", + title: "polymorph:webcrypto conformance (polyengine-browser)", // Sequential: a worker pool holds one live suite instance per shard, // and this corpus's instances are large enough that a full pool trips // Chromium's wasm-memory allocation ceiling. diff --git a/conformance/driver-ct/deltic/run.ts b/conformance/driver-ct/polyengine/run.ts similarity index 85% rename from conformance/driver-ct/deltic/run.ts rename to conformance/driver-ct/polyengine/run.ts index 3cafda9c..d5a6c037 100644 --- a/conformance/driver-ct/deltic/run.ts +++ b/conformance/driver-ct/polyengine/run.ts @@ -1,8 +1,8 @@ -// The deltic-native leg of the conformance matrix: the `deltic-deno` +// The polyengine-native leg of the conformance matrix: the `polyengine-deno` // target for BOTH suites (shared and signing), runtime-linked under stock // Deno. // -// This is the deltic analogue of `conformance/driver-ct/jco/runner.mjs`, +// This is the polyengine analogue of `conformance/driver-ct/jco/runner.mjs`, // mirroring it leg for leg: // // runner.mjs (jco-node) | this runner @@ -15,11 +15,11 @@ // `envelope(target, suite)` | ct-runner's envelope (same identity) // worker pool, `--jobs` | single-threaded case loop // -// deltic is a runtime linker: unlike the jco legs there is no transpile +// polyengine is a runtime linker: unlike the jco legs there is no transpile // step, no generated tree, no npm install, and no engine flag — the // suite's async exports run on the callback ABI under stock Deno. // -// just conformance-ct::run-deltic # both legs +// just conformance-ct::run-polyengine # both legs // … run.ts [--translator ] [--suite shared|signing] [--only SUB] // [--fresh-cases] [--jspi] // @@ -27,14 +27,14 @@ // the jco leg transpiles (jco/package.json's `transpile` / // `transpile:signing` scripts name them), with `polymorph:webcrypto/*` // still imported and served by the host module under test -// (js/deltic/src/mod.ts). The sibling `composed` artifact has the +// (js/polyengine/src/mod.ts). The sibling `composed` artifact has the // RustCrypto provider plugged in-guest and would exercise no host module // at all. Because the artifact IS the locked one, ct-runner's envelope // `artifact-sha256` (computed from these bytes) is the lockfile's // identity — no `--suite-artifact` indirection is needed, unlike the // composed leg. // -// EXIT STATUS. Case failures do NOT fail this runner: the `deltic-deno` +// EXIT STATUS. Case failures do NOT fail this runner: the `polyengine-deno` // target carries declared expected-fail debt (targets.toml / // targets-signing.toml, tracked in polymorph-webcrypto#351), and the // aggregate is what assesses a failure as expected-or-not and fails the @@ -71,21 +71,21 @@ // green — per the KAT asymmetry above. When debugging any such run, // `--fresh-cases` restores per-case containment. // -// MODULE-IDENTITY CONSTRAINT: deltic's wasi module imports -// `@deltic/runtime/embedder` by bare specifier internally; this leg's -// `deno.json` AND `js/deltic/deno.json` must map that specifier to the +// MODULE-IDENTITY CONSTRAINT: polyengine's wasi module imports +// `@polyengine/runtime/embedder` by bare specifier internally; this leg's +// `deno.json` AND `js/polyengine/deno.json` must map that specifier to the // IDENTICAL exact-pinned JSR version, or the embedder module loads twice // and `instanceof ComponentException` stops holding across the module boundary. -// `just conformance-ct::deltic-pin-check` gates that. +// `just conformance-ct::polyengine-pin-check` gates that. -import { Translator } from "@deltic/runtime/shim"; -import type { ComponentArtifacts } from "@deltic/runtime/embedder"; -import { runSuite } from "@deltic/ct-runner"; -import { wasi } from "@deltic/wasi"; -import { defaultTranslator } from "@deltic/translator"; -import { webcryptoImports } from "../../../js/deltic/src/mod.ts"; +import { Translator } from "@polyengine/runtime/shim"; +import type { ComponentArtifacts } from "@polyengine/runtime/embedder"; +import { runSuite } from "@polyengine/ct-runner"; +import { wasi } from "@polyengine/wasi"; +import { defaultTranslator } from "@polyengine/translator"; +import { webcryptoImports } from "../../../js/polyengine/src/mod.ts"; -// This file sits at conformance/driver-ct/deltic/run.ts, so the repo root +// This file sits at conformance/driver-ct/polyengine/run.ts, so the repo root // is three levels up. const ROOT = new URL("../../../", import.meta.url); const SUITE_DIR = new URL("target/wasm32-wasip2/release/", ROOT); @@ -112,17 +112,17 @@ interface SuiteSpec { } // The `missing` lists mirror targets.toml / targets-signing.toml's -// `[targets.deltic-deno]` entries, which the aggregate cross-checks. +// `[targets.polyengine-deno]` entries, which the aggregate cross-checks. const SUITES: Readonly> = { shared: { name: "conformance-guest-ct", wasm: new URL("conformance_guest_ct.wasm", SUITE_DIR), - out: new URL("deltic-deno.jsonl", RESULTS), + out: new URL("polyengine-deno.jsonl", RESULTS), // Two capabilities no `crypto.subtle` host can serve here, mirroring - // targets.toml's `[targets.deltic-deno] missing-features`: + // targets.toml's `[targets.polyengine-deno] missing-features`: // sha1-checked — no platform carries sha1dc collision detection, // so the host declines it fail-closed - // (js/deltic/src/sha1Checked.ts), as jco-node does. + // (js/polyengine/src/sha1Checked.ts), as jco-node does. // rsa-verify-8192 — Deno refuses to IMPORT an 8192-bit RSA public // key at all (polymorph-webcrypto#351), so the // whole rsassa-…-8192 row is unservable. @@ -132,10 +132,10 @@ const SUITES: Readonly> = { signing: { name: "conformance-signing-guest-ct", wasm: new URL("conformance_signing_guest_ct.wasm", SUITE_DIR), - out: new URL("deltic-deno-signing.jsonl", RESULTS), + out: new URL("polyengine-deno-signing.jsonl", RESULTS), // Deno's `crypto.subtle` serves the gated RSA private-key mints, so // the host module serves them here too — the Node posture, not the - // browser one (see js/deltic/src/rsaSignature.ts). Nothing missing. + // browser one (see js/polyengine/src/rsaSignature.ts). Nothing missing. missing: [], }, }; @@ -156,7 +156,7 @@ interface Cli { function parseArgs(argv: string[]): Cli { const cli: Cli = { jspi: false, - target: "deltic-deno", + target: "polyengine-deno", suites: [], freshCases: false, }; diff --git a/conformance/driver-ct/targets-signing.toml b/conformance/driver-ct/targets-signing.toml index de002d45..cb910397 100644 --- a/conformance/driver-ct/targets-signing.toml +++ b/conformance/driver-ct/targets-signing.toml @@ -56,437 +56,437 @@ missing-features = ["rsa-sign", "rsa-oaep-decrypt"] # warnings, not errors. optional = true -[targets.deltic-deno] +[targets.polyengine-deno] # Deno's WebCrypto serves the gated RSA private-key mints by default, so -# the deltic host module takes the same posture as jco-node — the +# the polyengine host module takes the same posture as jco-node — the # fail-closed rsa-sign/rsa-oaep-decrypt policy is a browser posture # (jco-browser), not Deno's; the driver runs the served default. missing-features = [] # The RSA-OAEP cases Deno's WebCrypto refuses despite the WIT admitting # them are declared below as expected failures (tracked debt). -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "rsa-oaep-sha256-2048/wycheproof/tc33-pkcs8" reason = "Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "rsa-oaep-sha256-2048/wycheproof/tc33-jwk" reason = "Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "rsa-oaep-sha256-2048/wycheproof/tc34-pkcs8" reason = "Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "rsa-oaep-sha256-2048/wycheproof/tc34-jwk" reason = "Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "rsa-oaep-sha256-2048/wycheproof/tc35-pkcs8" reason = "Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "rsa-oaep-sha256-2048/wycheproof/tc35-jwk" reason = "Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "rsa-oaep-sha256-2048/wycheproof/tc36-pkcs8" reason = "Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "rsa-oaep-sha256-2048/wycheproof/tc36-jwk" reason = "Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "rsa-oaep-sha256-2048/wycheproof/tc37-pkcs8" reason = "Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "rsa-oaep-sha256-2048/wycheproof/tc37-jwk" reason = "Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "rsa-oaep-sha384-2048/wycheproof/tc32-pkcs8" reason = "Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "rsa-oaep-sha384-2048/wycheproof/tc32-jwk" reason = "Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "rsa-oaep-sha384-2048/wycheproof/tc33-pkcs8" reason = "Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "rsa-oaep-sha384-2048/wycheproof/tc33-jwk" reason = "Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "rsa-oaep-sha384-2048/wycheproof/tc34-pkcs8" reason = "Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "rsa-oaep-sha384-2048/wycheproof/tc34-jwk" reason = "Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "rsa-oaep-sha512-2048/wycheproof/tc33-pkcs8" reason = "Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "rsa-oaep-sha512-2048/wycheproof/tc33-jwk" reason = "Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "rsa-oaep-sha256-3072/wycheproof/tc33-pkcs8" reason = "Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "rsa-oaep-sha256-3072/wycheproof/tc33-jwk" reason = "Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "rsa-oaep-sha256-3072/wycheproof/tc34-pkcs8" reason = "Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "rsa-oaep-sha256-3072/wycheproof/tc34-jwk" reason = "Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "rsa-oaep-sha256-3072/wycheproof/tc35-pkcs8" reason = "Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "rsa-oaep-sha256-3072/wycheproof/tc35-jwk" reason = "Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "rsa-oaep-sha256-3072/wycheproof/tc36-pkcs8" reason = "Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "rsa-oaep-sha256-3072/wycheproof/tc36-jwk" reason = "Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "rsa-oaep-sha256-3072/wycheproof/tc37-pkcs8" reason = "Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "rsa-oaep-sha256-3072/wycheproof/tc37-jwk" reason = "Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "rsa-oaep-sha512-3072/wycheproof/tc32-pkcs8" reason = "Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "rsa-oaep-sha512-3072/wycheproof/tc32-jwk" reason = "Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "rsa-oaep-sha512-3072/wycheproof/tc33-pkcs8" reason = "Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "rsa-oaep-sha512-3072/wycheproof/tc33-jwk" reason = "Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "rsa-oaep-sha256-4096/wycheproof/tc33-pkcs8" reason = "Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "rsa-oaep-sha256-4096/wycheproof/tc33-jwk" reason = "Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "rsa-oaep-sha256-4096/wycheproof/tc34-pkcs8" reason = "Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "rsa-oaep-sha256-4096/wycheproof/tc34-jwk" reason = "Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "rsa-oaep-sha256-4096/wycheproof/tc35-pkcs8" reason = "Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "rsa-oaep-sha256-4096/wycheproof/tc35-jwk" reason = "Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "rsa-oaep-sha256-4096/wycheproof/tc36-pkcs8" reason = "Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "rsa-oaep-sha256-4096/wycheproof/tc36-jwk" reason = "Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "rsa-oaep-sha256-4096/wycheproof/tc37-pkcs8" reason = "Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "rsa-oaep-sha256-4096/wycheproof/tc37-jwk" reason = "Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "rsa-oaep-sha512-4096/wycheproof/tc33-pkcs8" reason = "Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "rsa-oaep-sha512-4096/wycheproof/tc33-jwk" reason = "Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "rsa-oaep-sha512-4096/wycheproof/tc34-pkcs8" reason = "Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "rsa-oaep-sha512-4096/wycheproof/tc34-jwk" reason = "Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "rsa-oaep-sha512-4096/wycheproof/tc35-pkcs8" reason = "Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "rsa-oaep-sha512-4096/wycheproof/tc35-jwk" reason = "Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "rsa-oaep-sha512-4096/wycheproof/tc36-pkcs8" reason = "Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "rsa-oaep-sha512-4096/wycheproof/tc36-jwk" reason = "Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "rsa-oaep-sha256-2688/wycheproof-misc/tc377-pkcs8" reason = "Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue)" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "rsa-oaep-sha256-2688/wycheproof-misc/tc377-jwk" reason = "Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue)" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "rsa-oaep-sha256-2688/wycheproof-misc/tc378-pkcs8" reason = "Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue)" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "rsa-oaep-sha256-2688/wycheproof-misc/tc378-jwk" reason = "Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue)" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "rsa-oaep-sha256-2688/wycheproof-misc/tc379-pkcs8" reason = "Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue)" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "rsa-oaep-sha256-2688/wycheproof-misc/tc379-jwk" reason = "Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue)" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "rsa-oaep-sha256-2688/wycheproof-misc/tc380-pkcs8" reason = "Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue)" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "rsa-oaep-sha256-2688/wycheproof-misc/tc380-jwk" reason = "Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue)" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "rsa-oaep-sha256-2688/wycheproof-misc/tc381-pkcs8" reason = "Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue)" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "rsa-oaep-sha256-2688/wycheproof-misc/tc381-jwk" reason = "Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue)" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "rsa-oaep-sha256-2688/wycheproof-misc/tc382-pkcs8" reason = "Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue)" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "rsa-oaep-sha256-2688/wycheproof-misc/tc382-jwk" reason = "Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue)" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "rsa-oaep-sha256-2688/wycheproof-misc/tc383-pkcs8" reason = "Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue)" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "rsa-oaep-sha256-2688/wycheproof-misc/tc383-jwk" reason = "Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue)" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "rsa-oaep-sha256-2688/wycheproof-misc/tc384-pkcs8" reason = "Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue)" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "rsa-oaep-sha256-2688/wycheproof-misc/tc384-jwk" reason = "Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue)" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "rsa-oaep-sha256-4032/wycheproof-misc/tc386-pkcs8" reason = "Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue)" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "rsa-oaep-sha256-4032/wycheproof-misc/tc386-jwk" reason = "Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue)" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "rsa-oaep-sha256-4032/wycheproof-misc/tc387-pkcs8" reason = "Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue)" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "rsa-oaep-sha256-4032/wycheproof-misc/tc387-jwk" reason = "Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue)" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "rsa-oaep-sha256-4032/wycheproof-misc/tc388-pkcs8" reason = "Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue)" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "rsa-oaep-sha256-4032/wycheproof-misc/tc388-jwk" reason = "Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue)" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "rsa-oaep-sha256-4032/wycheproof-misc/tc389-pkcs8" reason = "Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue)" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "rsa-oaep-sha256-4032/wycheproof-misc/tc389-jwk" reason = "Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue)" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "rsa-oaep-sha256-4032/wycheproof-misc/tc390-pkcs8" reason = "Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue)" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "rsa-oaep-sha256-4032/wycheproof-misc/tc390-jwk" reason = "Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue)" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "rsa-oaep-sha256-4032/wycheproof-misc/tc391-pkcs8" reason = "Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue)" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "rsa-oaep-sha256-4032/wycheproof-misc/tc391-jwk" reason = "Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue)" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "rsa-oaep-sha384-3104/wycheproof-misc/tc393-pkcs8" reason = "Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue)" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "rsa-oaep-sha384-3104/wycheproof-misc/tc393-jwk" reason = "Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue)" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "rsa-oaep-sha384-3104/wycheproof-misc/tc394-pkcs8" reason = "Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue)" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "rsa-oaep-sha384-3104/wycheproof-misc/tc394-jwk" reason = "Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue)" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "rsa-oaep-sha384-3104/wycheproof-misc/tc395-pkcs8" reason = "Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue)" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "rsa-oaep-sha384-3104/wycheproof-misc/tc395-jwk" reason = "Deno WebCrypto: valid Constructed+EncryptionWithLabel OAEP ciphertext refused (OperationError); plain-label vectors decrypt fine (the misc groups are entirely this class — modulus size was falsified as the cause, see issue)" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[targets.deltic-browser] -# The deltic host module (js/deltic) in headless Chromium: the same +[targets.polyengine-browser] +# The polyengine host module (js/polyengine) in headless Chromium: the same # fail-closed browser policy as jco-browser for the gated RSA # private-key mints (`rsa-sign`, `rsa-oaep-decrypt`) — the driver runs # the served default. diff --git a/conformance/driver-ct/targets.toml b/conformance/driver-ct/targets.toml index 22b9f051..c9fedb3a 100644 --- a/conformance/driver-ct/targets.toml +++ b/conformance/driver-ct/targets.toml @@ -70,7 +70,7 @@ missing-features = ["sha1-checked"] # results files are warnings. optional = true # The two Gecko/NSS strictness windows below are declared expected -# failures (tracked debt, #356), mirroring the deltic-deno ledger: the +# failures (tracked debt, #356), mirroring the polyengine-deno ledger: the # X25519 low-order/non-canonical public-key admissions and the AES-CTR # narrow-counter probe. Gecko's admission LAXNESS findings (#357) are # not ledgered: the host guards them uniformly. @@ -412,7 +412,7 @@ missing-features = ["sha1-checked", "rsa-verify-8192"] # warnings, not errors. optional = true # The Apple-platform strictness and laxness windows below are declared -# expected failures (tracked debt, #360), mirroring the deltic-deno and +# expected failures (tracked debt, #360), mirroring the polyengine-deno and # jco-firefox ledgers: unreduced RSASSA signatures accepted, the Ed25519 # empty message rejected, non-deterministic Ed25519 signing, and # malformed AES-CBC ciphertexts accepted. @@ -482,9 +482,9 @@ case = "probe/cipher-wrap-uniform-failure" reason = "WebKit WebCrypto: a malformed AES-CBC wrap unwraps (CBC decrypt accepts malformed input)" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/360" -[targets.deltic-deno] +[targets.polyengine-deno] # The same reference host as jco-node/jco-browser in behavior, rewritten -# over deltic's embedder API (js/deltic/src/mod.ts), run RUNTIME-LINKED +# over polyengine's embedder API (js/polyengine/src/mod.ts), run RUNTIME-LINKED # under stock Deno — no transpile step, no generated tree. Like every # platform-WebCrypto-backed target it cannot serve `sha1-checked` (no # platform carries sha1dc), and the suite's `!sha1-checked` decline case @@ -504,172 +504,172 @@ missing-features = ["sha1-checked", "rsa-verify-8192"] # below as expected failures — tracked debt, not silent tolerance, and # the aggregate fails on any UNdeclared failure or any declaration that # has gone stale. -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "probe/gcm-full-parameters" reason = "Deno WebCrypto: AES-GCM decrypt refuses tags shorter than 128 bits" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "probe/gcm-nonce-window" reason = "Deno WebCrypto: AES-GCM IV window is 96/128 bits (WIT window 12-128 bytes)" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "probe/ctr-known-answers" reason = "Deno WebCrypto: AES-CTR counter width limited to 32/64/128 bits (WIT window 1-128)" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "aes-gcm/wycheproof/tc259/whole" reason = "Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 120" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "aes-gcm/wycheproof/tc259/bytes" reason = "Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 120" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "aes-gcm/wycheproof/tc259/straddle" reason = "Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 120" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "aes-gcm/wycheproof/tc260/whole" reason = "Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 160" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "aes-gcm/wycheproof/tc260/bytes" reason = "Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 160" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "aes-gcm/wycheproof/tc260/straddle" reason = "Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 160" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "aes-gcm/wycheproof/tc263/whole" reason = "Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 120" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "aes-gcm/wycheproof/tc263/bytes" reason = "Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 120" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "aes-gcm/wycheproof/tc263/straddle" reason = "Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 120" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "aes-gcm/wycheproof/tc264/whole" reason = "Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 160" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "aes-gcm/wycheproof/tc264/bytes" reason = "Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 160" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "aes-gcm/wycheproof/tc264/straddle" reason = "Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 160" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "aes-gcm/wycheproof/tc265/whole" reason = "Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 256" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "aes-gcm/wycheproof/tc265/bytes" reason = "Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 256" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "aes-gcm/wycheproof/tc265/straddle" reason = "Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 256" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "aes-gcm/wycheproof/tc266/whole" reason = "Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 512" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "aes-gcm/wycheproof/tc266/bytes" reason = "Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 512" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "aes-gcm/wycheproof/tc266/straddle" reason = "Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 512" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "aes-gcm/wycheproof/tc267/whole" reason = "Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 1024" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "aes-gcm/wycheproof/tc267/bytes" reason = "Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 1024" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "aes-gcm/wycheproof/tc267/straddle" reason = "Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 1024" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "aes-gcm/wycheproof/tc273/whole" reason = "Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 256" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "aes-gcm/wycheproof/tc273/bytes" reason = "Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 256" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "aes-gcm/wycheproof/tc273/straddle" reason = "Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 256" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "aes-gcm/wycheproof/tc274/whole" reason = "Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 512" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "aes-gcm/wycheproof/tc274/bytes" reason = "Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 512" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "aes-gcm/wycheproof/tc274/straddle" reason = "Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 512" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "aes-gcm/wycheproof/tc275/whole" reason = "Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 1024" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "aes-gcm/wycheproof/tc275/bytes" reason = "Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 1024" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[[targets.deltic-deno.expected-fail]] +[[targets.polyengine-deno.expected-fail]] case = "aes-gcm/wycheproof/tc275/straddle" reason = "Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 1024" tracking = "https://github.com/polymorph-components/polymorph-webcrypto/issues/351" -[targets.deltic-browser] -# The deltic host module (js/deltic) runtime-linked in headless Chromium +[targets.polyengine-browser] +# The polyengine host module (js/polyengine) runtime-linked in headless Chromium # — the same platform WebCrypto as jco-browser, so the same posture: # `sha1-checked` cannot be served (no platform carries sha1dc), and # neither the Deno parameter-window expected-fails nor the diff --git a/conformance/guest-ct/src/probes.rs b/conformance/guest-ct/src/probes.rs index 736e3f57..bec6f63e 100644 --- a/conformance/guest-ct/src/probes.rs +++ b/conformance/guest-ct/src/probes.rs @@ -3210,7 +3210,7 @@ async fn sha1_checked_minting_declined() -> Result { /// The assertion deliberately does not pin one error variant or one /// stage. Where the refusal surfaces is a host implementation detail: /// a host that parses key material at import refuses there with -/// `invalid-key`, while the deltic host (js/deltic) materializes the +/// `invalid-key`, while the polyengine host (js/polyengine) materializes the /// platform key lazily, so `import-verifying-key-*` returns a handle and /// the refusal surfaces at `verify` as `other` (the underlying platform /// message is "public key error: SPKI cryptographic key data diff --git a/examples/jco-demo/package-lock.json b/examples/jco-demo/package-lock.json index 151aa71f..cbfdba22 100644 --- a/examples/jco-demo/package-lock.json +++ b/examples/jco-demo/package-lock.json @@ -9,7 +9,7 @@ "version": "0.1.0", "devDependencies": { "@bytecodealliance/jco-transpile": "0.7.0", - "@jsr/polymorph__test": "0.1.1" + "@jsr/polymorph__test": "0.2.0" } }, "node_modules/@bytecodealliance/jco-transpile": { @@ -26,9 +26,9 @@ } }, "node_modules/@bytecodealliance/preview2-shim": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/@bytecodealliance/preview2-shim/-/preview2-shim-0.20.1.tgz", - "integrity": "sha512-gvQP6DWfeQIYKHBb+nPykku1DRtfXQjM685+e75YYr8ZF2ZxisE4+nWrpwf84+NaWJRfuL5HvoLKQFbup1iwkQ==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@bytecodealliance/preview2-shim/-/preview2-shim-0.20.2.tgz", + "integrity": "sha512-Bp1cer1jztaQamLv1YKdc4MimI9LNAAKM2lNxOtGTLs7/At5KlA0fW1HWTi3ZJ5McaWNwJUDWSe5Lr0EgUpsnA==", "dev": true, "license": "(Apache-2.0 WITH LLVM-exception)" }, @@ -84,15 +84,15 @@ } }, "node_modules/@jsr/polymorph__test": { - "version": "0.1.1", - "resolved": "https://npm.jsr.io/~/11/@jsr/polymorph__test/0.1.1.tgz", - "integrity": "sha512-bu0jE52btthChm83f04rQo+twOLszJ/JN7nLGl/5W/66cZb8tQrlZG+Lnd4/XierTlBgy0PpW75bjbqQBY2nDg==", + "version": "0.2.0", + "resolved": "https://npm.jsr.io/~/11/@jsr/polymorph__test/0.2.0.tgz", + "integrity": "sha512-fM1IYIy4HnBJm2IlZn/3Gk0d9AmQZz9Kg6JkY0E+fPAhFb2hrAW+4G7TCRQsJ4PStl0rzuBqF9VI6w30f7xCMA==", "dev": true }, "node_modules/@napi-rs/wasm-runtime": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.2.2.tgz", - "integrity": "sha512-JfB4kuJQjaoHuCTseIINHtHWeJnvgEcxjwA5t/Y00ZgaOO1Crz3fjT/p8kT28zA/Caz7oiUMn3d6H2yOVCVwuw==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.2.3.tgz", + "integrity": "sha512-UMduMbqO5s5zF2NkNacMT/yK5Y5QiKvWr2+50bzIIxFDwVJ2h49b+oyjaCGPhJxd2/gC2x39EHv/gHVuu36x2Q==", "dev": true, "license": "MIT", "optional": true, @@ -107,8 +107,8 @@ "url": "https://github.com/sponsors/Brooooooklyn" }, "peerDependencies": { - "@emnapi/core": "^1.7.1 || ^2.0.0-alpha.3", - "@emnapi/runtime": "^1.7.1 || ^2.0.0-alpha.3" + "@emnapi/core": "^1.7.1 || ^2.0.0-alpha.4", + "@emnapi/runtime": "^1.7.1 || ^2.0.0-alpha.4" } }, "node_modules/@oxc-minify/binding-android-arm-eabi": { diff --git a/examples/jco-demo/package.json b/examples/jco-demo/package.json index 2ade71df..b474f34d 100644 --- a/examples/jco-demo/package.json +++ b/examples/jco-demo/package.json @@ -12,6 +12,6 @@ }, "devDependencies": { "@bytecodealliance/jco-transpile": "0.7.0", - "@jsr/polymorph__test": "0.1.1" + "@jsr/polymorph__test": "0.2.0" } } \ No newline at end of file diff --git a/js/componentize/wpt/parity/package-lock.json b/js/componentize/wpt/parity/package-lock.json index 950a132a..f2d73e7c 100644 --- a/js/componentize/wpt/parity/package-lock.json +++ b/js/componentize/wpt/parity/package-lock.json @@ -10,7 +10,7 @@ "devDependencies": { "@bytecodealliance/jco-transpile": "0.7.0", "@bytecodealliance/preview2-shim": "^0.19.0", - "@jsr/polymorph__test": "0.1.1", + "@jsr/polymorph__test": "0.2.0", "playwright-core": "^1.62.1" } }, @@ -28,9 +28,9 @@ } }, "node_modules/@bytecodealliance/jco-transpile/node_modules/@bytecodealliance/preview2-shim": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/@bytecodealliance/preview2-shim/-/preview2-shim-0.20.1.tgz", - "integrity": "sha512-gvQP6DWfeQIYKHBb+nPykku1DRtfXQjM685+e75YYr8ZF2ZxisE4+nWrpwf84+NaWJRfuL5HvoLKQFbup1iwkQ==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@bytecodealliance/preview2-shim/-/preview2-shim-0.20.2.tgz", + "integrity": "sha512-Bp1cer1jztaQamLv1YKdc4MimI9LNAAKM2lNxOtGTLs7/At5KlA0fW1HWTi3ZJ5McaWNwJUDWSe5Lr0EgUpsnA==", "dev": true, "license": "(Apache-2.0 WITH LLVM-exception)" }, @@ -86,15 +86,15 @@ } }, "node_modules/@jsr/polymorph__test": { - "version": "0.1.1", - "resolved": "https://npm.jsr.io/~/11/@jsr/polymorph__test/0.1.1.tgz", - "integrity": "sha512-bu0jE52btthChm83f04rQo+twOLszJ/JN7nLGl/5W/66cZb8tQrlZG+Lnd4/XierTlBgy0PpW75bjbqQBY2nDg==", + "version": "0.2.0", + "resolved": "https://npm.jsr.io/~/11/@jsr/polymorph__test/0.2.0.tgz", + "integrity": "sha512-fM1IYIy4HnBJm2IlZn/3Gk0d9AmQZz9Kg6JkY0E+fPAhFb2hrAW+4G7TCRQsJ4PStl0rzuBqF9VI6w30f7xCMA==", "dev": true }, "node_modules/@napi-rs/wasm-runtime": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.2.2.tgz", - "integrity": "sha512-JfB4kuJQjaoHuCTseIINHtHWeJnvgEcxjwA5t/Y00ZgaOO1Crz3fjT/p8kT28zA/Caz7oiUMn3d6H2yOVCVwuw==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.2.3.tgz", + "integrity": "sha512-UMduMbqO5s5zF2NkNacMT/yK5Y5QiKvWr2+50bzIIxFDwVJ2h49b+oyjaCGPhJxd2/gC2x39EHv/gHVuu36x2Q==", "dev": true, "license": "MIT", "optional": true, @@ -109,8 +109,8 @@ "url": "https://github.com/sponsors/Brooooooklyn" }, "peerDependencies": { - "@emnapi/core": "^1.7.1 || ^2.0.0-alpha.3", - "@emnapi/runtime": "^1.7.1 || ^2.0.0-alpha.3" + "@emnapi/core": "^1.7.1 || ^2.0.0-alpha.4", + "@emnapi/runtime": "^1.7.1 || ^2.0.0-alpha.4" } }, "node_modules/@oxc-minify/binding-android-arm-eabi": { diff --git a/js/componentize/wpt/parity/package.json b/js/componentize/wpt/parity/package.json index 1adbf781..f1277928 100644 --- a/js/componentize/wpt/parity/package.json +++ b/js/componentize/wpt/parity/package.json @@ -18,6 +18,6 @@ "@bytecodealliance/jco-transpile": "0.7.0", "@bytecodealliance/preview2-shim": "^0.19.0", "playwright-core": "^1.62.1", - "@jsr/polymorph__test": "0.1.1" + "@jsr/polymorph__test": "0.2.0" } } \ No newline at end of file diff --git a/js/deltic/deno.json b/js/deltic/deno.json deleted file mode 100644 index 12d53469..00000000 --- a/js/deltic/deno.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "@polymorph/webcrypto", - "version": "0.2.0", - "license": "Apache-2.0", - "exports": "./src/mod.ts", - "//": "MODULE-IDENTITY CONSTRAINT: deltic's wasi module imports @deltic/runtime/embedder by bare specifier internally. This file's @deltic/runtime/embedder entry is a caret range (published-package convention: consumers resolve one shared @deltic/runtime across their dependency graph); conformance/driver-ct/deltic/deno.json (repo-internal, not published) exact-pins the same package for its own module-identity needs. The pin gate (just conformance-ct::deltic-pin-check) asserts the two deno.locks resolve to one @deltic/runtime version repo-wide.", - "imports": { - "@deltic/runtime/embedder": "jsr:@deltic/runtime@^0.2.0/embedder" - }, - "minimumDependencyAge": { "age": "P1D", "exclude": ["jsr:@deltic/*"] }, - "publish": { - "exclude": ["tests"] - }, - "tasks": { - "check": "deno check --frozen src tests", - "test": "deno test --frozen --allow-read=../../conformance/vectors tests" - } -} diff --git a/js/deltic/deno.lock b/js/deltic/deno.lock deleted file mode 100644 index 944d0a1f..00000000 --- a/js/deltic/deno.lock +++ /dev/null @@ -1,23 +0,0 @@ -{ - "version": "5", - "specifiers": { - "jsr:@deltic/protocol@0.2": "0.2.0", - "jsr:@deltic/runtime@0.2": "0.2.0" - }, - "jsr": { - "@deltic/protocol@0.2.0": { - "integrity": "028be6a3623c5e910598aa7a199209b85e8931ae484ac7f6638d610ddb0e19fa" - }, - "@deltic/runtime@0.2.0": { - "integrity": "cf8b0bdd9e6bc4488ba78cc91661103bfcbd78f5a5c4ff99132799618a9db4bb", - "dependencies": [ - "jsr:@deltic/protocol" - ] - } - }, - "workspace": { - "dependencies": [ - "jsr:@deltic/runtime@0.2" - ] - } -} diff --git a/js/jco/package-lock.json b/js/jco/package-lock.json index 1c79700c..b3a885c4 100644 --- a/js/jco/package-lock.json +++ b/js/jco/package-lock.json @@ -9,7 +9,7 @@ "version": "0.1.0", "devDependencies": { "@bytecodealliance/jco-transpile": "0.7.0", - "@jsr/polymorph__test": "0.1.1", + "@jsr/polymorph__test": "0.2.0", "typescript": "^5.9.3" } }, @@ -26,17 +26,10 @@ "oxc-minify": "^0.136.0" } }, - "node_modules/@bytecodealliance/jco-transpile/node_modules/@bytecodealliance/preview2-shim": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/@bytecodealliance/preview2-shim/-/preview2-shim-0.20.1.tgz", - "integrity": "sha512-gvQP6DWfeQIYKHBb+nPykku1DRtfXQjM685+e75YYr8ZF2ZxisE4+nWrpwf84+NaWJRfuL5HvoLKQFbup1iwkQ==", - "dev": true, - "license": "(Apache-2.0 WITH LLVM-exception)" - }, "node_modules/@bytecodealliance/preview2-shim": { - "version": "0.19.0", - "resolved": "https://registry.npmjs.org/@bytecodealliance/preview2-shim/-/preview2-shim-0.19.0.tgz", - "integrity": "sha512-OSUlcM62fXLuzYP0DjBn/SwjKMZ/y/2PMXZ8v5cRiiFcroauntlPRl/oCnx0xYjYiqdYvE0PY50VCNutll0xOw==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@bytecodealliance/preview2-shim/-/preview2-shim-0.20.2.tgz", + "integrity": "sha512-Bp1cer1jztaQamLv1YKdc4MimI9LNAAKM2lNxOtGTLs7/At5KlA0fW1HWTi3ZJ5McaWNwJUDWSe5Lr0EgUpsnA==", "dev": true, "license": "(Apache-2.0 WITH LLVM-exception)" }, @@ -50,6 +43,13 @@ "@bytecodealliance/preview2-shim": "^0.19.0" } }, + "node_modules/@bytecodealliance/preview3-shim/node_modules/@bytecodealliance/preview2-shim": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/@bytecodealliance/preview2-shim/-/preview2-shim-0.19.0.tgz", + "integrity": "sha512-OSUlcM62fXLuzYP0DjBn/SwjKMZ/y/2PMXZ8v5cRiiFcroauntlPRl/oCnx0xYjYiqdYvE0PY50VCNutll0xOw==", + "dev": true, + "license": "(Apache-2.0 WITH LLVM-exception)" + }, "node_modules/@emnapi/core": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.11.1.tgz", @@ -85,15 +85,15 @@ } }, "node_modules/@jsr/polymorph__test": { - "version": "0.1.1", - "resolved": "https://npm.jsr.io/~/11/@jsr/polymorph__test/0.1.1.tgz", - "integrity": "sha512-bu0jE52btthChm83f04rQo+twOLszJ/JN7nLGl/5W/66cZb8tQrlZG+Lnd4/XierTlBgy0PpW75bjbqQBY2nDg==", + "version": "0.2.0", + "resolved": "https://npm.jsr.io/~/11/@jsr/polymorph__test/0.2.0.tgz", + "integrity": "sha512-fM1IYIy4HnBJm2IlZn/3Gk0d9AmQZz9Kg6JkY0E+fPAhFb2hrAW+4G7TCRQsJ4PStl0rzuBqF9VI6w30f7xCMA==", "dev": true }, "node_modules/@napi-rs/wasm-runtime": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.2.2.tgz", - "integrity": "sha512-JfB4kuJQjaoHuCTseIINHtHWeJnvgEcxjwA5t/Y00ZgaOO1Crz3fjT/p8kT28zA/Caz7oiUMn3d6H2yOVCVwuw==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.2.3.tgz", + "integrity": "sha512-UMduMbqO5s5zF2NkNacMT/yK5Y5QiKvWr2+50bzIIxFDwVJ2h49b+oyjaCGPhJxd2/gC2x39EHv/gHVuu36x2Q==", "dev": true, "license": "MIT", "optional": true, @@ -108,8 +108,8 @@ "url": "https://github.com/sponsors/Brooooooklyn" }, "peerDependencies": { - "@emnapi/core": "^1.7.1 || ^2.0.0-alpha.3", - "@emnapi/runtime": "^1.7.1 || ^2.0.0-alpha.3" + "@emnapi/core": "^1.7.1 || ^2.0.0-alpha.4", + "@emnapi/runtime": "^1.7.1 || ^2.0.0-alpha.4" } }, "node_modules/@oxc-minify/binding-android-arm-eabi": { diff --git a/js/jco/package.json b/js/jco/package.json index e6273b8f..8bddfe44 100644 --- a/js/jco/package.json +++ b/js/jco/package.json @@ -13,6 +13,6 @@ "devDependencies": { "@bytecodealliance/jco-transpile": "0.7.0", "typescript": "^5.9.3", - "@jsr/polymorph__test": "0.1.1" + "@jsr/polymorph__test": "0.2.0" } } \ No newline at end of file diff --git a/js/deltic/README.md b/js/polyengine/README.md similarity index 68% rename from js/deltic/README.md rename to js/polyengine/README.md index e341fb30..c723c39d 100644 --- a/js/deltic/README.md +++ b/js/polyengine/README.md @@ -1,20 +1,20 @@ -# `js/deltic` — the deltic-native `polymorph:webcrypto` host module +# `js/polyengine` — the polyengine-native `polymorph:webcrypto` host module -`src/mod.ts` is the [deltic](https://github.com/lann/deltic)-native port of +`src/mod.ts` is the [polyengine](https://github.com/polymorph-components/polyengine)-native port of [`js/jco/webcrypto.js`](../jco/webcrypto.js): the same behavioral reference host — one platform-WebCrypto-backed implementation of every -`polymorph:webcrypto@0.1.0` interface — rewritten over deltic's embedder +`polymorph:webcrypto@0.1.0` interface — rewritten over polyengine's embedder API (typed `Stream` rather than jco's bare-payload `Stream`, and `ComponentException` throws rather than `throw { tag, val }`). It was developed as -deltic's own `ports/webcrypto` reference-host port and is upstreamed here -per [lann/deltic#40](https://github.com/lann/deltic/pull/40); the WIT +polyengine's own `ports/webcrypto` reference-host port and is upstreamed here +per [polymorph-components/polyengine#40](https://github.com/polymorph-components/polyengine/pull/40); the WIT contract is [`wit/`](../../wit), and every doc comment quoting a contract quotes that package. Doc comments citing `contracts/embedder-api.md` cite -the *deltic* repository's embedder contract, the port's other authority. +the *polyengine* repository's embedder contract, the port's other authority. `webcryptoImports()` is the whole entry point: it returns the imports record — one entry per WIT interface, keyed by the fully qualified id with -version — that deltic's `instantiate` takes. +version — that polyengine's `instantiate` takes. ## Standing declines @@ -38,14 +38,14 @@ browser-hosted embedding should call `setRsaPrivateKeyPolicy("decline")` ## Module identity -`deno.json`'s `@deltic/runtime/embedder` import maps to the exact same +`deno.json`'s `@polyengine/runtime/embedder` import maps to the exact same pinned JSR version as -[`conformance/driver-ct/deltic/deno.json`](../../conformance/driver-ct/deltic/deno.json). -deltic's `wasi-shims` module imports that specifier by bare name +[`conformance/driver-ct/polyengine/deno.json`](../../conformance/driver-ct/polyengine/deno.json). +polyengine's `wasi-shims` module imports that specifier by bare name internally; if the two configs ever disagreed, the embedder module would load twice and `instanceof ComponentException` would stop holding across the boundary. Keep both import maps' version identical for that one entry — -`just conformance-ct::deltic-pin-check` gates that. +`just conformance-ct::polyengine-pin-check` gates that. ## Unit tests @@ -57,18 +57,18 @@ the WIT taxonomy's verdict for that condition; vectors are named by file + tcId, never inlined. ```sh -cd js/deltic +cd js/polyengine deno task check deno task test ``` Both run against the pinned JSR release with `deno.lock` frozen (`just -deltic-module-check` runs the pair as CI does). The exhaustive behavioral +polyengine-module-check` runs the pair as CI does). The exhaustive behavioral surface is the real conformance suite, which lives at -[`conformance/driver-ct/deltic/`](../../conformance/driver-ct/deltic). +[`conformance/driver-ct/polyengine/`](../../conformance/driver-ct/polyengine). ## The pin -See [`conformance/driver-ct/deltic/README.md`](../../conformance/driver-ct/deltic/README.md) +See [`conformance/driver-ct/polyengine/README.md`](../../conformance/driver-ct/polyengine/README.md) — it owns the bump procedure for both pin sites (this `deno.json` included). diff --git a/js/polyengine/deno.json b/js/polyengine/deno.json new file mode 100644 index 00000000..d0717101 --- /dev/null +++ b/js/polyengine/deno.json @@ -0,0 +1,18 @@ +{ + "name": "@polymorph/webcrypto", + "version": "0.3.0", + "license": "Apache-2.0", + "exports": "./src/mod.ts", + "//": "MODULE-IDENTITY CONSTRAINT: polyengine's wasi module imports @polyengine/runtime/embedder by bare specifier internally. This file's @polyengine/runtime/embedder entry is a caret range (published-package convention: consumers resolve one shared @polyengine/runtime across their dependency graph); conformance/driver-ct/polyengine/deno.json (repo-internal, not published) exact-pins the same package for its own module-identity needs. The pin gate (just conformance-ct::polyengine-pin-check) asserts the two deno.locks resolve to one @polyengine/runtime version repo-wide.", + "imports": { + "@polyengine/runtime/embedder": "jsr:@polyengine/runtime@^0.3.0/embedder" + }, + "minimumDependencyAge": { "age": "P1D", "exclude": ["jsr:@polyengine/*"] }, + "publish": { + "exclude": ["tests"] + }, + "tasks": { + "check": "deno check --frozen src tests", + "test": "deno test --frozen --allow-read=../../conformance/vectors tests" + } +} diff --git a/js/polyengine/deno.lock b/js/polyengine/deno.lock new file mode 100644 index 00000000..d5317547 --- /dev/null +++ b/js/polyengine/deno.lock @@ -0,0 +1,23 @@ +{ + "version": "5", + "specifiers": { + "jsr:@polyengine/protocol@0.1": "0.1.0", + "jsr:@polyengine/runtime@0.3": "0.3.0" + }, + "jsr": { + "@polyengine/protocol@0.1.0": { + "integrity": "0c97f34166f22ba55e7b084148df96e47aebe47cd9dd13930057759c9161bb1c" + }, + "@polyengine/runtime@0.3.0": { + "integrity": "97d7648c104dd0f08b4d10e1ed0117ab0cb5243db68c139f1f3df25755ed4e60", + "dependencies": [ + "jsr:@polyengine/protocol" + ] + } + }, + "workspace": { + "dependencies": [ + "jsr:@polyengine/runtime@0.3" + ] + } +} diff --git a/js/deltic/src/aead.ts b/js/polyengine/src/aead.ts similarity index 99% rename from js/deltic/src/aead.ts rename to js/polyengine/src/aead.ts index 1defb606..f92542e1 100644 --- a/js/deltic/src/aead.ts +++ b/js/polyengine/src/aead.ts @@ -15,7 +15,7 @@ import { type WrapInput as WrapInputT, WrapInput, } from "./wrapping.ts"; -import type { Stream } from "@deltic/runtime/embedder"; +import type { Stream } from "@polyengine/runtime/embedder"; const subtle = globalThis.crypto.subtle; diff --git a/js/deltic/src/cipher.ts b/js/polyengine/src/cipher.ts similarity index 99% rename from js/deltic/src/cipher.ts rename to js/polyengine/src/cipher.ts index 5f93e763..a63bfd52 100644 --- a/js/deltic/src/cipher.ts +++ b/js/polyengine/src/cipher.ts @@ -30,7 +30,7 @@ import { } from "./platform.ts"; import { type DeriveInput, deriveKeyFrom } from "./derivation.ts"; import { consumeUnwrapInput, consumeWrapInput, UnwrapInput, WrapInput } from "./wrapping.ts"; -import type { Stream } from "@deltic/runtime/embedder"; +import type { Stream } from "@polyengine/runtime/embedder"; const subtle = globalThis.crypto.subtle; diff --git a/js/deltic/src/derivation.ts b/js/polyengine/src/derivation.ts similarity index 100% rename from js/deltic/src/derivation.ts rename to js/polyengine/src/derivation.ts diff --git a/js/deltic/src/digest.ts b/js/polyengine/src/digest.ts similarity index 97% rename from js/deltic/src/digest.ts rename to js/polyengine/src/digest.ts index 0c5bccee..b54d4796 100644 --- a/js/deltic/src/digest.ts +++ b/js/polyengine/src/digest.ts @@ -12,7 +12,7 @@ import { errUnsupported, platformCall } from "./errors.ts"; import { asBufferSource, collectByteStream } from "./util.ts"; -import type { Stream } from "@deltic/runtime/embedder"; +import type { Stream } from "@polyengine/runtime/embedder"; const subtle = globalThis.crypto.subtle; diff --git a/js/deltic/src/ec.ts b/js/polyengine/src/ec.ts similarity index 100% rename from js/deltic/src/ec.ts rename to js/polyengine/src/ec.ts diff --git a/js/deltic/src/ecdh.ts b/js/polyengine/src/ecdh.ts similarity index 100% rename from js/deltic/src/ecdh.ts rename to js/polyengine/src/ecdh.ts diff --git a/js/deltic/src/ecdsa.ts b/js/polyengine/src/ecdsa.ts similarity index 100% rename from js/deltic/src/ecdsa.ts rename to js/polyengine/src/ecdsa.ts diff --git a/js/deltic/src/errors.ts b/js/polyengine/src/errors.ts similarity index 99% rename from js/deltic/src/errors.ts rename to js/polyengine/src/errors.ts index 2f098108..2861a023 100644 --- a/js/deltic/src/errors.ts +++ b/js/polyengine/src/errors.ts @@ -17,7 +17,7 @@ // payload shape is `{ kind, value? }` with `value` absent for payloadless // cases. -import { ComponentException } from "@deltic/runtime/embedder"; +import { ComponentException } from "@polyengine/runtime/embedder"; /** The `types.error` payload shape (the value-mapping table's variant row). */ export type WcErrorPayload = diff --git a/js/deltic/src/hkdf.ts b/js/polyengine/src/hkdf.ts similarity index 100% rename from js/deltic/src/hkdf.ts rename to js/polyengine/src/hkdf.ts diff --git a/js/deltic/src/keyAgreement.ts b/js/polyengine/src/keyAgreement.ts similarity index 100% rename from js/deltic/src/keyAgreement.ts rename to js/polyengine/src/keyAgreement.ts diff --git a/js/deltic/src/keyWrap.ts b/js/polyengine/src/keyWrap.ts similarity index 100% rename from js/deltic/src/keyWrap.ts rename to js/polyengine/src/keyWrap.ts diff --git a/js/deltic/src/mac.ts b/js/polyengine/src/mac.ts similarity index 99% rename from js/deltic/src/mac.ts rename to js/polyengine/src/mac.ts index 61ac609c..4933ab48 100644 --- a/js/deltic/src/mac.ts +++ b/js/polyengine/src/mac.ts @@ -16,7 +16,7 @@ import { importPlatformKeyJwk, jwkKeyBytes, jwkMaterial, requireStrictBase64url import { asBufferSource, unwrappedJwk, utf8Encode } from "./util.ts"; import { deriveKeyFrom, type DeriveInput } from "./derivation.ts"; import { consumeUnwrapInput, type UnwrapInput, WrapInput } from "./wrapping.ts"; -import type { Stream } from "@deltic/runtime/embedder"; +import type { Stream } from "@polyengine/runtime/embedder"; import { collectByteStream } from "./util.ts"; const subtle = globalThis.crypto.subtle; diff --git a/js/deltic/src/mod.ts b/js/polyengine/src/mod.ts similarity index 90% rename from js/deltic/src/mod.ts rename to js/polyengine/src/mod.ts index 23f82749..7debda97 100644 --- a/js/deltic/src/mod.ts +++ b/js/polyengine/src/mod.ts @@ -1,15 +1,15 @@ // The `polymorph:webcrypto@0.1.0` host-module port for -// [deltic](https://github.com/lann/deltic): `webcryptoImports()` returns -// the imports-record fragment for deltic's `instantiate` (interface keys +// [polyengine](https://github.com/polymorph-components/polyengine): `webcryptoImports()` returns +// the imports-record fragment for polyengine's `instantiate` (interface keys // are the fully qualified WIT id, version included). // -// PORT PROVENANCE. Upstreamed verbatim from deltic's own reference-host -// port, `lann/deltic ports/webcrypto/src/`, where it was developed and +// PORT PROVENANCE. Upstreamed verbatim from polyengine's own reference-host +// port, `polymorph-components/polyengine ports/webcrypto/src/`, where it was developed and // where its unit suite lives; the only edit on the way in is the import -// rewrite from deltic-repo-relative paths -// (`../../../runtime/src/embedder/…`) to the pinned `@deltic/runtime/embedder` +// rewrite from polyengine-repo-relative paths +// (`../../../runtime/src/embedder/…`) to the pinned `@polyengine/runtime/embedder` // specifier this repo's import maps resolve (see ../README.md). It is the -// deltic-conventions sibling of [`js/jco/webcrypto.js`](../jco/webcrypto.js) +// polyengine-conventions sibling of [`js/jco/webcrypto.js`](../jco/webcrypto.js) // — same behavioral reference host, `ComponentException` throws and typed `Stream` // instead of jco's bare-payload conventions. The WIT contract is // [`wit/`](../../wit); every doc comment quoting a contract quotes it. @@ -98,7 +98,7 @@ export type { WcErrorPayload } from "./errors.ts"; * * Usage: `instantiate(artifacts, { ...wasi(), ...webcryptoImports() })` * — the shape both conformance suites are driven with (see - * `conformance/driver-ct/deltic/run.ts`, whose two legs instantiate the + * `conformance/driver-ct/polyengine/run.ts`, whose two legs instantiate the * shared and signing suites against exactly this record). */ export function webcryptoImports(): Record { diff --git a/js/deltic/src/pbkdf2.ts b/js/polyengine/src/pbkdf2.ts similarity index 100% rename from js/deltic/src/pbkdf2.ts rename to js/polyengine/src/pbkdf2.ts diff --git a/js/deltic/src/platform.ts b/js/polyengine/src/platform.ts similarity index 99% rename from js/deltic/src/platform.ts rename to js/polyengine/src/platform.ts index 2c36f572..c504ff60 100644 --- a/js/deltic/src/platform.ts +++ b/js/polyengine/src/platform.ts @@ -10,7 +10,7 @@ // authority for which verdict each is. import { errInvalidKey, errNotExtractable, errUnsupported, platformCall } from "./errors.ts"; -import { ComponentException } from "@deltic/runtime/embedder"; +import { ComponentException } from "@polyengine/runtime/embedder"; import { asBufferSource } from "./util.ts"; const subtle = globalThis.crypto.subtle; diff --git a/js/deltic/src/publicEncryption.ts b/js/polyengine/src/publicEncryption.ts similarity index 100% rename from js/deltic/src/publicEncryption.ts rename to js/polyengine/src/publicEncryption.ts diff --git a/js/deltic/src/rsaSignature.ts b/js/polyengine/src/rsaSignature.ts similarity index 100% rename from js/deltic/src/rsaSignature.ts rename to js/polyengine/src/rsaSignature.ts diff --git a/js/deltic/src/sha1Checked.ts b/js/polyengine/src/sha1Checked.ts similarity index 100% rename from js/deltic/src/sha1Checked.ts rename to js/polyengine/src/sha1Checked.ts diff --git a/js/deltic/src/signature.ts b/js/polyengine/src/signature.ts similarity index 99% rename from js/deltic/src/signature.ts rename to js/polyengine/src/signature.ts index c9f2ae71..f47e5e5d 100644 --- a/js/deltic/src/signature.ts +++ b/js/polyengine/src/signature.ts @@ -32,7 +32,7 @@ import { import { b64urlDecode } from "./platform.ts"; import { consumeUnwrapInput, type UnwrapInput, WrapInput } from "./wrapping.ts"; import { errOther } from "./errors.ts"; -import type { Stream } from "@deltic/runtime/embedder"; +import type { Stream } from "@polyengine/runtime/embedder"; const subtle = globalThis.crypto.subtle; diff --git a/js/deltic/src/util.ts b/js/polyengine/src/util.ts similarity index 98% rename from js/deltic/src/util.ts rename to js/polyengine/src/util.ts index 671b26f7..20eaf671 100644 --- a/js/deltic/src/util.ts +++ b/js/polyengine/src/util.ts @@ -8,7 +8,7 @@ // not jco's async-iterable convention, so this collector is written // directly against `Stream.read`, no jco-shape tolerance needed. -import type { Stream } from "@deltic/runtime/embedder"; +import type { Stream } from "@polyengine/runtime/embedder"; import { errInvalidKey } from "./errors.ts"; /** Read a guest `stream` to completion, copying chunks into one buffer. */ diff --git a/js/deltic/src/wrapping.ts b/js/polyengine/src/wrapping.ts similarity index 100% rename from js/deltic/src/wrapping.ts rename to js/polyengine/src/wrapping.ts diff --git a/js/deltic/tests/asserts.ts b/js/polyengine/tests/asserts.ts similarity index 93% rename from js/deltic/tests/asserts.ts rename to js/polyengine/tests/asserts.ts index df2f4302..eff40d82 100644 --- a/js/deltic/tests/asserts.ts +++ b/js/polyengine/tests/asserts.ts @@ -1,4 +1,4 @@ -// Minimal, dependency-free assertion helpers for the deltic-module tests. +// Minimal, dependency-free assertion helpers for the polyengine-module tests. export function assertEq(actual: T, expected: T, msg?: string): void { const ok = Object.is(actual, expected) || diff --git a/js/deltic/tests/families_test.ts b/js/polyengine/tests/families_test.ts similarity index 96% rename from js/deltic/tests/families_test.ts rename to js/polyengine/tests/families_test.ts index 326a90f6..fe8d9f95 100644 --- a/js/deltic/tests/families_test.ts +++ b/js/polyengine/tests/families_test.ts @@ -1,8 +1,8 @@ -// Focused known-answer tests for the deltic host module, one per family: +// Focused known-answer tests for the polyengine host module, one per family: // cipher/aes-cbc + aes-ctr, key-wrap/aes-kw, pbkdf2, ecdh, ecdsa, the RSA // signature verifiers, RSA-OAEP, and the sha1-checked decline. // -// Upstreamed from deltic's own port suite (lann/deltic +// Upstreamed from polyengine's own port suite (polymorph-components/polyengine // ports/webcrypto/tests/families_test.ts), with the vector tree resolved // RELATIVELY to this repository's own `conformance/vectors` rather than // through the port's absolute consumer-checkout path. @@ -15,7 +15,7 @@ // here; the vectors are read from disk. // // The exhaustive behavioral surface is the conformance suite itself -// (`just conformance-ct::run-deltic`); this file is the fast local check +// (`just conformance-ct::run-polyengine`); this file is the fast local check // that the module wires up and agrees with the published vectors. import { assertEq, assertRejects } from "./asserts.ts"; @@ -40,9 +40,9 @@ import { AgreementKeyOptions, } from "../src/mod.ts"; import { arrayStream } from "./testStream.ts"; -import { ComponentException } from "@deltic/runtime/embedder"; +import { ComponentException } from "@polyengine/runtime/embedder"; -// This file sits at js/deltic/tests/, so the repo root is three levels up +// This file sits at js/polyengine/tests/, so the repo root is three levels up // and the vector tree is in-repo — no absolute path, and no skip guard: // a missing vector file here is a broken checkout, not an optional input. const VECTORS_DIR = new URL("../../../conformance/vectors/", import.meta.url); @@ -212,7 +212,7 @@ Deno.test("ecdsa-sign: generate -> sign -> verify round-trip (P-384/SHA-384)", a const o = new SigningKeyOptions(); o.canSign(true); const [sk, vk] = await ecdsaSign.generateKey("p384-sha384", o); - const message = new TextEncoder().encode("deltic ecdsa round trip"); + const message = new TextEncoder().encode("polyengine ecdsa round trip"); const sig = await sk.sign(arrayStream(message)); assertEq(sig.length, 96); await vk.verify(arrayStream(message), sig); diff --git a/js/deltic/tests/testStream.ts b/js/polyengine/tests/testStream.ts similarity index 92% rename from js/deltic/tests/testStream.ts rename to js/polyengine/tests/testStream.ts index 9f8bc057..e877d078 100644 --- a/js/deltic/tests/testStream.ts +++ b/js/polyengine/tests/testStream.ts @@ -4,7 +4,7 @@ // runtime's full stream/store machinery for unit tests (the exec-model // integration test exercises the real `Stream` handle end-to-end). -import type { Stream } from "@deltic/runtime/embedder"; +import type { Stream } from "@polyengine/runtime/embedder"; export function arrayStream(bytes: Uint8Array): Stream { let offset = 0; diff --git a/justfile b/justfile index ff1c77f1..5266751e 100644 --- a/justfile +++ b/justfile @@ -36,12 +36,12 @@ ci: gha::rust-checks gha::conformance-checks gha::jco-checks gha::componentize-c # Run the fast pre-commit checks (fmt, clippy, WIT, Rust tests). check: fmt-check clippy validate-wit test -# js/deltic's own gate (type-check + the KAT unit suite) against the -# pinned deltic release URLs, with deno.lock frozen. The conformance leg +# js/polyengine's own gate (type-check + the KAT unit suite) against the +# pinned polyengine release URLs, with deno.lock frozen. The conformance leg # that exercises the same module exhaustively is -# `conformance-ct::run-deltic`. -deltic-module-check: - cd js/deltic && deno task check && deno task test +# `conformance-ct::run-polyengine`. +polyengine-module-check: + cd js/polyengine && deno task check && deno task test # Check formatting across all crates. fmt-check: From e6c6697574b2db4395515e33a1a6ca830c1a2f2d Mon Sep 17 00:00:00 2001 From: Lann Martin Date: Fri, 21 Aug 2026 23:34:13 -0400 Subject: [PATCH 2/2] conformance: matrix files re-sorted for the polyengine target ids The aggregate sorts columns and notes by target id; polyengine-* sorts after jco-* where deltic-* sorted before. Regenerated from the CI run's own result artifacts (just gha::update-matrices-from-ci 32548373731); matrix-check and compat-check --require-all pass locally, and the cell/count multiset is byte-identical either side of the reorder. --- conformance/driver-ct/matrix-signing.md | 60 ++++++++-------- conformance/driver-ct/matrix.md | 94 ++++++++++++------------- 2 files changed, 77 insertions(+), 77 deletions(-) diff --git a/conformance/driver-ct/matrix-signing.md b/conformance/driver-ct/matrix-signing.md index 57122bf7..fc107d65 100644 --- a/conformance/driver-ct/matrix-signing.md +++ b/conformance/driver-ct/matrix-signing.md @@ -1,34 +1,34 @@ # Test matrix -| Case | polyengine-browser | polyengine-deno | jco-browser | jco-firefox | jco-node | jco-webkit | wasmtime-rustcrypto | +| Case | jco-browser | jco-firefox | jco-node | jco-webkit | polyengine-browser | polyengine-deno | wasmtime-rustcrypto | | --- | --- | --- | --- | --- | --- | --- | --- | -| probe (16 cases) | 7 N/A, 9 pass | pass | 7 N/A, 9 pass | 7 N/A, 9 pass | pass | 7 N/A, 9 pass | pass | -| rsa-oaep-decrypt/decline/minting | pass | N/A | pass | pass | N/A | pass | N/A | -| rsa-oaep-sha256-2048 (80 cases) | N/A | 70 pass, 10 xfail | N/A | N/A | pass | N/A | pass | -| rsa-oaep-sha256-2688 (16 cases) | N/A | xfail | N/A | N/A | pass | N/A | pass | -| rsa-oaep-sha256-3072 (80 cases) | N/A | 70 pass, 10 xfail | N/A | N/A | pass | N/A | pass | -| rsa-oaep-sha256-4032 (12 cases) | N/A | xfail | N/A | N/A | pass | N/A | pass | -| rsa-oaep-sha256-4096 (80 cases) | N/A | 70 pass, 10 xfail | N/A | N/A | pass | N/A | pass | -| rsa-oaep-sha256-8192 (6 cases) | N/A | pass | N/A | N/A | pass | N/A | pass | -| rsa-oaep-sha384-2048 (74 cases) | N/A | 68 pass, 6 xfail | N/A | N/A | pass | N/A | pass | -| rsa-oaep-sha384-3072 (6 cases) | N/A | pass | N/A | N/A | pass | N/A | pass | -| rsa-oaep-sha384-3104 (6 cases) | N/A | xfail | N/A | N/A | pass | N/A | pass | -| rsa-oaep-sha384-4096 (6 cases) | N/A | pass | N/A | N/A | pass | N/A | pass | -| rsa-oaep-sha384-8192 (6 cases) | N/A | pass | N/A | N/A | pass | N/A | pass | -| rsa-oaep-sha512-2048 (72 cases) | N/A | 70 pass, 2 xfail | N/A | N/A | pass | N/A | pass | -| rsa-oaep-sha512-3072 (72 cases) | N/A | 68 pass, 4 xfail | N/A | N/A | pass | N/A | pass | -| rsa-oaep-sha512-4096 (78 cases) | N/A | 70 pass, 8 xfail | N/A | N/A | pass | N/A | pass | -| rsa-oaep-sha512-8192 (6 cases) | N/A | pass | N/A | N/A | pass | N/A | pass | -| rsa-sign/decline/minting | pass | N/A | pass | pass | N/A | pass | N/A | -| rsassa-pkcs1-v15-sha256-2048 (20 cases) | N/A | pass | N/A | N/A | pass | N/A | pass | -| rsassa-pkcs1-v15-sha256-3072 (18 cases) | N/A | pass | N/A | N/A | pass | N/A | pass | -| rsassa-pkcs1-v15-sha256-4096 (16 cases) | N/A | pass | N/A | N/A | pass | N/A | pass | -| rsassa-pkcs1-v15-sha384-2048 (16 cases) | N/A | pass | N/A | N/A | pass | N/A | pass | -| rsassa-pkcs1-v15-sha384-3072 (16 cases) | N/A | pass | N/A | N/A | pass | N/A | pass | -| rsassa-pkcs1-v15-sha384-4096 (16 cases) | N/A | pass | N/A | N/A | pass | N/A | pass | -| rsassa-pkcs1-v15-sha512-2048 (18 cases) | N/A | pass | N/A | N/A | pass | N/A | pass | -| rsassa-pkcs1-v15-sha512-3072 (18 cases) | N/A | pass | N/A | N/A | pass | N/A | pass | -| rsassa-pkcs1-v15-sha512-4096 (16 cases) | N/A | pass | N/A | N/A | pass | N/A | pass | +| probe (16 cases) | 7 N/A, 9 pass | 7 N/A, 9 pass | pass | 7 N/A, 9 pass | 7 N/A, 9 pass | pass | pass | +| rsa-oaep-decrypt/decline/minting | pass | pass | N/A | pass | pass | N/A | N/A | +| rsa-oaep-sha256-2048 (80 cases) | N/A | N/A | pass | N/A | N/A | 70 pass, 10 xfail | pass | +| rsa-oaep-sha256-2688 (16 cases) | N/A | N/A | pass | N/A | N/A | xfail | pass | +| rsa-oaep-sha256-3072 (80 cases) | N/A | N/A | pass | N/A | N/A | 70 pass, 10 xfail | pass | +| rsa-oaep-sha256-4032 (12 cases) | N/A | N/A | pass | N/A | N/A | xfail | pass | +| rsa-oaep-sha256-4096 (80 cases) | N/A | N/A | pass | N/A | N/A | 70 pass, 10 xfail | pass | +| rsa-oaep-sha256-8192 (6 cases) | N/A | N/A | pass | N/A | N/A | pass | pass | +| rsa-oaep-sha384-2048 (74 cases) | N/A | N/A | pass | N/A | N/A | 68 pass, 6 xfail | pass | +| rsa-oaep-sha384-3072 (6 cases) | N/A | N/A | pass | N/A | N/A | pass | pass | +| rsa-oaep-sha384-3104 (6 cases) | N/A | N/A | pass | N/A | N/A | xfail | pass | +| rsa-oaep-sha384-4096 (6 cases) | N/A | N/A | pass | N/A | N/A | pass | pass | +| rsa-oaep-sha384-8192 (6 cases) | N/A | N/A | pass | N/A | N/A | pass | pass | +| rsa-oaep-sha512-2048 (72 cases) | N/A | N/A | pass | N/A | N/A | 70 pass, 2 xfail | pass | +| rsa-oaep-sha512-3072 (72 cases) | N/A | N/A | pass | N/A | N/A | 68 pass, 4 xfail | pass | +| rsa-oaep-sha512-4096 (78 cases) | N/A | N/A | pass | N/A | N/A | 70 pass, 8 xfail | pass | +| rsa-oaep-sha512-8192 (6 cases) | N/A | N/A | pass | N/A | N/A | pass | pass | +| rsa-sign/decline/minting | pass | pass | N/A | pass | pass | N/A | N/A | +| rsassa-pkcs1-v15-sha256-2048 (20 cases) | N/A | N/A | pass | N/A | N/A | pass | pass | +| rsassa-pkcs1-v15-sha256-3072 (18 cases) | N/A | N/A | pass | N/A | N/A | pass | pass | +| rsassa-pkcs1-v15-sha256-4096 (16 cases) | N/A | N/A | pass | N/A | N/A | pass | pass | +| rsassa-pkcs1-v15-sha384-2048 (16 cases) | N/A | N/A | pass | N/A | N/A | pass | pass | +| rsassa-pkcs1-v15-sha384-3072 (16 cases) | N/A | N/A | pass | N/A | N/A | pass | pass | +| rsassa-pkcs1-v15-sha384-4096 (16 cases) | N/A | N/A | pass | N/A | N/A | pass | pass | +| rsassa-pkcs1-v15-sha512-2048 (18 cases) | N/A | N/A | pass | N/A | N/A | pass | pass | +| rsassa-pkcs1-v15-sha512-3072 (18 cases) | N/A | N/A | pass | N/A | N/A | pass | pass | +| rsassa-pkcs1-v15-sha512-4096 (16 cases) | N/A | N/A | pass | N/A | N/A | pass | pass | ## Failures @@ -123,10 +123,10 @@ None. ## Summary -- `polyengine-browser`: 761 N/A, 11 pass (772 total) -- `polyengine-deno`: 2 N/A, 686 pass, 84 xfail (772 total) - `jco-browser`: 761 N/A, 11 pass (772 total) - `jco-firefox`: 761 N/A, 11 pass (772 total) - `jco-node`: 2 N/A, 770 pass (772 total) - `jco-webkit`: 761 N/A, 11 pass (772 total) +- `polyengine-browser`: 761 N/A, 11 pass (772 total) +- `polyengine-deno`: 2 N/A, 686 pass, 84 xfail (772 total) - `wasmtime-rustcrypto`: 2 N/A, 770 pass (772 total) diff --git a/conformance/driver-ct/matrix.md b/conformance/driver-ct/matrix.md index 22171f13..8f3ba185 100644 --- a/conformance/driver-ct/matrix.md +++ b/conformance/driver-ct/matrix.md @@ -1,10 +1,10 @@ # Test matrix -| Case | composed | polyengine-browser | polyengine-deno | jco-browser | jco-firefox | jco-node | jco-webkit | wasmtime-rustcrypto | +| Case | composed | jco-browser | jco-firefox | jco-node | jco-webkit | polyengine-browser | polyengine-deno | wasmtime-rustcrypto | | --- | --- | --- | --- | --- | --- | --- | --- | --- | -| aes-cbc (254 cases) | pass | pass | pass | pass | pass | pass | 252 pass, 2 xfail | pass | +| aes-cbc (254 cases) | pass | pass | pass | pass | 252 pass, 2 xfail | pass | pass | pass | | aes-ctr (10 cases) | pass | pass | pass | pass | pass | pass | pass | pass | -| aes-gcm (485 cases) | pass | pass | 455 pass, 30 xfail | pass | pass | pass | pass | pass | +| aes-gcm (485 cases) | pass | pass | pass | pass | pass | pass | 455 pass, 30 xfail | pass | | aes-kw (110 cases) | pass | pass | pass | pass | pass | pass | pass | pass | | ecdh/contract/grants | pass | pass | pass | pass | pass | pass | pass | pass | | ecdh-p256 (1097 cases) | pass | pass | pass | pass | pass | pass | pass | pass | @@ -13,7 +13,7 @@ | ecdsa-p256-sha512 (816 cases) | pass | pass | pass | pass | pass | pass | pass | pass | | ecdsa-p384-sha384 (666 cases) | pass | pass | pass | pass | pass | pass | pass | pass | | ecdsa-p384-sha512 (778 cases) | pass | pass | pass | pass | pass | pass | pass | pass | -| ed25519 (336 cases) | pass | pass | pass | pass | pass | pass | 332 pass, 4 xfail | pass | +| ed25519 (336 cases) | pass | pass | pass | pass | 332 pass, 4 xfail | pass | pass | pass | | hkdf-sha1 (87 cases) | pass | pass | pass | pass | pass | pass | pass | pass | | hkdf-sha2/contract/grants | pass | pass | pass | pass | pass | pass | pass | pass | | hkdf-sha256 (86 cases) | pass | pass | pass | pass | pass | pass | pass | pass | @@ -29,7 +29,7 @@ | pbkdf2-sha256 (60 cases) | pass | pass | pass | pass | pass | pass | pass | pass | | pbkdf2-sha384 (58 cases) | pass | pass | pass | pass | pass | pass | pass | pass | | pbkdf2-sha512 (58 cases) | pass | pass | pass | pass | pass | pass | pass | pass | -| probe (58 cases) | pass | 1 N/A, 57 pass | 1 N/A, 54 pass, 3 xfail | 1 N/A, 57 pass | 1 N/A, 56 pass, 1 xfail | 1 N/A, 57 pass | 1 N/A, 54 pass, 3 xfail | pass | +| probe (58 cases) | pass | 1 N/A, 57 pass | 1 N/A, 56 pass, 1 xfail | 1 N/A, 57 pass | 1 N/A, 54 pass, 3 xfail | 1 N/A, 57 pass | 1 N/A, 54 pass, 3 xfail | pass | | rsa-pss-sha256-2048-salt0 (406 cases) | pass | pass | pass | pass | pass | pass | pass | pass | | rsa-pss-sha256-2048-salt32 (529 cases) | pass | pass | pass | pass | pass | pass | pass | pass | | rsa-pss-sha256-3072-salt32 (421 cases) | pass | pass | pass | pass | pass | pass | pass | pass | @@ -38,20 +38,20 @@ | rsa-pss-sha384-4096-salt48 (615 cases) | pass | pass | pass | pass | pass | pass | pass | pass | | rsa-pss-sha512-4096-salt32 (835 cases) | pass | pass | pass | pass | pass | pass | pass | pass | | rsa-pss-sha512-4096-salt64 (837 cases) | pass | pass | pass | pass | pass | pass | pass | pass | -| rsa-verify-8192/decline/importing | N/A | N/A | pass | N/A | N/A | N/A | pass | N/A | -| rsassa-pkcs1-v15-sha256-2048 (312 cases) | pass | pass | pass | pass | pass | pass | 311 pass, 1 xfail | pass | +| rsa-verify-8192/decline/importing | N/A | N/A | N/A | N/A | pass | N/A | pass | N/A | +| rsassa-pkcs1-v15-sha256-2048 (312 cases) | pass | pass | pass | pass | 311 pass, 1 xfail | pass | pass | pass | | rsassa-pkcs1-v15-sha256-3072 (307 cases) | pass | pass | pass | pass | pass | pass | pass | pass | -| rsassa-pkcs1-v15-sha256-4096 (301 cases) | pass | pass | pass | pass | pass | pass | 300 pass, 1 xfail | pass | -| rsassa-pkcs1-v15-sha256-8192 (301 cases) | pass | pass | N/A | pass | pass | pass | N/A | pass | +| rsassa-pkcs1-v15-sha256-4096 (301 cases) | pass | pass | pass | pass | 300 pass, 1 xfail | pass | pass | pass | +| rsassa-pkcs1-v15-sha256-8192 (301 cases) | pass | pass | pass | pass | N/A | pass | N/A | pass | | rsassa-pkcs1-v15-sha384-2048 (301 cases) | pass | pass | pass | pass | pass | pass | pass | pass | -| rsassa-pkcs1-v15-sha384-3072 (302 cases) | pass | pass | pass | pass | pass | pass | 301 pass, 1 xfail | pass | +| rsassa-pkcs1-v15-sha384-3072 (302 cases) | pass | pass | pass | pass | 301 pass, 1 xfail | pass | pass | pass | | rsassa-pkcs1-v15-sha384-4096 (302 cases) | pass | pass | pass | pass | pass | pass | pass | pass | | rsassa-pkcs1-v15-sha512-2048 (307 cases) | pass | pass | pass | pass | pass | pass | pass | pass | | rsassa-pkcs1-v15-sha512-3072 (308 cases) | pass | pass | pass | pass | pass | pass | pass | pass | -| rsassa-pkcs1-v15-sha512-4096 (302 cases) | pass | pass | pass | pass | pass | pass | 301 pass, 1 xfail | pass | +| rsassa-pkcs1-v15-sha512-4096 (302 cases) | pass | pass | pass | pass | 301 pass, 1 xfail | pass | pass | pass | | sha1-checked/decline/minting | N/A | pass | pass | pass | pass | pass | pass | N/A | | sha2 (963 cases) | pass | pass | pass | pass | pass | pass | pass | pass | -| x25519 (1587 cases) | pass | pass | pass | pass | 1524 pass, 63 xfail | pass | pass | pass | +| x25519 (1587 cases) | pass | pass | 1524 pass, 63 xfail | pass | pass | pass | pass | pass | ## Failures @@ -59,39 +59,6 @@ None. ## Expected failures -- `polyengine-deno` `aes-gcm/wycheproof/tc259/bytes`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 120 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `polyengine-deno` `aes-gcm/wycheproof/tc259/straddle`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 120 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `polyengine-deno` `aes-gcm/wycheproof/tc259/whole`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 120 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `polyengine-deno` `aes-gcm/wycheproof/tc260/bytes`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 160 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `polyengine-deno` `aes-gcm/wycheproof/tc260/straddle`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 160 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `polyengine-deno` `aes-gcm/wycheproof/tc260/whole`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 160 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `polyengine-deno` `aes-gcm/wycheproof/tc263/bytes`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 120 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `polyengine-deno` `aes-gcm/wycheproof/tc263/straddle`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 120 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `polyengine-deno` `aes-gcm/wycheproof/tc263/whole`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 120 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `polyengine-deno` `aes-gcm/wycheproof/tc264/bytes`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 160 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `polyengine-deno` `aes-gcm/wycheproof/tc264/straddle`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 160 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `polyengine-deno` `aes-gcm/wycheproof/tc264/whole`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 160 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `polyengine-deno` `aes-gcm/wycheproof/tc265/bytes`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 256 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `polyengine-deno` `aes-gcm/wycheproof/tc265/straddle`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 256 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `polyengine-deno` `aes-gcm/wycheproof/tc265/whole`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 256 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `polyengine-deno` `aes-gcm/wycheproof/tc266/bytes`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 512 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `polyengine-deno` `aes-gcm/wycheproof/tc266/straddle`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 512 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `polyengine-deno` `aes-gcm/wycheproof/tc266/whole`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 512 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `polyengine-deno` `aes-gcm/wycheproof/tc267/bytes`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 1024 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `polyengine-deno` `aes-gcm/wycheproof/tc267/straddle`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 1024 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `polyengine-deno` `aes-gcm/wycheproof/tc267/whole`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 1024 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `polyengine-deno` `aes-gcm/wycheproof/tc273/bytes`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 256 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `polyengine-deno` `aes-gcm/wycheproof/tc273/straddle`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 256 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `polyengine-deno` `aes-gcm/wycheproof/tc273/whole`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 256 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `polyengine-deno` `aes-gcm/wycheproof/tc274/bytes`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 512 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `polyengine-deno` `aes-gcm/wycheproof/tc274/straddle`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 512 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `polyengine-deno` `aes-gcm/wycheproof/tc274/whole`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 512 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `polyengine-deno` `aes-gcm/wycheproof/tc275/bytes`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 1024 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `polyengine-deno` `aes-gcm/wycheproof/tc275/straddle`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 1024 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `polyengine-deno` `aes-gcm/wycheproof/tc275/whole`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 1024 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `polyengine-deno` `probe/ctr-known-answers`: Deno WebCrypto: AES-CTR counter width limited to 32/64/128 bits (WIT window 1-128) (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `polyengine-deno` `probe/gcm-full-parameters`: Deno WebCrypto: AES-GCM decrypt refuses tags shorter than 128 bits (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) -- `polyengine-deno` `probe/gcm-nonce-window`: Deno WebCrypto: AES-GCM IV window is 96/128 bits (WIT window 12-128 bytes) (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) - `jco-firefox` `probe/ctr-known-answers`: Firefox NSS: AES-CTR refuses very narrow counter windows (the probe's 2-bit counter fails; WIT window 1-128) (https://github.com/polymorph-components/polymorph-webcrypto/issues/356) - `jco-firefox` `x25519/wycheproof-jwk/tc117`: Firefox NSS: low-order or non-canonical X25519 public key refused at import (contributory-behavior checks); other platforms import it and derive per RFC 7748 (https://github.com/polymorph-components/polymorph-webcrypto/issues/356) - `jco-firefox` `x25519/wycheproof-jwk/tc118`: Firefox NSS: low-order or non-canonical X25519 public key refused at import (contributory-behavior checks); other platforms import it and derive per RFC 7748 (https://github.com/polymorph-components/polymorph-webcrypto/issues/356) @@ -169,14 +136,47 @@ None. - `jco-webkit` `rsassa-pkcs1-v15-sha256-4096/wycheproof/tc245/whole`: WebKit WebCrypto: RSASSA verify accepts an unreduced signature (s >= n; upstream-invalid SignatureMalleability vector) (https://github.com/polymorph-components/polymorph-webcrypto/issues/360) - `jco-webkit` `rsassa-pkcs1-v15-sha384-3072/wycheproof/tc245/whole`: WebKit WebCrypto: RSASSA verify accepts an unreduced signature (s >= n; upstream-invalid SignatureMalleability vector) (https://github.com/polymorph-components/polymorph-webcrypto/issues/360) - `jco-webkit` `rsassa-pkcs1-v15-sha512-4096/wycheproof/tc245/whole`: WebKit WebCrypto: RSASSA verify accepts an unreduced signature (s >= n; upstream-invalid SignatureMalleability vector) (https://github.com/polymorph-components/polymorph-webcrypto/issues/360) +- `polyengine-deno` `aes-gcm/wycheproof/tc259/bytes`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 120 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `aes-gcm/wycheproof/tc259/straddle`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 120 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `aes-gcm/wycheproof/tc259/whole`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 120 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `aes-gcm/wycheproof/tc260/bytes`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 160 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `aes-gcm/wycheproof/tc260/straddle`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 160 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `aes-gcm/wycheproof/tc260/whole`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 160 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `aes-gcm/wycheproof/tc263/bytes`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 120 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `aes-gcm/wycheproof/tc263/straddle`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 120 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `aes-gcm/wycheproof/tc263/whole`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 120 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `aes-gcm/wycheproof/tc264/bytes`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 160 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `aes-gcm/wycheproof/tc264/straddle`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 160 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `aes-gcm/wycheproof/tc264/whole`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 160 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `aes-gcm/wycheproof/tc265/bytes`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 256 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `aes-gcm/wycheproof/tc265/straddle`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 256 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `aes-gcm/wycheproof/tc265/whole`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 256 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `aes-gcm/wycheproof/tc266/bytes`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 512 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `aes-gcm/wycheproof/tc266/straddle`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 512 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `aes-gcm/wycheproof/tc266/whole`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 512 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `aes-gcm/wycheproof/tc267/bytes`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 1024 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `aes-gcm/wycheproof/tc267/straddle`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 1024 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `aes-gcm/wycheproof/tc267/whole`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 1024 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `aes-gcm/wycheproof/tc273/bytes`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 256 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `aes-gcm/wycheproof/tc273/straddle`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 256 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `aes-gcm/wycheproof/tc273/whole`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 256 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `aes-gcm/wycheproof/tc274/bytes`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 512 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `aes-gcm/wycheproof/tc274/straddle`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 512 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `aes-gcm/wycheproof/tc274/whole`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 512 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `aes-gcm/wycheproof/tc275/bytes`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 1024 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `aes-gcm/wycheproof/tc275/straddle`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 1024 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `aes-gcm/wycheproof/tc275/whole`: Deno WebCrypto: AES-GCM IV window is 96/128 bits; this case uses 1024 (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `probe/ctr-known-answers`: Deno WebCrypto: AES-CTR counter width limited to 32/64/128 bits (WIT window 1-128) (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `probe/gcm-full-parameters`: Deno WebCrypto: AES-GCM decrypt refuses tags shorter than 128 bits (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) +- `polyengine-deno` `probe/gcm-nonce-window`: Deno WebCrypto: AES-GCM IV window is 96/128 bits (WIT window 12-128 bytes) (https://github.com/polymorph-components/polymorph-webcrypto/issues/351) ## Summary - `composed`: 2 N/A, 19089 pass (19091 total) -- `polyengine-browser`: 2 N/A, 19089 pass (19091 total) -- `polyengine-deno`: 302 N/A, 18756 pass, 33 xfail (19091 total) - `jco-browser`: 2 N/A, 19089 pass (19091 total) - `jco-firefox`: 2 N/A, 19025 pass, 64 xfail (19091 total) - `jco-node`: 2 N/A, 19089 pass (19091 total) - `jco-webkit`: 302 N/A, 18776 pass, 13 xfail (19091 total) +- `polyengine-browser`: 2 N/A, 19089 pass (19091 total) +- `polyengine-deno`: 302 N/A, 18756 pass, 33 xfail (19091 total) - `wasmtime-rustcrypto`: 2 N/A, 19089 pass (19091 total)