Skip to content

Deno platform gaps: the deltic targets' expected-fail ledger #351

Description

@lann

The deltic runner legs (runtime-linked on stock Deno; lann/deltic#14 migration) run both conformance suites against Deno's crypto.subtle, which cannot serve five case classes the wasmtime/jco targets serve. All five are adversarially verified as raw-platform refusals (pure crypto.subtle probes, no host-module code in the loop — see lann/deltic#40 for the port and methodology):

class cases raw-platform evidence
imported 8192-bit RSA public keys unusable for verify 299 (rsassa-pkcs1-v15-sha256-8192/wycheproof, whole row minus 2 refusal-expected) importKey/verifySPKI cryptographic key data malformed (ring); Deno-minted 8192 keys verify fine
AES-GCM IV window limited to 96/128 bits 30 (10 tcIds × 3 stream variants, IVs 120–1024 bits) + probe/gcm-nonce-window, probe/gcm-full-parameters direct encrypt probes
AES-CTR counter width limited to 32/64/128 bits probe/ctr-known-answers direct probe
RSA-OAEP unusable at non-standard modulus sizes 34 (…-2688/4032/3104…wycheproof-misc rows, fully) pkcs8 import/decrypt refused
valid Constructed+EncryptionWithLabel OAEP ciphertexts refused 50 (tc33+ pairs at standard sizes) raw decryptOperationError; plain-label vectors (tc8-10) decrypt fine

These are capability gaps, not defects in the host module — the natural representation would be gated features (the sha1-checked precedent). That path is blocked by the census freeze: every affected row is cutover-frozen (census-fixture.lock pins names+features verbatim; census_test.rs forbids drift), so tagging them means amending the frozen fixture — a maintainer call, proposed below. Until then the deltic targets carry exact-match expected-fail entries referencing this issue; the aggregate's stale-detection fires loudly if a Deno/ring update starts serving any of them.

Proposal for the maintainer: bless a one-time, reviewed amendment of the two census fixtures adding capability tags to the whole-row classes (rsa-verify-8192, rsa-oaep-odd-modulus), converting those 333 entries to missing-features scheduling. The partial-row classes (GCM IV window, OAEP constructed+label) stay expected-fail either way, or need row splits.

Upstream candidates (operator's call to file): Deno/ring 8192 imported-key verify; Deno OAEP constructed-ciphertext refusal.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions