@blamejs/blamejs-shop 0.5.12 → 0.5.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +2 -0
- package/lib/asset-manifest.json +1 -1
- package/lib/vendor/MANIFEST.json +632 -416
- package/lib/vendor/blamejs/.clusterfuzzlite/Dockerfile +21 -10
- package/lib/vendor/blamejs/.clusterfuzzlite/build.sh +30 -9
- package/lib/vendor/blamejs/.github/dependabot.yml +8 -0
- package/lib/vendor/blamejs/.github/workflows/actions-lint.yml +3 -3
- package/lib/vendor/blamejs/.github/workflows/cflite_batch.yml +7 -2
- package/lib/vendor/blamejs/.github/workflows/cflite_pr.yml +7 -2
- package/lib/vendor/blamejs/.github/workflows/ci.yml +21 -21
- package/lib/vendor/blamejs/.github/workflows/codeql.yml +3 -3
- package/lib/vendor/blamejs/.github/workflows/npm-publish.yml +4 -4
- package/lib/vendor/blamejs/.github/workflows/release-container.yml +7 -7
- package/lib/vendor/blamejs/.github/workflows/scorecard.yml +3 -3
- package/lib/vendor/blamejs/.github/workflows/sha-to-tag-verify.yml +1 -1
- package/lib/vendor/blamejs/.gitignore +2 -0
- package/lib/vendor/blamejs/CHANGELOG.md +122 -0
- package/lib/vendor/blamejs/NOTICE +26 -1
- package/lib/vendor/blamejs/SECURITY.md +1 -1
- package/lib/vendor/blamejs/api-snapshot.json +207 -5
- package/lib/vendor/blamejs/docker/keycloak/realm-blamejs-test.json +29 -0
- package/lib/vendor/blamejs/examples/wiki/DEPLOY.md +1 -0
- package/lib/vendor/blamejs/examples/wiki/lib/build-app.js +31 -0
- package/lib/vendor/blamejs/examples/wiki/lib/source-comment-block-validator.js +109 -0
- package/lib/vendor/blamejs/examples/wiki/nginx.conf +106 -0
- package/lib/vendor/blamejs/examples/wiki/package-lock.json +1 -1
- package/lib/vendor/blamejs/examples/wiki/test/e2e.js +92 -0
- package/lib/vendor/blamejs/fuzz/asn1-der.fuzz.js +28 -0
- package/lib/vendor/blamejs/fuzz/cms-codec.fuzz.js +17 -0
- package/lib/vendor/blamejs/fuzz/link-header.fuzz.js +18 -0
- package/lib/vendor/blamejs/index.js +6 -0
- package/lib/vendor/blamejs/lib/a2a.js +4 -4
- package/lib/vendor/blamejs/lib/agent-idempotency.js +18 -2
- package/lib/vendor/blamejs/lib/agent-saga.js +36 -8
- package/lib/vendor/blamejs/lib/agent-snapshot.js +63 -6
- package/lib/vendor/blamejs/lib/app-shutdown.js +23 -20
- package/lib/vendor/blamejs/lib/archive-read.js +8 -0
- package/lib/vendor/blamejs/lib/archive-tar.js +12 -2
- package/lib/vendor/blamejs/lib/arg-parser.js +49 -5
- package/lib/vendor/blamejs/lib/asn1-der.js +12 -0
- package/lib/vendor/blamejs/lib/audit-sign.js +47 -1
- package/lib/vendor/blamejs/lib/audit.js +71 -8
- package/lib/vendor/blamejs/lib/auth/ciba.js +14 -2
- package/lib/vendor/blamejs/lib/auth/fido-mds3.js +58 -47
- package/lib/vendor/blamejs/lib/auth/jwt.js +34 -0
- package/lib/vendor/blamejs/lib/auth/oauth.js +90 -13
- package/lib/vendor/blamejs/lib/auth/oid4vci.js +20 -17
- package/lib/vendor/blamejs/lib/auth/openid-federation.js +214 -23
- package/lib/vendor/blamejs/lib/auth/saml.js +38 -20
- package/lib/vendor/blamejs/lib/auth/sd-jwt-vc.js +10 -4
- package/lib/vendor/blamejs/lib/backup/bundle.js +13 -3
- package/lib/vendor/blamejs/lib/backup/index.js +16 -5
- package/lib/vendor/blamejs/lib/backup/manifest.js +18 -5
- package/lib/vendor/blamejs/lib/base32.js +21 -0
- package/lib/vendor/blamejs/lib/break-glass.js +19 -10
- package/lib/vendor/blamejs/lib/bundler.js +5 -1
- package/lib/vendor/blamejs/lib/cache-status.js +3 -7
- package/lib/vendor/blamejs/lib/calendar.js +21 -1
- package/lib/vendor/blamejs/lib/cbor.js +12 -1
- package/lib/vendor/blamejs/lib/cert.js +29 -11
- package/lib/vendor/blamejs/lib/cli.js +94 -24
- package/lib/vendor/blamejs/lib/cloud-events.js +2 -2
- package/lib/vendor/blamejs/lib/cluster-provider-db.js +13 -3
- package/lib/vendor/blamejs/lib/codepoint-class.js +85 -0
- package/lib/vendor/blamejs/lib/compliance-ai-act-prohibited.js +8 -4
- package/lib/vendor/blamejs/lib/compliance-ai-act-transparency.js +19 -4
- package/lib/vendor/blamejs/lib/compliance-ai-act.js +6 -8
- package/lib/vendor/blamejs/lib/content-credentials.js +1 -1
- package/lib/vendor/blamejs/lib/content-digest.js +2 -1
- package/lib/vendor/blamejs/lib/cookies.js +13 -3
- package/lib/vendor/blamejs/lib/cose.js +31 -16
- package/lib/vendor/blamejs/lib/crypto-field.js +32 -0
- package/lib/vendor/blamejs/lib/crypto-oprf.js +11 -2
- package/lib/vendor/blamejs/lib/crypto-xwing.js +22 -4
- package/lib/vendor/blamejs/lib/crypto.js +314 -19
- package/lib/vendor/blamejs/lib/csp.js +11 -3
- package/lib/vendor/blamejs/lib/daemon.js +270 -24
- package/lib/vendor/blamejs/lib/dark-patterns.js +5 -2
- package/lib/vendor/blamejs/lib/db-declare-view.js +2 -2
- package/lib/vendor/blamejs/lib/db-query.js +34 -7
- package/lib/vendor/blamejs/lib/db.js +18 -6
- package/lib/vendor/blamejs/lib/dbsc.js +17 -0
- package/lib/vendor/blamejs/lib/dev.js +21 -2
- package/lib/vendor/blamejs/lib/dsr.js +157 -102
- package/lib/vendor/blamejs/lib/external-db.js +41 -2
- package/lib/vendor/blamejs/lib/file-upload.js +25 -7
- package/lib/vendor/blamejs/lib/flag-providers.js +27 -15
- package/lib/vendor/blamejs/lib/forms.js +113 -27
- package/lib/vendor/blamejs/lib/gate-contract.js +23 -10
- package/lib/vendor/blamejs/lib/gdpr-ropa.js +8 -1
- package/lib/vendor/blamejs/lib/guard-agent-registry.js +1 -1
- package/lib/vendor/blamejs/lib/guard-archive.js +2 -2
- package/lib/vendor/blamejs/lib/guard-cidr.js +27 -1
- package/lib/vendor/blamejs/lib/guard-graphql.js +30 -11
- package/lib/vendor/blamejs/lib/guard-html.js +26 -53
- package/lib/vendor/blamejs/lib/guard-image.js +24 -5
- package/lib/vendor/blamejs/lib/guard-imap-command.js +10 -2
- package/lib/vendor/blamejs/lib/guard-jmap.js +19 -3
- package/lib/vendor/blamejs/lib/guard-jwt.js +18 -2
- package/lib/vendor/blamejs/lib/guard-list-unsubscribe.js +2 -2
- package/lib/vendor/blamejs/lib/guard-managesieve-command.js +10 -2
- package/lib/vendor/blamejs/lib/guard-markdown.js +11 -24
- package/lib/vendor/blamejs/lib/guard-pdf.js +18 -2
- package/lib/vendor/blamejs/lib/guard-pop3-command.js +10 -2
- package/lib/vendor/blamejs/lib/guard-regex.js +8 -5
- package/lib/vendor/blamejs/lib/guard-svg.js +31 -32
- package/lib/vendor/blamejs/lib/guard-time.js +1 -1
- package/lib/vendor/blamejs/lib/guard-uuid.js +2 -2
- package/lib/vendor/blamejs/lib/html-balance.js +3 -3
- package/lib/vendor/blamejs/lib/http-client-cache.js +82 -4
- package/lib/vendor/blamejs/lib/http-client-cookie-jar.js +16 -1
- package/lib/vendor/blamejs/lib/http-client.js +39 -7
- package/lib/vendor/blamejs/lib/http-message-signature.js +35 -1
- package/lib/vendor/blamejs/lib/i18n-messageformat.js +31 -6
- package/lib/vendor/blamejs/lib/i18n.js +35 -21
- package/lib/vendor/blamejs/lib/incident-report.js +8 -1
- package/lib/vendor/blamejs/lib/ip-utils.js +11 -1
- package/lib/vendor/blamejs/lib/json-path.js +23 -1
- package/lib/vendor/blamejs/lib/jwk.js +20 -3
- package/lib/vendor/blamejs/lib/link-header.js +2 -1
- package/lib/vendor/blamejs/lib/log-stream-otlp-grpc.js +5 -1
- package/lib/vendor/blamejs/lib/log-stream-otlp.js +5 -1
- package/lib/vendor/blamejs/lib/log-stream.js +8 -3
- package/lib/vendor/blamejs/lib/mail-auth.js +123 -22
- package/lib/vendor/blamejs/lib/mail-bimi.js +1 -1
- package/lib/vendor/blamejs/lib/mail-bounce.js +8 -0
- package/lib/vendor/blamejs/lib/mail-crypto-pgp.js +46 -10
- package/lib/vendor/blamejs/lib/mail-dav.js +22 -3
- package/lib/vendor/blamejs/lib/mail-dkim.js +96 -30
- package/lib/vendor/blamejs/lib/mail-helo.js +6 -1
- package/lib/vendor/blamejs/lib/mail-scan.js +23 -16
- package/lib/vendor/blamejs/lib/mail-send-deliver.js +34 -8
- package/lib/vendor/blamejs/lib/mail-server-imap.js +3 -4
- package/lib/vendor/blamejs/lib/mail-server-managesieve.js +7 -11
- package/lib/vendor/blamejs/lib/mail-server-mx.js +93 -7
- package/lib/vendor/blamejs/lib/mail-server-registry.js +8 -2
- package/lib/vendor/blamejs/lib/mail.js +15 -5
- package/lib/vendor/blamejs/lib/metrics.js +268 -63
- package/lib/vendor/blamejs/lib/middleware/age-gate.js +7 -1
- package/lib/vendor/blamejs/lib/middleware/asyncapi-serve.js +1 -1
- package/lib/vendor/blamejs/lib/middleware/body-parser.js +19 -4
- package/lib/vendor/blamejs/lib/middleware/bot-guard.js +5 -9
- package/lib/vendor/blamejs/lib/middleware/csp-report.js +40 -8
- package/lib/vendor/blamejs/lib/middleware/csrf-protect.js +24 -10
- package/lib/vendor/blamejs/lib/middleware/dpop.js +10 -5
- package/lib/vendor/blamejs/lib/middleware/index.js +6 -1
- package/lib/vendor/blamejs/lib/middleware/nel.js +1 -1
- package/lib/vendor/blamejs/lib/middleware/openapi-serve.js +1 -1
- package/lib/vendor/blamejs/lib/middleware/rate-limit.js +12 -1
- package/lib/vendor/blamejs/lib/middleware/require-bound-key.js +1 -1
- package/lib/vendor/blamejs/lib/middleware/scim-server.js +1 -1
- package/lib/vendor/blamejs/lib/middleware/tus-upload.js +6 -2
- package/lib/vendor/blamejs/lib/mtls-ca.js +18 -2
- package/lib/vendor/blamejs/lib/network-dns-resolver.js +11 -1
- package/lib/vendor/blamejs/lib/network-dns.js +21 -2
- package/lib/vendor/blamejs/lib/network-tls.js +69 -7
- package/lib/vendor/blamejs/lib/nonce-store.js +9 -1
- package/lib/vendor/blamejs/lib/object-store/gcs.js +7 -0
- package/lib/vendor/blamejs/lib/object-store/sigv4.js +31 -0
- package/lib/vendor/blamejs/lib/observability-otlp-exporter.js +1 -1
- package/lib/vendor/blamejs/lib/outbox.js +1 -1
- package/lib/vendor/blamejs/lib/parsers/safe-ini.js +9 -1
- package/lib/vendor/blamejs/lib/parsers/safe-toml.js +10 -1
- package/lib/vendor/blamejs/lib/permissions.js +6 -3
- package/lib/vendor/blamejs/lib/pid-probe.js +55 -0
- package/lib/vendor/blamejs/lib/pqc-agent.js +8 -1
- package/lib/vendor/blamejs/lib/pqc-software.js +3 -3
- package/lib/vendor/blamejs/lib/pubsub.js +20 -9
- package/lib/vendor/blamejs/lib/queue-local.js +8 -1
- package/lib/vendor/blamejs/lib/queue-redis.js +5 -0
- package/lib/vendor/blamejs/lib/redact.js +54 -0
- package/lib/vendor/blamejs/lib/restore-bundle.js +10 -2
- package/lib/vendor/blamejs/lib/restore.js +19 -0
- package/lib/vendor/blamejs/lib/retention.js +12 -4
- package/lib/vendor/blamejs/lib/router.js +60 -6
- package/lib/vendor/blamejs/lib/safe-buffer.js +69 -0
- package/lib/vendor/blamejs/lib/safe-decompress.js +8 -2
- package/lib/vendor/blamejs/lib/safe-dns.js +25 -20
- package/lib/vendor/blamejs/lib/safe-ical.js +7 -3
- package/lib/vendor/blamejs/lib/safe-mime.js +12 -1
- package/lib/vendor/blamejs/lib/safe-object.js +80 -0
- package/lib/vendor/blamejs/lib/safe-path.js +52 -4
- package/lib/vendor/blamejs/lib/safe-redirect.js +10 -2
- package/lib/vendor/blamejs/lib/safe-schema.js +4 -1
- package/lib/vendor/blamejs/lib/safe-sieve.js +33 -1
- package/lib/vendor/blamejs/lib/safe-sql.js +88 -0
- package/lib/vendor/blamejs/lib/safe-vcard.js +7 -3
- package/lib/vendor/blamejs/lib/scheduler.js +8 -1
- package/lib/vendor/blamejs/lib/security-assert.js +6 -6
- package/lib/vendor/blamejs/lib/self-update-standalone-verifier.js +74 -27
- package/lib/vendor/blamejs/lib/self-update.js +517 -87
- package/lib/vendor/blamejs/lib/server-timing.js +2 -4
- package/lib/vendor/blamejs/lib/session.js +34 -12
- package/lib/vendor/blamejs/lib/sql.js +15 -1
- package/lib/vendor/blamejs/lib/ssrf-guard.js +52 -0
- package/lib/vendor/blamejs/lib/static.js +55 -13
- package/lib/vendor/blamejs/lib/storage.js +8 -2
- package/lib/vendor/blamejs/lib/subject.js +6 -1
- package/lib/vendor/blamejs/lib/tenant-quota.js +52 -13
- package/lib/vendor/blamejs/lib/tls-exporter.js +3 -3
- package/lib/vendor/blamejs/lib/tsa.js +34 -13
- package/lib/vendor/blamejs/lib/uri-template.js +8 -1
- package/lib/vendor/blamejs/lib/vault/index.js +13 -0
- package/lib/vendor/blamejs/lib/vc.js +44 -5
- package/lib/vendor/blamejs/lib/vendor/MANIFEST.json +26 -26
- package/lib/vendor/blamejs/lib/vendor/noble-ciphers.cjs +792 -1
- package/lib/vendor/blamejs/lib/vendor/noble-curves.cjs +3443 -1
- package/lib/vendor/blamejs/lib/vendor/noble-post-quantum.cjs +2737 -1
- package/lib/vendor/blamejs/lib/vendor/pki.cjs +39550 -13
- package/lib/vendor/blamejs/lib/vendor/public-suffix-list.dat +55 -53
- package/lib/vendor/blamejs/lib/vendor/public-suffix-list.data.js +5551 -5554
- package/lib/vendor/blamejs/lib/vendor/simplewebauthn-server.cjs +22459 -32
- package/lib/vendor/blamejs/lib/watcher.js +89 -17
- package/lib/vendor/blamejs/lib/webhook-dispatcher.js +25 -3
- package/lib/vendor/blamejs/lib/webhook.js +12 -2
- package/lib/vendor/blamejs/lib/ws-client.js +32 -1
- package/lib/vendor/blamejs/lib/xml-c14n.js +29 -1
- package/lib/vendor/blamejs/oss-fuzz/projects/blamejs/Dockerfile +1 -1
- package/lib/vendor/blamejs/package-lock.json +2 -2
- package/lib/vendor/blamejs/package.json +1 -1
- package/lib/vendor/blamejs/release-notes/v0.16.x.json +1462 -0
- package/lib/vendor/blamejs/release-notes/v0.17.0.json +31 -0
- package/lib/vendor/blamejs/release-notes/v0.17.1.json +31 -0
- package/lib/vendor/blamejs/release-notes/v0.17.10.json +30 -0
- package/lib/vendor/blamejs/release-notes/v0.17.11.json +22 -0
- package/lib/vendor/blamejs/release-notes/v0.17.12.json +18 -0
- package/lib/vendor/blamejs/release-notes/v0.17.13.json +77 -0
- package/lib/vendor/blamejs/release-notes/v0.17.14.json +40 -0
- package/lib/vendor/blamejs/release-notes/v0.17.15.json +18 -0
- package/lib/vendor/blamejs/release-notes/v0.17.16.json +27 -0
- package/lib/vendor/blamejs/release-notes/v0.17.17.json +31 -0
- package/lib/vendor/blamejs/release-notes/v0.17.18.json +18 -0
- package/lib/vendor/blamejs/release-notes/v0.17.19.json +18 -0
- package/lib/vendor/blamejs/release-notes/v0.17.2.json +26 -0
- package/lib/vendor/blamejs/release-notes/v0.17.20.json +43 -0
- package/lib/vendor/blamejs/release-notes/v0.17.21.json +26 -0
- package/lib/vendor/blamejs/release-notes/v0.17.22.json +18 -0
- package/lib/vendor/blamejs/release-notes/v0.17.3.json +43 -0
- package/lib/vendor/blamejs/release-notes/v0.17.4.json +35 -0
- package/lib/vendor/blamejs/release-notes/v0.17.5.json +26 -0
- package/lib/vendor/blamejs/release-notes/v0.17.6.json +26 -0
- package/lib/vendor/blamejs/release-notes/v0.17.7.json +35 -0
- package/lib/vendor/blamejs/release-notes/v0.17.8.json +22 -0
- package/lib/vendor/blamejs/release-notes/v0.17.9.json +26 -0
- package/lib/vendor/blamejs/scripts/validate-source-comment-blocks.js +4 -0
- package/lib/vendor/blamejs/scripts/vendor-update.sh +293 -9
- package/lib/vendor/blamejs/socket.yml +94 -0
- package/lib/vendor/blamejs/test/00-primitives.js +605 -0
- package/lib/vendor/blamejs/test/helpers/drivers.js +12 -9
- package/lib/vendor/blamejs/test/integration/audit-stack-mysql.test.js +90 -1
- package/lib/vendor/blamejs/test/integration/audit-stack-postgres.test.js +122 -1
- package/lib/vendor/blamejs/test/integration/data-layer-mysql.test.js +30 -0
- package/lib/vendor/blamejs/test/integration/data-layer-pg.test.js +29 -0
- package/lib/vendor/blamejs/test/integration/dsr-cluster-mysql.test.js +479 -0
- package/lib/vendor/blamejs/test/integration/dsr-cluster-pg.test.js +487 -0
- package/lib/vendor/blamejs/test/integration/federation-auth.test.js +313 -5
- package/lib/vendor/blamejs/test/integration/mail-dkim.test.js +80 -0
- package/lib/vendor/blamejs/test/integration/openid-federation-chain.test.js +275 -0
- package/lib/vendor/blamejs/test/integration/webhook-dispatcher-pg.test.js +96 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/a2a-tasks.test.js +401 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/acme.test.js +1649 -2
- package/lib/vendor/blamejs/test/layer-0-primitives/age-gate.test.js +33 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/agent-idempotency.test.js +0 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/agent-saga.test.js +60 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/agent-snapshot.test.js +524 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/api-encrypt.test.js +891 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/app-shutdown.test.js +128 -1
- package/lib/vendor/blamejs/test/layer-0-primitives/archive-adapters.test.js +271 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/archive-read.test.js +628 -1
- package/lib/vendor/blamejs/test/layer-0-primitives/archive-tar-read.test.js +0 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/archive-wrap.test.js +227 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/arg-parser.test.js +15 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/asn1-der.test.js +73 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/atomic-file.test.js +114 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/audit-sign-anchor.test.js +141 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/audit-tools.test.js +624 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/audit.test.js +769 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/auth-jwt-defenses.test.js +436 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/auth-oauth.test.js +1697 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/auth-oid4vp.test.js +495 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/auth-password.test.js +500 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/auth-saml.test.js +1809 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/auth-status-list.test.js +243 -1
- package/lib/vendor/blamejs/test/layer-0-primitives/backup-index.test.js +2226 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/backup-manifest-signature.test.js +183 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/base32.test.js +105 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/break-glass.test.js +693 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/cache.test.js +603 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/calendar.test.js +557 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/case-insensitive-security-token-guard.test.js +214 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/cbor.test.js +25 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/cert.test.js +843 -6
- package/lib/vendor/blamejs/test/layer-0-primitives/ciba-authreqid-binding.test.js +77 -2
- package/lib/vendor/blamejs/test/layer-0-primitives/ciba.test.js +866 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/clear-site-data.test.js +18 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/cli-erase.test.js +19 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/cli.test.js +2790 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/cluster-lease-renewal-ttl.test.js +114 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/cluster.test.js +1032 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/cms-codec.test.js +575 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/codebase-patterns.test.js +739 -1
- package/lib/vendor/blamejs/test/layer-0-primitives/codepoint-class.test.js +8 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/compliance-ai-act.test.js +194 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/compliance-lifecycle-proto-key.test.js +104 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/compliance-sanctions.test.js +254 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/content-credentials.test.js +613 -3
- package/lib/vendor/blamejs/test/layer-0-primitives/cookies.test.js +140 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/cose.test.js +407 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/crypto-adversarial.test.js +352 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/crypto-field-derived-hash.test.js +32 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/crypto-field.test.js +575 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/crypto-hash-files-parallel.test.js +10 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/crypto-hash-stream.test.js +24 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/crypto-oprf.test.js +17 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/crypto-spki-pin.test.js +183 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/crypto-xwing.test.js +48 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/crypto.test.js +345 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/csp-report.test.js +58 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/csv.test.js +48 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/daemon.test.js +459 -1
- package/lib/vendor/blamejs/test/layer-0-primitives/dark-patterns.test.js +19 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/db-query.test.js +1019 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/db-raw-residency-gate.test.js +77 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/db.test.js +1621 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/ddl-change-control.test.js +462 -3
- package/lib/vendor/blamejs/test/layer-0-primitives/dnssec.test.js +323 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/dpop-middleware-verify.test.js +562 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/dsr.test.js +901 -1
- package/lib/vendor/blamejs/test/layer-0-primitives/dual-control.test.js +249 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/external-db-migrate.test.js +561 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/external-db.test.js +1214 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/fal.test.js +21 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/fedcm-dbsc.test.js +46 -20
- package/lib/vendor/blamejs/test/layer-0-primitives/federation-vc-suite.test.js +147 -3
- package/lib/vendor/blamejs/test/layer-0-primitives/fido-mds3.test.js +907 -38
- package/lib/vendor/blamejs/test/layer-0-primitives/file-upload-content-safety-skip-audit.test.js +29 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/file-upload.test.js +1135 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/flag.test.js +30 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/forms.test.js +747 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/gate-contract.test.js +1855 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/gdpr-ropa.test.js +30 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/guard-archive.test.js +86 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/guard-auth.test.js +117 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/guard-cidr.test.js +151 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/guard-domain.test.js +422 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/guard-filename.test.js +424 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/{guard-gate-disposition-coverage.test.js → guard-gate-disposition.test.js} +1 -1
- package/lib/vendor/blamejs/test/layer-0-primitives/guard-graphql.test.js +340 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/guard-html.test.js +29 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/guard-idempotency-key.test.js +28 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/guard-image.test.js +519 -45
- package/lib/vendor/blamejs/test/layer-0-primitives/guard-imap-command.test.js +0 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/guard-jmap.test.js +51 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/guard-jsonpath.test.js +66 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/guard-jwt.test.js +436 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/guard-managesieve-command.test.js +25 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/guard-markdown.test.js +16 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/guard-mime.test.js +86 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/guard-oauth.test.js +140 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/guard-pdf.test.js +80 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/guard-pop3-command.test.js +27 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/guard-regex.test.js +99 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/guard-shell.test.js +76 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/{guard-sql-coverage.test.js → guard-sql.test.js} +3 -3
- package/lib/vendor/blamejs/test/layer-0-primitives/guard-svg.test.js +524 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/guard-template.test.js +71 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/guard-time.test.js +92 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/guard-uuid.test.js +86 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/html-balance.test.js +38 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/http-client-cache-authorization.test.js +347 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/http-client-cache.test.js +908 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/http-client.test.js +2874 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/http-message-signature.test.js +643 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/i18n-messageformat.test.js +38 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/i18n.test.js +1153 -1
- package/lib/vendor/blamejs/test/layer-0-primitives/idempotency-key.test.js +494 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/ip-utils.test.js +30 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/jsdoc-example-execution.test.js +177 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/json-path.test.js +103 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/json-schema.test.js +214 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/jwk.test.js +41 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/jwt-external.test.js +276 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/keychain.test.js +0 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/log-stream.test.js +241 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/log.test.js +106 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/mail-agent.test.js +441 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/mail-auth.test.js +2136 -4
- package/lib/vendor/blamejs/test/layer-0-primitives/mail-bimi.test.js +759 -12
- package/lib/vendor/blamejs/test/layer-0-primitives/mail-bounce.test.js +811 -1
- package/lib/vendor/blamejs/test/layer-0-primitives/mail-crypto-pgp-experimental.test.js +401 -3
- package/lib/vendor/blamejs/test/layer-0-primitives/mail-crypto-pgp.test.js +751 -8
- package/lib/vendor/blamejs/test/layer-0-primitives/mail-crypto-smime.test.js +864 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/mail-crypto.test.js +110 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/mail-dav.test.js +830 -1
- package/lib/vendor/blamejs/test/layer-0-primitives/mail-deploy.test.js +635 -86
- package/lib/vendor/blamejs/test/layer-0-primitives/mail-dkim.test.js +818 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/mail-helo.test.js +27 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/mail-scan.test.js +199 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/mail-send-deliver.test.js +686 -2
- package/lib/vendor/blamejs/test/layer-0-primitives/mail-server-imap.test.js +778 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/mail-server-jmap.test.js +1438 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/mail-server-managesieve.test.js +449 -6
- package/lib/vendor/blamejs/test/layer-0-primitives/mail-server-mx.test.js +773 -2
- package/lib/vendor/blamejs/test/layer-0-primitives/mail-server-pop3.test.js +623 -3
- package/lib/vendor/blamejs/test/layer-0-primitives/mail-server-rate-limit.test.js +55 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/mail-server-registry.test.js +13 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/mail-server-submission.test.js +877 -1
- package/lib/vendor/blamejs/test/layer-0-primitives/mail-sieve.test.js +326 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/mail-store-fts.test.js +55 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/mail-store.test.js +242 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/mail.test.js +1596 -2
- package/lib/vendor/blamejs/test/layer-0-primitives/mcp.test.js +440 -4
- package/lib/vendor/blamejs/test/layer-0-primitives/metrics-snapshot.test.js +89 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/metrics.test.js +1230 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/middleware-assetlinks.test.js +113 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/middleware-body-parser.test.js +1169 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/middleware-bot-disclose.test.js +123 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/middleware-cookies.test.js +108 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/middleware-gpc.test.js +121 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/middleware-headers.test.js +163 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/middleware-host-allowlist.test.js +154 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/middleware-require-content-type.test.js +127 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/{middleware-tus-upload-coverage.test.js → middleware-tus-upload.test.js} +45 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/middleware-web-app-manifest.test.js +132 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/mtls-ca-crl-fingerprint-only.test.js +92 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/network-dns-resolver.test.js +65 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/network-dns.test.js +1727 -1
- package/lib/vendor/blamejs/test/layer-0-primitives/network-nts.test.js +699 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/network-smtp-policy.test.js +1181 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/network-tls.test.js +1876 -3
- package/lib/vendor/blamejs/test/layer-0-primitives/network.test.js +32 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/nonce-store-enforce-replay-nonboolean.test.js +81 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/ntp-check.test.js +122 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/observability-tracing.test.js +378 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/observability.test.js +77 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/oid4vci.test.js +1016 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/openid-federation.test.js +946 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/outbox.test.js +818 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/own-property-membership-guards.test.js +109 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/parsers-safe-toml.test.js +543 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/{parsers-safe-yaml-coverage.test.js → parsers-safe-yaml.test.js} +2 -2
- package/lib/vendor/blamejs/test/layer-0-primitives/parsers-standalone.test.js +73 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/passkey.test.js +649 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/permissions.test.js +524 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/pqc-agent-curve.test.js +22 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/pubsub.test.js +295 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/queue-flow-repeat.test.js +36 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/queue.test.js +83 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/rate-limit-xff-spoofing.test.js +34 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/redact.test.js +1031 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/request-helpers.test.js +94 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/require-bound-key.test.js +401 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/restore-empty-manifest-wipe.test.js +154 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/retention.test.js +600 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/router-host-path-injection.test.js +231 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/router-tls0rtt.test.js +21 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/router.test.js +1277 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/safe-async.test.js +133 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/safe-buffer-linear-scans.test.js +14 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/safe-buffer.test.js +80 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/safe-decompress.test.js +28 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/safe-dns.test.js +245 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/safe-ical.test.js +32 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/safe-ini.test.js +376 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/safe-json.test.js +175 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/safe-mime.test.js +518 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/safe-object.test.js +62 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/safe-path.test.js +30 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/safe-schema.test.js +104 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/safe-sql.test.js +142 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/safe-url.test.js +112 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/safe-vcard.test.js +26 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/scheduler.test.js +157 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/scim-server.test.js +396 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/sd-jwt-vc.test.js +930 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/security-assert.test.js +755 -82
- package/lib/vendor/blamejs/test/layer-0-primitives/self-update.test.js +1053 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/session-device-binding.test.js +200 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/session-strict-binding-missing-failclosed.test.js +110 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/sigv4-bucket-ops.test.js +636 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/sql-offset-without-limit.test.js +94 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/sql.test.js +1190 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/ssrf-guard.test.js +21 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/static.test.js +850 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/storage-presigned-url.test.js +146 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/storage.test.js +621 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/subject.test.js +47 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/template.test.js +582 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/tenant-quota.test.js +587 -25
- package/lib/vendor/blamejs/test/layer-0-primitives/time.test.js +11 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/tsa.test.js +524 -63
- package/lib/vendor/blamejs/test/layer-0-primitives/uri-template.test.js +27 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/vault-rotate.test.js +866 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/vault.test.js +74 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/vc.test.js +215 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/watcher.test.js +550 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/webhook-dispatcher.test.js +388 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/webhook.test.js +262 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/websocket.test.js +1294 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/ws-client.test.js +629 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/xml-c14n-attr-normalization.test.js +164 -0
- package/lib/vendor/blamejs/test/smoke.js +2 -0
- package/package.json +1 -1
- package/lib/vendor/blamejs/release-notes/v0.16.0.json +0 -44
- package/lib/vendor/blamejs/release-notes/v0.16.1.json +0 -36
- package/lib/vendor/blamejs/release-notes/v0.16.2.json +0 -71
- package/lib/vendor/blamejs/release-notes/v0.16.3.json +0 -71
- package/lib/vendor/blamejs/test/layer-0-primitives/acme-coverage.test.js +0 -441
- package/lib/vendor/blamejs/test/layer-0-primitives/auth-oauth-coverage.test.js +0 -482
- package/lib/vendor/blamejs/test/layer-0-primitives/auth-saml-coverage.test.js +0 -671
- package/lib/vendor/blamejs/test/layer-0-primitives/backup-index-coverage.test.js +0 -690
- package/lib/vendor/blamejs/test/layer-0-primitives/cli-coverage.test.js +0 -238
- package/lib/vendor/blamejs/test/layer-0-primitives/content-credentials-coverage.test.js +0 -319
- package/lib/vendor/blamejs/test/layer-0-primitives/keychain-coverage.test.js +0 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/mail-auth-coverage.test.js +0 -437
- package/lib/vendor/blamejs/test/layer-0-primitives/mcp-coverage.test.js +0 -443
- package/lib/vendor/blamejs/test/layer-0-primitives/metrics-coverage.test.js +0 -395
- package/lib/vendor/blamejs/test/layer-0-primitives/network-smtp-policy-coverage.test.js +0 -565
- package/lib/vendor/blamejs/test/layer-0-primitives/router-coverage.test.js +0 -592
- package/lib/vendor/blamejs/test/layer-0-primitives/sql-coverage.test.js +0 -422
- package/lib/vendor/blamejs/test/layer-0-primitives/test-coverage.test.js +0 -573
|
@@ -214,7 +214,582 @@ function testOidTableShape() {
|
|
|
214
214
|
b.cms.OID.kemri === "1.2.840.113549.1.9.16.13.3");
|
|
215
215
|
}
|
|
216
216
|
|
|
217
|
+
var SIGNED_DATA_OID = "1.2.840.113549.1.7.2";
|
|
218
|
+
|
|
219
|
+
function _wrapContentInfo(oidStr, innerDer) {
|
|
220
|
+
// Build a ContentInfo SEQUENCE { contentType OID, [0] EXPLICIT innerDer }
|
|
221
|
+
// directly so we can hand-craft SignedData bodies that the encoder would
|
|
222
|
+
// never emit — driving parseSignedData's structural-refusal branches.
|
|
223
|
+
return asn1.writeNode(0x30, Buffer.concat([
|
|
224
|
+
asn1.writeOid(oidStr),
|
|
225
|
+
asn1.writeContextExplicit(0, innerDer),
|
|
226
|
+
]));
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
// ---- encodeSignedData entry-point / opts validation --------------------
|
|
230
|
+
|
|
231
|
+
function testEncodeSignedDataRefusesMissingOpts() {
|
|
232
|
+
var threw = null;
|
|
233
|
+
try { b.cms.encodeSignedData(); }
|
|
234
|
+
catch (e) { threw = e.code; }
|
|
235
|
+
check("encodeSignedData() with no opts refused with cms/bad-opts",
|
|
236
|
+
threw === "cms/bad-opts");
|
|
237
|
+
var threw2 = null;
|
|
238
|
+
try { b.cms.encodeSignedData("nope"); }
|
|
239
|
+
catch (e) { threw2 = e.code; }
|
|
240
|
+
check("encodeSignedData(non-object) refused with cms/bad-opts",
|
|
241
|
+
threw2 === "cms/bad-opts");
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
function testEncodeSignedDataRefusesNonBufferEncap() {
|
|
245
|
+
var kp = pqcSoftware.ml_dsa_65.keygen();
|
|
246
|
+
var threw = null;
|
|
247
|
+
try {
|
|
248
|
+
b.cms.encodeSignedData({
|
|
249
|
+
encapContent: "not a buffer",
|
|
250
|
+
signers: [{ certificate: _minimalCertDer(), secretKey: kp.secretKey, sigAlg: "ML-DSA-65" }],
|
|
251
|
+
});
|
|
252
|
+
} catch (e) { threw = e.code; }
|
|
253
|
+
check("encodeSignedData with non-Buffer encapContent refused with cms/bad-encap",
|
|
254
|
+
threw === "cms/bad-encap");
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
function testEncodeSignedDataRefusesNonObjectSigner() {
|
|
258
|
+
var threw = null;
|
|
259
|
+
try {
|
|
260
|
+
b.cms.encodeSignedData({ encapContent: Buffer.from("p"), signers: [null] });
|
|
261
|
+
} catch (e) { threw = e.code; }
|
|
262
|
+
check("encodeSignedData with a non-object signer refused with cms/bad-signer",
|
|
263
|
+
threw === "cms/bad-signer");
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
function testEncodeSignedDataRefusesSignerWithoutCert() {
|
|
267
|
+
var kp = pqcSoftware.ml_dsa_65.keygen();
|
|
268
|
+
var threw = null;
|
|
269
|
+
try {
|
|
270
|
+
b.cms.encodeSignedData({
|
|
271
|
+
encapContent: Buffer.from("p"),
|
|
272
|
+
signers: [{ secretKey: kp.secretKey, sigAlg: "ML-DSA-65" }],
|
|
273
|
+
});
|
|
274
|
+
} catch (e) { threw = e.code; }
|
|
275
|
+
check("signer missing certificate Buffer refused with cms/bad-signer-cert",
|
|
276
|
+
threw === "cms/bad-signer-cert");
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
function testEncodeSignedDataRefusesNonUint8SecretKey() {
|
|
280
|
+
var threw = null;
|
|
281
|
+
try {
|
|
282
|
+
b.cms.encodeSignedData({
|
|
283
|
+
encapContent: Buffer.from("p"),
|
|
284
|
+
signers: [{ certificate: _minimalCertDer(), secretKey: [1, 2, 3], sigAlg: "ML-DSA-65" }],
|
|
285
|
+
});
|
|
286
|
+
} catch (e) { threw = e.code; }
|
|
287
|
+
check("signer.secretKey not a Uint8Array refused with cms/bad-signer-key",
|
|
288
|
+
threw === "cms/bad-signer-key");
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
function testEncodeSignedDataRefusesNonBufferCertificate() {
|
|
292
|
+
var kp = pqcSoftware.ml_dsa_65.keygen();
|
|
293
|
+
var threw = null;
|
|
294
|
+
try {
|
|
295
|
+
b.cms.encodeSignedData({
|
|
296
|
+
encapContent: Buffer.from("p"),
|
|
297
|
+
certificates: ["not a buffer"],
|
|
298
|
+
signers: [{ certificate: _minimalCertDer(), secretKey: kp.secretKey, sigAlg: "ML-DSA-65" }],
|
|
299
|
+
});
|
|
300
|
+
} catch (e) { threw = e.code; }
|
|
301
|
+
check("non-Buffer certificates[] entry refused with cms/bad-cert",
|
|
302
|
+
threw === "cms/bad-cert");
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
function testEncodeSignedDataSignFailsOnShortKey() {
|
|
306
|
+
// A Uint8Array that passes the type gate but is the wrong length makes
|
|
307
|
+
// the noble ML-DSA signer throw — the module must surface cms/sign-failed
|
|
308
|
+
// rather than leaking the raw noble error.
|
|
309
|
+
var threw = null;
|
|
310
|
+
try {
|
|
311
|
+
b.cms.encodeSignedData({
|
|
312
|
+
encapContent: Buffer.from("p"),
|
|
313
|
+
signers: [{ certificate: _minimalCertDer(), secretKey: new Uint8Array(5), sigAlg: "ML-DSA-65" }],
|
|
314
|
+
});
|
|
315
|
+
} catch (e) { threw = e.code; }
|
|
316
|
+
check("wrong-length secretKey surfaces cms/sign-failed",
|
|
317
|
+
threw === "cms/sign-failed");
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
function testEncodeSignedDataDetachedOmitsContent() {
|
|
321
|
+
var kp = pqcSoftware.ml_dsa_65.keygen();
|
|
322
|
+
var cert = _minimalCertDer();
|
|
323
|
+
var sd = b.cms.encodeSignedData({
|
|
324
|
+
encapContent: Buffer.from("detached payload"),
|
|
325
|
+
detached: true,
|
|
326
|
+
signers: [{ certificate: cert, secretKey: kp.secretKey, sigAlg: "ML-DSA-65" }],
|
|
327
|
+
});
|
|
328
|
+
var parsed = b.cms.parseSignedData(sd);
|
|
329
|
+
check("detached SignedData omits eContent (null)",
|
|
330
|
+
parsed.encapContent.eContent === null);
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
function testEncodeSignedDataGeneralizedTimeBranch() {
|
|
334
|
+
// signingTime past 2049 forces the GeneralizedTime encode branch in
|
|
335
|
+
// _encodeTime instead of UTCTime — the roundtrip must still decode.
|
|
336
|
+
var kp = pqcSoftware.ml_dsa_65.keygen();
|
|
337
|
+
var cert = _minimalCertDer();
|
|
338
|
+
var sd = b.cms.encodeSignedData({
|
|
339
|
+
encapContent: Buffer.from("future-dated"),
|
|
340
|
+
signers: [{
|
|
341
|
+
certificate: cert, secretKey: kp.secretKey, sigAlg: "ML-DSA-65",
|
|
342
|
+
signingTime: new Date(Date.UTC(2050, 0, 1, 0, 0, 0)),
|
|
343
|
+
}],
|
|
344
|
+
});
|
|
345
|
+
check("GeneralizedTime-dated SignedData decodes to signedData OID",
|
|
346
|
+
b.cms.decode(sd).contentType === SIGNED_DATA_OID);
|
|
347
|
+
}
|
|
348
|
+
|
|
349
|
+
// ---- _issuerAndSerialNumber malformed-certificate branches -------------
|
|
350
|
+
|
|
351
|
+
function _encodeWithCert(certBuf) {
|
|
352
|
+
var kp = pqcSoftware.ml_dsa_65.keygen();
|
|
353
|
+
return b.cms.encodeSignedData({
|
|
354
|
+
encapContent: Buffer.from("p"),
|
|
355
|
+
signers: [{ certificate: certBuf, secretKey: kp.secretKey, sigAlg: "ML-DSA-65" }],
|
|
356
|
+
});
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
function testCertNonSequenceRefused() {
|
|
360
|
+
var threw = null;
|
|
361
|
+
try { _encodeWithCert(Buffer.from([0x02, 0x01, 0x05])); } // INTEGER, not SEQUENCE
|
|
362
|
+
catch (e) { threw = e.code; }
|
|
363
|
+
check("non-SEQUENCE certificate refused with cms/bad-cert", threw === "cms/bad-cert");
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
function testCertMissingTbsRefused() {
|
|
367
|
+
var threw = null;
|
|
368
|
+
try { _encodeWithCert(asn1.writeNode(0x30, Buffer.alloc(0))); } // empty SEQUENCE
|
|
369
|
+
catch (e) { threw = e.code; }
|
|
370
|
+
check("certificate with no tbsCertificate refused with cms/bad-cert",
|
|
371
|
+
threw === "cms/bad-cert");
|
|
372
|
+
}
|
|
373
|
+
|
|
374
|
+
function testCertMissingSerialRefused() {
|
|
375
|
+
// tbsCertificate whose first element is an OID, not the serialNumber INTEGER.
|
|
376
|
+
var tbs = asn1.writeNode(0x30, asn1.writeOid("2.5.4.3"));
|
|
377
|
+
var cert = asn1.writeNode(0x30, Buffer.concat([tbs, tbs]));
|
|
378
|
+
var threw = null;
|
|
379
|
+
try { _encodeWithCert(cert); }
|
|
380
|
+
catch (e) { threw = e.code; }
|
|
381
|
+
check("tbsCertificate with no serialNumber refused with cms/bad-cert",
|
|
382
|
+
threw === "cms/bad-cert");
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
function testCertMissingSignatureAlgIdRefused() {
|
|
386
|
+
var serial = asn1.writeInteger(Buffer.from([0x01]));
|
|
387
|
+
var tbs = asn1.writeNode(0x30, serial); // serial only, no signature AlgId
|
|
388
|
+
var cert = asn1.writeNode(0x30, tbs);
|
|
389
|
+
var threw = null;
|
|
390
|
+
try { _encodeWithCert(cert); }
|
|
391
|
+
catch (e) { threw = e.code; }
|
|
392
|
+
check("tbsCertificate with no signature AlgorithmIdentifier refused with cms/bad-cert",
|
|
393
|
+
threw === "cms/bad-cert");
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
function testCertMissingIssuerRefused() {
|
|
397
|
+
var serial = asn1.writeInteger(Buffer.from([0x01]));
|
|
398
|
+
var sigAlg = asn1.writeNode(0x30, asn1.writeOid("2.16.840.1.101.3.4.3.18"));
|
|
399
|
+
var tbs = asn1.writeNode(0x30, Buffer.concat([serial, sigAlg])); // no issuer
|
|
400
|
+
var cert = asn1.writeNode(0x30, tbs);
|
|
401
|
+
var threw = null;
|
|
402
|
+
try { _encodeWithCert(cert); }
|
|
403
|
+
catch (e) { threw = e.code; }
|
|
404
|
+
check("tbsCertificate with no issuer Name refused with cms/bad-cert",
|
|
405
|
+
threw === "cms/bad-cert");
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
function testCertWithVersionTagAccepted() {
|
|
409
|
+
// tbsCertificate with a leading [0] EXPLICIT version — the idx-skip
|
|
410
|
+
// branch in _issuerAndSerialNumber must consume it and still resolve
|
|
411
|
+
// serial + issuer.
|
|
412
|
+
var version = asn1.writeContextExplicit(0, asn1.writeInteger(Buffer.from([0x02])));
|
|
413
|
+
var serial = asn1.writeInteger(Buffer.from([0x0a]));
|
|
414
|
+
var sigAlg = asn1.writeNode(0x30, asn1.writeOid("2.16.840.1.101.3.4.3.18"));
|
|
415
|
+
var issuer = asn1.writeNode(0x30, asn1.writeOid("2.5.4.3"));
|
|
416
|
+
var tbs = asn1.writeNode(0x30, Buffer.concat([version, serial, sigAlg, issuer]));
|
|
417
|
+
var outerSig = asn1.writeNode(0x30, asn1.writeOid("2.16.840.1.101.3.4.3.18"));
|
|
418
|
+
var sigVal = asn1.writeNode(0x03, Buffer.from([0x00, 0x00, 0x01]));
|
|
419
|
+
var cert = asn1.writeNode(0x30, Buffer.concat([tbs, outerSig, sigVal]));
|
|
420
|
+
var sd = _encodeWithCert(cert);
|
|
421
|
+
check("certificate carrying a [0] version tag encodes SignedData",
|
|
422
|
+
b.cms.decode(sd).contentType === SIGNED_DATA_OID);
|
|
423
|
+
}
|
|
424
|
+
|
|
425
|
+
// ---- encodeEnvelopedData entry-point / recipient validation ------------
|
|
426
|
+
|
|
427
|
+
function testEncodeEnvelopedDataRefusesMissingOpts() {
|
|
428
|
+
var threw = null;
|
|
429
|
+
try { b.cms.encodeEnvelopedData(); }
|
|
430
|
+
catch (e) { threw = e.code; }
|
|
431
|
+
check("encodeEnvelopedData() with no opts refused with cms/bad-opts",
|
|
432
|
+
threw === "cms/bad-opts");
|
|
433
|
+
}
|
|
434
|
+
|
|
435
|
+
function testEncodeEnvelopedDataRefusesNonBufferPlaintext() {
|
|
436
|
+
var kp = pqcSoftware.ml_kem_1024.keygen();
|
|
437
|
+
var threw = null;
|
|
438
|
+
try {
|
|
439
|
+
b.cms.encodeEnvelopedData({
|
|
440
|
+
plaintext: "nope",
|
|
441
|
+
recipients: [{ type: "kem-mlkem-1024", publicKey: kp.publicKey, recipientId: Buffer.from([1]) }],
|
|
442
|
+
});
|
|
443
|
+
} catch (e) { threw = e.code; }
|
|
444
|
+
check("encodeEnvelopedData with non-Buffer plaintext refused with cms/bad-plaintext",
|
|
445
|
+
threw === "cms/bad-plaintext");
|
|
446
|
+
}
|
|
447
|
+
|
|
448
|
+
function testEncodeEnvelopedDataRefusesNonObjectRecipient() {
|
|
449
|
+
var threw = null;
|
|
450
|
+
try {
|
|
451
|
+
b.cms.encodeEnvelopedData({ plaintext: Buffer.from("p"), recipients: [null] });
|
|
452
|
+
} catch (e) { threw = e.code; }
|
|
453
|
+
check("non-object recipient refused with cms/bad-recipient",
|
|
454
|
+
threw === "cms/bad-recipient");
|
|
455
|
+
}
|
|
456
|
+
|
|
457
|
+
function testEncodeEnvelopedDataRefusesNonUint8PublicKey() {
|
|
458
|
+
var threw = null;
|
|
459
|
+
try {
|
|
460
|
+
b.cms.encodeEnvelopedData({
|
|
461
|
+
plaintext: Buffer.from("p"),
|
|
462
|
+
recipients: [{ type: "kem-mlkem-1024", publicKey: [1, 2, 3], recipientId: Buffer.from([1]) }],
|
|
463
|
+
});
|
|
464
|
+
} catch (e) { threw = e.code; }
|
|
465
|
+
check("recipient.publicKey not a Uint8Array refused with cms/bad-recipient-key",
|
|
466
|
+
threw === "cms/bad-recipient-key");
|
|
467
|
+
}
|
|
468
|
+
|
|
469
|
+
function testEncodeEnvelopedDataRefusesNonBufferRecipientId() {
|
|
470
|
+
var kp = pqcSoftware.ml_kem_1024.keygen();
|
|
471
|
+
var threw = null;
|
|
472
|
+
try {
|
|
473
|
+
b.cms.encodeEnvelopedData({
|
|
474
|
+
plaintext: Buffer.from("p"),
|
|
475
|
+
recipients: [{ type: "kem-mlkem-1024", publicKey: kp.publicKey, recipientId: "not-a-buffer" }],
|
|
476
|
+
});
|
|
477
|
+
} catch (e) { threw = e.code; }
|
|
478
|
+
check("recipient.recipientId not a Buffer refused with cms/bad-recipient-id",
|
|
479
|
+
threw === "cms/bad-recipient-id");
|
|
480
|
+
}
|
|
481
|
+
|
|
482
|
+
function testEncodeEnvelopedDataKemEncapFailsOnShortKey() {
|
|
483
|
+
// A Uint8Array of the wrong length passes the type gate but makes the
|
|
484
|
+
// noble ML-KEM encapsulate throw — surfaced as cms/kem-encap-failed.
|
|
485
|
+
var threw = null;
|
|
486
|
+
try {
|
|
487
|
+
b.cms.encodeEnvelopedData({
|
|
488
|
+
plaintext: Buffer.from("p"),
|
|
489
|
+
recipients: [{ type: "kem-mlkem-1024", publicKey: new Uint8Array(8), recipientId: Buffer.from([1]) }],
|
|
490
|
+
});
|
|
491
|
+
} catch (e) { threw = e.code; }
|
|
492
|
+
check("wrong-length recipient publicKey surfaces cms/kem-encap-failed",
|
|
493
|
+
threw === "cms/kem-encap-failed");
|
|
494
|
+
}
|
|
495
|
+
|
|
496
|
+
// ---- decode() malformed-DER branches -----------------------------------
|
|
497
|
+
|
|
498
|
+
function testDecodeRefusesBadAsn1() {
|
|
499
|
+
// SEQUENCE with a long-form length that overruns the buffer — readNode
|
|
500
|
+
// itself throws, surfaced as cms/bad-asn1.
|
|
501
|
+
var threw = null;
|
|
502
|
+
try { b.cms.decode(Buffer.from([0x30, 0x82, 0xff, 0xff])); }
|
|
503
|
+
catch (e) { threw = e.code; }
|
|
504
|
+
check("un-parseable ASN.1 refused with cms/bad-asn1", threw === "cms/bad-asn1");
|
|
505
|
+
}
|
|
506
|
+
|
|
507
|
+
function testDecodeRefusesTruncatedBody() {
|
|
508
|
+
// Outer SEQUENCE parses, but its body is a truncated INTEGER (claims 5
|
|
509
|
+
// content bytes, has 1) so readSequence throws → cms/bad-content-info.
|
|
510
|
+
var threw = null;
|
|
511
|
+
try { b.cms.decode(Buffer.from([0x30, 0x03, 0x02, 0x05, 0x01])); }
|
|
512
|
+
catch (e) { threw = e.code; }
|
|
513
|
+
check("truncated ContentInfo body refused with cms/bad-content-info",
|
|
514
|
+
threw === "cms/bad-content-info");
|
|
515
|
+
}
|
|
516
|
+
|
|
517
|
+
function testDecodeRefusesTooFewChildren() {
|
|
518
|
+
// A SEQUENCE with a single child (only the OID, no [0] content).
|
|
519
|
+
var ci = asn1.writeNode(0x30, asn1.writeOid("1.2.840.113549.1.7.1"));
|
|
520
|
+
var threw = null;
|
|
521
|
+
try { b.cms.decode(ci); }
|
|
522
|
+
catch (e) { threw = e.code; }
|
|
523
|
+
check("ContentInfo with <2 children refused with cms/bad-content-info",
|
|
524
|
+
threw === "cms/bad-content-info");
|
|
525
|
+
}
|
|
526
|
+
|
|
527
|
+
function testDecodeRefusesNonOidContentType() {
|
|
528
|
+
// First child is an INTEGER where the contentType OID is required.
|
|
529
|
+
var ci = asn1.writeNode(0x30, Buffer.concat([
|
|
530
|
+
asn1.writeInteger(Buffer.from([0x05])),
|
|
531
|
+
asn1.writeContextExplicit(0, asn1.writeInteger(Buffer.from([0x01]))),
|
|
532
|
+
]));
|
|
533
|
+
var threw = null;
|
|
534
|
+
try { b.cms.decode(ci); }
|
|
535
|
+
catch (e) { threw = e.code; }
|
|
536
|
+
check("non-OID contentType refused with cms/bad-oid", threw === "cms/bad-oid");
|
|
537
|
+
}
|
|
538
|
+
|
|
539
|
+
function testDecodeRefusesNonExplicitContent() {
|
|
540
|
+
// Second child is a bare INTEGER, not the required [0] EXPLICIT wrapper.
|
|
541
|
+
var ci = asn1.writeNode(0x30, Buffer.concat([
|
|
542
|
+
asn1.writeOid("1.2.840.113549.1.7.1"),
|
|
543
|
+
asn1.writeInteger(Buffer.from([0x01])),
|
|
544
|
+
]));
|
|
545
|
+
var threw = null;
|
|
546
|
+
try { b.cms.decode(ci); }
|
|
547
|
+
catch (e) { threw = e.code; }
|
|
548
|
+
check("missing [0] EXPLICIT content refused with cms/bad-explicit-content",
|
|
549
|
+
threw === "cms/bad-explicit-content");
|
|
550
|
+
}
|
|
551
|
+
|
|
552
|
+
// ---- parseSignedData structural-refusal branches -----------------------
|
|
553
|
+
|
|
554
|
+
function testParseSignedDataRefusesNonSignedDataOid() {
|
|
555
|
+
// A valid EnvelopedData ContentInfo carries the wrong contentType.
|
|
556
|
+
var kp = pqcSoftware.ml_kem_1024.keygen();
|
|
557
|
+
var ed = b.cms.encodeEnvelopedData({
|
|
558
|
+
plaintext: Buffer.from("secret"),
|
|
559
|
+
recipients: [{ type: "kem-mlkem-1024", publicKey: kp.publicKey, recipientId: Buffer.from([1]) }],
|
|
560
|
+
});
|
|
561
|
+
var threw = null;
|
|
562
|
+
try { b.cms.parseSignedData(ed); }
|
|
563
|
+
catch (e) { threw = e.code; }
|
|
564
|
+
check("EnvelopedData passed to parseSignedData refused with cms/not-signed-data",
|
|
565
|
+
threw === "cms/not-signed-data");
|
|
566
|
+
}
|
|
567
|
+
|
|
568
|
+
function testParseSignedDataRefusesNonSequenceInner() {
|
|
569
|
+
// SignedData OID but the [0] EXPLICIT content is an INTEGER, not a SEQUENCE.
|
|
570
|
+
var ci = _wrapContentInfo(SIGNED_DATA_OID, asn1.writeInteger(Buffer.from([0x01])));
|
|
571
|
+
var threw = null;
|
|
572
|
+
try { b.cms.parseSignedData(ci); }
|
|
573
|
+
catch (e) { threw = e.code; }
|
|
574
|
+
check("non-SEQUENCE SignedData body refused with cms/bad-signed-data",
|
|
575
|
+
threw === "cms/bad-signed-data");
|
|
576
|
+
}
|
|
577
|
+
|
|
578
|
+
function testParseSignedDataRefusesTooFewChildren() {
|
|
579
|
+
var inner = asn1.writeNode(0x30, Buffer.concat([
|
|
580
|
+
asn1.writeInteger(Buffer.from([0x01])),
|
|
581
|
+
asn1.writeNode(0x31, Buffer.alloc(0)),
|
|
582
|
+
]));
|
|
583
|
+
var ci = _wrapContentInfo(SIGNED_DATA_OID, inner);
|
|
584
|
+
var threw = null;
|
|
585
|
+
try { b.cms.parseSignedData(ci); }
|
|
586
|
+
catch (e) { threw = e.code; }
|
|
587
|
+
check("SignedData with <4 children refused with cms/bad-signed-data",
|
|
588
|
+
threw === "cms/bad-signed-data");
|
|
589
|
+
}
|
|
590
|
+
|
|
591
|
+
function testParseSignedDataRefusesNonSetDigestAlgs() {
|
|
592
|
+
// 4 children but digestAlgorithms is an INTEGER, not a SET.
|
|
593
|
+
var algId = asn1.writeNode(0x30, asn1.writeOid("2.16.840.1.101.3.4.2.10"));
|
|
594
|
+
var encap = asn1.writeNode(0x30, asn1.writeOid("1.2.840.113549.1.7.1"));
|
|
595
|
+
var inner = asn1.writeNode(0x30, Buffer.concat([
|
|
596
|
+
asn1.writeInteger(Buffer.from([0x01])),
|
|
597
|
+
asn1.writeInteger(Buffer.from([0x09])), // should be a SET
|
|
598
|
+
encap,
|
|
599
|
+
asn1.writeNode(0x31, algId),
|
|
600
|
+
]));
|
|
601
|
+
var ci = _wrapContentInfo(SIGNED_DATA_OID, inner);
|
|
602
|
+
var threw = null;
|
|
603
|
+
try { b.cms.parseSignedData(ci); }
|
|
604
|
+
catch (e) { threw = e.code; }
|
|
605
|
+
check("non-SET digestAlgorithms refused with cms/bad-signed-data",
|
|
606
|
+
threw === "cms/bad-signed-data");
|
|
607
|
+
}
|
|
608
|
+
|
|
609
|
+
function testParseSignedDataRefusesBadAlgIdInDigestSet() {
|
|
610
|
+
// digestAlgorithms is a SET whose member is an INTEGER, not an
|
|
611
|
+
// AlgorithmIdentifier SEQUENCE → _readAlgIdOid throws cms/bad-alg-id.
|
|
612
|
+
var digestSet = asn1.writeNode(0x31, asn1.writeInteger(Buffer.from([0x01])));
|
|
613
|
+
var encap = asn1.writeNode(0x30, asn1.writeOid("1.2.840.113549.1.7.1"));
|
|
614
|
+
var inner = asn1.writeNode(0x30, Buffer.concat([
|
|
615
|
+
asn1.writeInteger(Buffer.from([0x01])),
|
|
616
|
+
digestSet,
|
|
617
|
+
encap,
|
|
618
|
+
asn1.writeNode(0x31, Buffer.alloc(0)),
|
|
619
|
+
]));
|
|
620
|
+
var ci = _wrapContentInfo(SIGNED_DATA_OID, inner);
|
|
621
|
+
var threw = null;
|
|
622
|
+
try { b.cms.parseSignedData(ci); }
|
|
623
|
+
catch (e) { threw = e.code; }
|
|
624
|
+
check("non-SEQUENCE AlgorithmIdentifier in digest SET refused with cms/bad-alg-id",
|
|
625
|
+
threw === "cms/bad-alg-id");
|
|
626
|
+
}
|
|
627
|
+
|
|
628
|
+
function testParseSignedDataRefusesNonSequenceEncapInfo() {
|
|
629
|
+
var digestSet = asn1.writeNode(0x31, asn1.writeNode(0x30, asn1.writeOid("2.16.840.1.101.3.4.2.10")));
|
|
630
|
+
var inner = asn1.writeNode(0x30, Buffer.concat([
|
|
631
|
+
asn1.writeInteger(Buffer.from([0x01])),
|
|
632
|
+
digestSet,
|
|
633
|
+
asn1.writeInteger(Buffer.from([0x07])), // encapContentInfo should be a SEQUENCE
|
|
634
|
+
asn1.writeNode(0x31, Buffer.alloc(0)),
|
|
635
|
+
]));
|
|
636
|
+
var ci = _wrapContentInfo(SIGNED_DATA_OID, inner);
|
|
637
|
+
var threw = null;
|
|
638
|
+
try { b.cms.parseSignedData(ci); }
|
|
639
|
+
catch (e) { threw = e.code; }
|
|
640
|
+
check("non-SEQUENCE encapContentInfo refused with cms/bad-signed-data",
|
|
641
|
+
threw === "cms/bad-signed-data");
|
|
642
|
+
}
|
|
643
|
+
|
|
644
|
+
function testParseSignedDataRefusesEmptyEncapInfo() {
|
|
645
|
+
// encapContentInfo SEQUENCE is empty → _readEncapContent throws cms/bad-encap.
|
|
646
|
+
var digestSet = asn1.writeNode(0x31, asn1.writeNode(0x30, asn1.writeOid("2.16.840.1.101.3.4.2.10")));
|
|
647
|
+
var inner = asn1.writeNode(0x30, Buffer.concat([
|
|
648
|
+
asn1.writeInteger(Buffer.from([0x01])),
|
|
649
|
+
digestSet,
|
|
650
|
+
asn1.writeNode(0x30, Buffer.alloc(0)), // empty encapContentInfo
|
|
651
|
+
asn1.writeNode(0x31, Buffer.alloc(0)),
|
|
652
|
+
]));
|
|
653
|
+
var ci = _wrapContentInfo(SIGNED_DATA_OID, inner);
|
|
654
|
+
var threw = null;
|
|
655
|
+
try { b.cms.parseSignedData(ci); }
|
|
656
|
+
catch (e) { threw = e.code; }
|
|
657
|
+
check("empty encapContentInfo refused with cms/bad-encap", threw === "cms/bad-encap");
|
|
658
|
+
}
|
|
659
|
+
|
|
660
|
+
function testParseSignedDataRefusesNonSetSignerInfos() {
|
|
661
|
+
// 4 children, valid digest + encap, but signerInfos slot is an INTEGER.
|
|
662
|
+
var digestSet = asn1.writeNode(0x31, asn1.writeNode(0x30, asn1.writeOid("2.16.840.1.101.3.4.2.10")));
|
|
663
|
+
var encap = asn1.writeNode(0x30, asn1.writeOid("1.2.840.113549.1.7.1"));
|
|
664
|
+
var inner = asn1.writeNode(0x30, Buffer.concat([
|
|
665
|
+
asn1.writeInteger(Buffer.from([0x01])),
|
|
666
|
+
digestSet,
|
|
667
|
+
encap,
|
|
668
|
+
asn1.writeInteger(Buffer.from([0x09])), // signerInfos should be a SET
|
|
669
|
+
]));
|
|
670
|
+
var ci = _wrapContentInfo(SIGNED_DATA_OID, inner);
|
|
671
|
+
var threw = null;
|
|
672
|
+
try { b.cms.parseSignedData(ci); }
|
|
673
|
+
catch (e) { threw = e.code; }
|
|
674
|
+
check("non-SET signerInfos refused with cms/bad-signed-data",
|
|
675
|
+
threw === "cms/bad-signed-data");
|
|
676
|
+
}
|
|
677
|
+
|
|
678
|
+
function testParseSignedDataWalksCrlsAndCraftedSignerInfo() {
|
|
679
|
+
// Hand-crafted SignedData exercising the certs [0] + crls [1] skip
|
|
680
|
+
// branches and a minimal _readSignerInfo (no signedAttrs) in one walk.
|
|
681
|
+
var digestSet = asn1.writeNode(0x31, asn1.writeNode(0x30, asn1.writeOid("2.16.840.1.101.3.4.2.10")));
|
|
682
|
+
var encap = asn1.writeNode(0x30, asn1.writeOid("1.2.840.113549.1.7.1"));
|
|
683
|
+
var certsBlk = asn1.writeNode(0xa0, _minimalCertDer());
|
|
684
|
+
var crlsBlk = asn1.writeNode(0xa1, asn1.writeNode(0x30, asn1.writeInteger(Buffer.from([0x01]))));
|
|
685
|
+
|
|
686
|
+
var si = asn1.writeNode(0x30, Buffer.concat([
|
|
687
|
+
asn1.writeInteger(Buffer.from([0x01])), // version
|
|
688
|
+
asn1.writeInteger(Buffer.from([0x07])), // sid placeholder
|
|
689
|
+
asn1.writeNode(0x30, asn1.writeOid("2.16.840.1.101.3.4.2.10")), // digestAlgId
|
|
690
|
+
asn1.writeNode(0x30, asn1.writeOid("2.16.840.1.101.3.4.3.18")), // sigAlgId
|
|
691
|
+
asn1.writeOctetString(Buffer.from([0x01, 0x02, 0x03])), // signature
|
|
692
|
+
]));
|
|
693
|
+
var signerInfos = asn1.writeNode(0x31, si);
|
|
694
|
+
|
|
695
|
+
var inner = asn1.writeNode(0x30, Buffer.concat([
|
|
696
|
+
asn1.writeInteger(Buffer.from([0x01])),
|
|
697
|
+
digestSet,
|
|
698
|
+
encap,
|
|
699
|
+
certsBlk,
|
|
700
|
+
crlsBlk,
|
|
701
|
+
signerInfos,
|
|
702
|
+
]));
|
|
703
|
+
var parsed = b.cms.parseSignedData(_wrapContentInfo(SIGNED_DATA_OID, inner));
|
|
704
|
+
check("crafted SignedData exposes one signerInfo with the sigAlg OID",
|
|
705
|
+
parsed.signerInfos.length === 1 &&
|
|
706
|
+
parsed.signerInfos[0].sigAlgOid === "2.16.840.1.101.3.4.3.18");
|
|
707
|
+
check("crafted SignedData walks certs [0] into certificates[]",
|
|
708
|
+
parsed.certificates.length === 1);
|
|
709
|
+
check("crafted SignedData signerInfo has null signedAttrsRaw when absent",
|
|
710
|
+
parsed.signerInfos[0].signedAttrsRaw === null);
|
|
711
|
+
}
|
|
712
|
+
|
|
713
|
+
function testParseSignedDataRefusesShortSignerInfo() {
|
|
714
|
+
// signerInfos SET member with <5 children → cms/bad-signer-info.
|
|
715
|
+
var digestSet = asn1.writeNode(0x31, asn1.writeNode(0x30, asn1.writeOid("2.16.840.1.101.3.4.2.10")));
|
|
716
|
+
var encap = asn1.writeNode(0x30, asn1.writeOid("1.2.840.113549.1.7.1"));
|
|
717
|
+
var shortSi = asn1.writeNode(0x30, asn1.writeInteger(Buffer.from([0x01]))); // 1 child only
|
|
718
|
+
var inner = asn1.writeNode(0x30, Buffer.concat([
|
|
719
|
+
asn1.writeInteger(Buffer.from([0x01])),
|
|
720
|
+
digestSet,
|
|
721
|
+
encap,
|
|
722
|
+
asn1.writeNode(0x31, shortSi),
|
|
723
|
+
]));
|
|
724
|
+
var threw = null;
|
|
725
|
+
try { b.cms.parseSignedData(_wrapContentInfo(SIGNED_DATA_OID, inner)); }
|
|
726
|
+
catch (e) { threw = e.code; }
|
|
727
|
+
check("short SignerInfo refused with cms/bad-signer-info",
|
|
728
|
+
threw === "cms/bad-signer-info");
|
|
729
|
+
}
|
|
730
|
+
|
|
731
|
+
function testParseSignedDataRefusesNonOctetStringSignature() {
|
|
732
|
+
// A 5-child SignerInfo whose signature slot is an INTEGER, not OCTET STRING.
|
|
733
|
+
var digestSet = asn1.writeNode(0x31, asn1.writeNode(0x30, asn1.writeOid("2.16.840.1.101.3.4.2.10")));
|
|
734
|
+
var encap = asn1.writeNode(0x30, asn1.writeOid("1.2.840.113549.1.7.1"));
|
|
735
|
+
var si = asn1.writeNode(0x30, Buffer.concat([
|
|
736
|
+
asn1.writeInteger(Buffer.from([0x01])),
|
|
737
|
+
asn1.writeInteger(Buffer.from([0x07])),
|
|
738
|
+
asn1.writeNode(0x30, asn1.writeOid("2.16.840.1.101.3.4.2.10")),
|
|
739
|
+
asn1.writeNode(0x30, asn1.writeOid("2.16.840.1.101.3.4.3.18")),
|
|
740
|
+
asn1.writeInteger(Buffer.from([0x09])), // signature should be OCTET STRING
|
|
741
|
+
]));
|
|
742
|
+
var inner = asn1.writeNode(0x30, Buffer.concat([
|
|
743
|
+
asn1.writeInteger(Buffer.from([0x01])),
|
|
744
|
+
digestSet,
|
|
745
|
+
encap,
|
|
746
|
+
asn1.writeNode(0x31, si),
|
|
747
|
+
]));
|
|
748
|
+
var threw = null;
|
|
749
|
+
try { b.cms.parseSignedData(_wrapContentInfo(SIGNED_DATA_OID, inner)); }
|
|
750
|
+
catch (e) { threw = e.code; }
|
|
751
|
+
check("non-OCTET-STRING signature refused with cms/bad-signer-info",
|
|
752
|
+
threw === "cms/bad-signer-info");
|
|
753
|
+
}
|
|
754
|
+
|
|
217
755
|
function run() {
|
|
756
|
+
testEncodeSignedDataRefusesMissingOpts();
|
|
757
|
+
testEncodeSignedDataRefusesNonBufferEncap();
|
|
758
|
+
testEncodeSignedDataRefusesNonObjectSigner();
|
|
759
|
+
testEncodeSignedDataRefusesSignerWithoutCert();
|
|
760
|
+
testEncodeSignedDataRefusesNonUint8SecretKey();
|
|
761
|
+
testEncodeSignedDataRefusesNonBufferCertificate();
|
|
762
|
+
testEncodeSignedDataSignFailsOnShortKey();
|
|
763
|
+
testEncodeSignedDataDetachedOmitsContent();
|
|
764
|
+
testEncodeSignedDataGeneralizedTimeBranch();
|
|
765
|
+
testCertNonSequenceRefused();
|
|
766
|
+
testCertMissingTbsRefused();
|
|
767
|
+
testCertMissingSerialRefused();
|
|
768
|
+
testCertMissingSignatureAlgIdRefused();
|
|
769
|
+
testCertMissingIssuerRefused();
|
|
770
|
+
testCertWithVersionTagAccepted();
|
|
771
|
+
testEncodeEnvelopedDataRefusesMissingOpts();
|
|
772
|
+
testEncodeEnvelopedDataRefusesNonBufferPlaintext();
|
|
773
|
+
testEncodeEnvelopedDataRefusesNonObjectRecipient();
|
|
774
|
+
testEncodeEnvelopedDataRefusesNonUint8PublicKey();
|
|
775
|
+
testEncodeEnvelopedDataRefusesNonBufferRecipientId();
|
|
776
|
+
testEncodeEnvelopedDataKemEncapFailsOnShortKey();
|
|
777
|
+
testDecodeRefusesBadAsn1();
|
|
778
|
+
testDecodeRefusesTruncatedBody();
|
|
779
|
+
testDecodeRefusesTooFewChildren();
|
|
780
|
+
testDecodeRefusesNonOidContentType();
|
|
781
|
+
testDecodeRefusesNonExplicitContent();
|
|
782
|
+
testParseSignedDataRefusesNonSignedDataOid();
|
|
783
|
+
testParseSignedDataRefusesNonSequenceInner();
|
|
784
|
+
testParseSignedDataRefusesTooFewChildren();
|
|
785
|
+
testParseSignedDataRefusesNonSetDigestAlgs();
|
|
786
|
+
testParseSignedDataRefusesBadAlgIdInDigestSet();
|
|
787
|
+
testParseSignedDataRefusesNonSequenceEncapInfo();
|
|
788
|
+
testParseSignedDataRefusesEmptyEncapInfo();
|
|
789
|
+
testParseSignedDataRefusesNonSetSignerInfos();
|
|
790
|
+
testParseSignedDataWalksCrlsAndCraftedSignerInfo();
|
|
791
|
+
testParseSignedDataRefusesShortSignerInfo();
|
|
792
|
+
testParseSignedDataRefusesNonOctetStringSignature();
|
|
218
793
|
testSignedDataRoundtripMlDsa65();
|
|
219
794
|
testParseSignedDataWalker();
|
|
220
795
|
testSignedDataRoundtripMlDsa87();
|