Skip to content

WebKit (macOS) platform gaps: the jco-webkit target's expected-fail ledger #360

Description

@lann

The jco-webkit conformance target (Playwright WebKit on macOS — Apple's crypto backend, the Safari proxy) diverges from the package contract in four classes, declared as expected failures (tracked debt) mirroring the Deno (#351) and Firefox (#356) ledgers, plus one capability gap:

Capability: 8192-bit RSA public keys refused at import. The whole rsassa-pkcs1-v15-sha256-8192 row fails at importKey, exactly Deno's gap — declared as the existing gated rsa-verify-8192 capability (the !rsa-verify-8192 decline case proves the refusal), not ledgered case-by-case.

RSASSA-PKCS1-v1_5: unreduced signatures accepted (4 cases: tc244/tc245 upstream-invalid SignatureMalleability vectors across 2048/3072/4096 rows). WebKit's verify accepts s ≥ n. The package pins rejection; every other target rejects. Signature verification is crypto, so this is not host-fixable under the portability ladder (no re-implementation of verify host-side) — platform bug to report upstream.

Ed25519: the empty message fails verification (4 cases: tc1, tc71, tc80, tc102 — upstream-valid vectors, including the RFC 8032 Test 1 known answer). WebKit rejects verify with an empty message where every other platform accepts.

Ed25519: signing is not the RFC 8032 deterministic form (probe/ed25519-private-format-imports): signing the RFC 8032 TEST 3 message with the TEST 3 seed imported via PKCS#8 yields a different 64-byte signature. Cause not yet isolated — randomized signing, or a seed mis-decode on import (the generate→sign→verify roundtrip probe passes, so WebKit's signatures verify under WebKit). Worth isolating before the upstream report.

AES-CBC: malformed ciphertexts decrypt (tc25/tc169 upstream-invalid empty-ciphertext vectors, probe/cbc-uniform-failure, and probe/cipher-wrap-uniform-failure — a malformed CBC wrap unwraps). Padding validation is crypto (padding-oracle territory), so host-side re-validation is out; platform bug to report upstream.

The compat matrix renders these as aspects (subrows) of their rows; the ledger entries in conformance/driver-ct/targets.toml name this issue.

  • Report the RSASSA, Ed25519, and AES-CBC behaviors to WebKit upstream, link the reports here.
  • Isolate the Ed25519 signing divergence (randomized vs mis-decoded seed).

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