@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.
Files changed (521) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/lib/asset-manifest.json +1 -1
  3. package/lib/vendor/MANIFEST.json +632 -416
  4. package/lib/vendor/blamejs/.clusterfuzzlite/Dockerfile +21 -10
  5. package/lib/vendor/blamejs/.clusterfuzzlite/build.sh +30 -9
  6. package/lib/vendor/blamejs/.github/dependabot.yml +8 -0
  7. package/lib/vendor/blamejs/.github/workflows/actions-lint.yml +3 -3
  8. package/lib/vendor/blamejs/.github/workflows/cflite_batch.yml +7 -2
  9. package/lib/vendor/blamejs/.github/workflows/cflite_pr.yml +7 -2
  10. package/lib/vendor/blamejs/.github/workflows/ci.yml +21 -21
  11. package/lib/vendor/blamejs/.github/workflows/codeql.yml +3 -3
  12. package/lib/vendor/blamejs/.github/workflows/npm-publish.yml +4 -4
  13. package/lib/vendor/blamejs/.github/workflows/release-container.yml +7 -7
  14. package/lib/vendor/blamejs/.github/workflows/scorecard.yml +3 -3
  15. package/lib/vendor/blamejs/.github/workflows/sha-to-tag-verify.yml +1 -1
  16. package/lib/vendor/blamejs/.gitignore +2 -0
  17. package/lib/vendor/blamejs/CHANGELOG.md +122 -0
  18. package/lib/vendor/blamejs/NOTICE +26 -1
  19. package/lib/vendor/blamejs/SECURITY.md +1 -1
  20. package/lib/vendor/blamejs/api-snapshot.json +207 -5
  21. package/lib/vendor/blamejs/docker/keycloak/realm-blamejs-test.json +29 -0
  22. package/lib/vendor/blamejs/examples/wiki/DEPLOY.md +1 -0
  23. package/lib/vendor/blamejs/examples/wiki/lib/build-app.js +31 -0
  24. package/lib/vendor/blamejs/examples/wiki/lib/source-comment-block-validator.js +109 -0
  25. package/lib/vendor/blamejs/examples/wiki/nginx.conf +106 -0
  26. package/lib/vendor/blamejs/examples/wiki/package-lock.json +1 -1
  27. package/lib/vendor/blamejs/examples/wiki/test/e2e.js +92 -0
  28. package/lib/vendor/blamejs/fuzz/asn1-der.fuzz.js +28 -0
  29. package/lib/vendor/blamejs/fuzz/cms-codec.fuzz.js +17 -0
  30. package/lib/vendor/blamejs/fuzz/link-header.fuzz.js +18 -0
  31. package/lib/vendor/blamejs/index.js +6 -0
  32. package/lib/vendor/blamejs/lib/a2a.js +4 -4
  33. package/lib/vendor/blamejs/lib/agent-idempotency.js +18 -2
  34. package/lib/vendor/blamejs/lib/agent-saga.js +36 -8
  35. package/lib/vendor/blamejs/lib/agent-snapshot.js +63 -6
  36. package/lib/vendor/blamejs/lib/app-shutdown.js +23 -20
  37. package/lib/vendor/blamejs/lib/archive-read.js +8 -0
  38. package/lib/vendor/blamejs/lib/archive-tar.js +12 -2
  39. package/lib/vendor/blamejs/lib/arg-parser.js +49 -5
  40. package/lib/vendor/blamejs/lib/asn1-der.js +12 -0
  41. package/lib/vendor/blamejs/lib/audit-sign.js +47 -1
  42. package/lib/vendor/blamejs/lib/audit.js +71 -8
  43. package/lib/vendor/blamejs/lib/auth/ciba.js +14 -2
  44. package/lib/vendor/blamejs/lib/auth/fido-mds3.js +58 -47
  45. package/lib/vendor/blamejs/lib/auth/jwt.js +34 -0
  46. package/lib/vendor/blamejs/lib/auth/oauth.js +90 -13
  47. package/lib/vendor/blamejs/lib/auth/oid4vci.js +20 -17
  48. package/lib/vendor/blamejs/lib/auth/openid-federation.js +214 -23
  49. package/lib/vendor/blamejs/lib/auth/saml.js +38 -20
  50. package/lib/vendor/blamejs/lib/auth/sd-jwt-vc.js +10 -4
  51. package/lib/vendor/blamejs/lib/backup/bundle.js +13 -3
  52. package/lib/vendor/blamejs/lib/backup/index.js +16 -5
  53. package/lib/vendor/blamejs/lib/backup/manifest.js +18 -5
  54. package/lib/vendor/blamejs/lib/base32.js +21 -0
  55. package/lib/vendor/blamejs/lib/break-glass.js +19 -10
  56. package/lib/vendor/blamejs/lib/bundler.js +5 -1
  57. package/lib/vendor/blamejs/lib/cache-status.js +3 -7
  58. package/lib/vendor/blamejs/lib/calendar.js +21 -1
  59. package/lib/vendor/blamejs/lib/cbor.js +12 -1
  60. package/lib/vendor/blamejs/lib/cert.js +29 -11
  61. package/lib/vendor/blamejs/lib/cli.js +94 -24
  62. package/lib/vendor/blamejs/lib/cloud-events.js +2 -2
  63. package/lib/vendor/blamejs/lib/cluster-provider-db.js +13 -3
  64. package/lib/vendor/blamejs/lib/codepoint-class.js +85 -0
  65. package/lib/vendor/blamejs/lib/compliance-ai-act-prohibited.js +8 -4
  66. package/lib/vendor/blamejs/lib/compliance-ai-act-transparency.js +19 -4
  67. package/lib/vendor/blamejs/lib/compliance-ai-act.js +6 -8
  68. package/lib/vendor/blamejs/lib/content-credentials.js +1 -1
  69. package/lib/vendor/blamejs/lib/content-digest.js +2 -1
  70. package/lib/vendor/blamejs/lib/cookies.js +13 -3
  71. package/lib/vendor/blamejs/lib/cose.js +31 -16
  72. package/lib/vendor/blamejs/lib/crypto-field.js +32 -0
  73. package/lib/vendor/blamejs/lib/crypto-oprf.js +11 -2
  74. package/lib/vendor/blamejs/lib/crypto-xwing.js +22 -4
  75. package/lib/vendor/blamejs/lib/crypto.js +314 -19
  76. package/lib/vendor/blamejs/lib/csp.js +11 -3
  77. package/lib/vendor/blamejs/lib/daemon.js +270 -24
  78. package/lib/vendor/blamejs/lib/dark-patterns.js +5 -2
  79. package/lib/vendor/blamejs/lib/db-declare-view.js +2 -2
  80. package/lib/vendor/blamejs/lib/db-query.js +34 -7
  81. package/lib/vendor/blamejs/lib/db.js +18 -6
  82. package/lib/vendor/blamejs/lib/dbsc.js +17 -0
  83. package/lib/vendor/blamejs/lib/dev.js +21 -2
  84. package/lib/vendor/blamejs/lib/dsr.js +157 -102
  85. package/lib/vendor/blamejs/lib/external-db.js +41 -2
  86. package/lib/vendor/blamejs/lib/file-upload.js +25 -7
  87. package/lib/vendor/blamejs/lib/flag-providers.js +27 -15
  88. package/lib/vendor/blamejs/lib/forms.js +113 -27
  89. package/lib/vendor/blamejs/lib/gate-contract.js +23 -10
  90. package/lib/vendor/blamejs/lib/gdpr-ropa.js +8 -1
  91. package/lib/vendor/blamejs/lib/guard-agent-registry.js +1 -1
  92. package/lib/vendor/blamejs/lib/guard-archive.js +2 -2
  93. package/lib/vendor/blamejs/lib/guard-cidr.js +27 -1
  94. package/lib/vendor/blamejs/lib/guard-graphql.js +30 -11
  95. package/lib/vendor/blamejs/lib/guard-html.js +26 -53
  96. package/lib/vendor/blamejs/lib/guard-image.js +24 -5
  97. package/lib/vendor/blamejs/lib/guard-imap-command.js +10 -2
  98. package/lib/vendor/blamejs/lib/guard-jmap.js +19 -3
  99. package/lib/vendor/blamejs/lib/guard-jwt.js +18 -2
  100. package/lib/vendor/blamejs/lib/guard-list-unsubscribe.js +2 -2
  101. package/lib/vendor/blamejs/lib/guard-managesieve-command.js +10 -2
  102. package/lib/vendor/blamejs/lib/guard-markdown.js +11 -24
  103. package/lib/vendor/blamejs/lib/guard-pdf.js +18 -2
  104. package/lib/vendor/blamejs/lib/guard-pop3-command.js +10 -2
  105. package/lib/vendor/blamejs/lib/guard-regex.js +8 -5
  106. package/lib/vendor/blamejs/lib/guard-svg.js +31 -32
  107. package/lib/vendor/blamejs/lib/guard-time.js +1 -1
  108. package/lib/vendor/blamejs/lib/guard-uuid.js +2 -2
  109. package/lib/vendor/blamejs/lib/html-balance.js +3 -3
  110. package/lib/vendor/blamejs/lib/http-client-cache.js +82 -4
  111. package/lib/vendor/blamejs/lib/http-client-cookie-jar.js +16 -1
  112. package/lib/vendor/blamejs/lib/http-client.js +39 -7
  113. package/lib/vendor/blamejs/lib/http-message-signature.js +35 -1
  114. package/lib/vendor/blamejs/lib/i18n-messageformat.js +31 -6
  115. package/lib/vendor/blamejs/lib/i18n.js +35 -21
  116. package/lib/vendor/blamejs/lib/incident-report.js +8 -1
  117. package/lib/vendor/blamejs/lib/ip-utils.js +11 -1
  118. package/lib/vendor/blamejs/lib/json-path.js +23 -1
  119. package/lib/vendor/blamejs/lib/jwk.js +20 -3
  120. package/lib/vendor/blamejs/lib/link-header.js +2 -1
  121. package/lib/vendor/blamejs/lib/log-stream-otlp-grpc.js +5 -1
  122. package/lib/vendor/blamejs/lib/log-stream-otlp.js +5 -1
  123. package/lib/vendor/blamejs/lib/log-stream.js +8 -3
  124. package/lib/vendor/blamejs/lib/mail-auth.js +123 -22
  125. package/lib/vendor/blamejs/lib/mail-bimi.js +1 -1
  126. package/lib/vendor/blamejs/lib/mail-bounce.js +8 -0
  127. package/lib/vendor/blamejs/lib/mail-crypto-pgp.js +46 -10
  128. package/lib/vendor/blamejs/lib/mail-dav.js +22 -3
  129. package/lib/vendor/blamejs/lib/mail-dkim.js +96 -30
  130. package/lib/vendor/blamejs/lib/mail-helo.js +6 -1
  131. package/lib/vendor/blamejs/lib/mail-scan.js +23 -16
  132. package/lib/vendor/blamejs/lib/mail-send-deliver.js +34 -8
  133. package/lib/vendor/blamejs/lib/mail-server-imap.js +3 -4
  134. package/lib/vendor/blamejs/lib/mail-server-managesieve.js +7 -11
  135. package/lib/vendor/blamejs/lib/mail-server-mx.js +93 -7
  136. package/lib/vendor/blamejs/lib/mail-server-registry.js +8 -2
  137. package/lib/vendor/blamejs/lib/mail.js +15 -5
  138. package/lib/vendor/blamejs/lib/metrics.js +268 -63
  139. package/lib/vendor/blamejs/lib/middleware/age-gate.js +7 -1
  140. package/lib/vendor/blamejs/lib/middleware/asyncapi-serve.js +1 -1
  141. package/lib/vendor/blamejs/lib/middleware/body-parser.js +19 -4
  142. package/lib/vendor/blamejs/lib/middleware/bot-guard.js +5 -9
  143. package/lib/vendor/blamejs/lib/middleware/csp-report.js +40 -8
  144. package/lib/vendor/blamejs/lib/middleware/csrf-protect.js +24 -10
  145. package/lib/vendor/blamejs/lib/middleware/dpop.js +10 -5
  146. package/lib/vendor/blamejs/lib/middleware/index.js +6 -1
  147. package/lib/vendor/blamejs/lib/middleware/nel.js +1 -1
  148. package/lib/vendor/blamejs/lib/middleware/openapi-serve.js +1 -1
  149. package/lib/vendor/blamejs/lib/middleware/rate-limit.js +12 -1
  150. package/lib/vendor/blamejs/lib/middleware/require-bound-key.js +1 -1
  151. package/lib/vendor/blamejs/lib/middleware/scim-server.js +1 -1
  152. package/lib/vendor/blamejs/lib/middleware/tus-upload.js +6 -2
  153. package/lib/vendor/blamejs/lib/mtls-ca.js +18 -2
  154. package/lib/vendor/blamejs/lib/network-dns-resolver.js +11 -1
  155. package/lib/vendor/blamejs/lib/network-dns.js +21 -2
  156. package/lib/vendor/blamejs/lib/network-tls.js +69 -7
  157. package/lib/vendor/blamejs/lib/nonce-store.js +9 -1
  158. package/lib/vendor/blamejs/lib/object-store/gcs.js +7 -0
  159. package/lib/vendor/blamejs/lib/object-store/sigv4.js +31 -0
  160. package/lib/vendor/blamejs/lib/observability-otlp-exporter.js +1 -1
  161. package/lib/vendor/blamejs/lib/outbox.js +1 -1
  162. package/lib/vendor/blamejs/lib/parsers/safe-ini.js +9 -1
  163. package/lib/vendor/blamejs/lib/parsers/safe-toml.js +10 -1
  164. package/lib/vendor/blamejs/lib/permissions.js +6 -3
  165. package/lib/vendor/blamejs/lib/pid-probe.js +55 -0
  166. package/lib/vendor/blamejs/lib/pqc-agent.js +8 -1
  167. package/lib/vendor/blamejs/lib/pqc-software.js +3 -3
  168. package/lib/vendor/blamejs/lib/pubsub.js +20 -9
  169. package/lib/vendor/blamejs/lib/queue-local.js +8 -1
  170. package/lib/vendor/blamejs/lib/queue-redis.js +5 -0
  171. package/lib/vendor/blamejs/lib/redact.js +54 -0
  172. package/lib/vendor/blamejs/lib/restore-bundle.js +10 -2
  173. package/lib/vendor/blamejs/lib/restore.js +19 -0
  174. package/lib/vendor/blamejs/lib/retention.js +12 -4
  175. package/lib/vendor/blamejs/lib/router.js +60 -6
  176. package/lib/vendor/blamejs/lib/safe-buffer.js +69 -0
  177. package/lib/vendor/blamejs/lib/safe-decompress.js +8 -2
  178. package/lib/vendor/blamejs/lib/safe-dns.js +25 -20
  179. package/lib/vendor/blamejs/lib/safe-ical.js +7 -3
  180. package/lib/vendor/blamejs/lib/safe-mime.js +12 -1
  181. package/lib/vendor/blamejs/lib/safe-object.js +80 -0
  182. package/lib/vendor/blamejs/lib/safe-path.js +52 -4
  183. package/lib/vendor/blamejs/lib/safe-redirect.js +10 -2
  184. package/lib/vendor/blamejs/lib/safe-schema.js +4 -1
  185. package/lib/vendor/blamejs/lib/safe-sieve.js +33 -1
  186. package/lib/vendor/blamejs/lib/safe-sql.js +88 -0
  187. package/lib/vendor/blamejs/lib/safe-vcard.js +7 -3
  188. package/lib/vendor/blamejs/lib/scheduler.js +8 -1
  189. package/lib/vendor/blamejs/lib/security-assert.js +6 -6
  190. package/lib/vendor/blamejs/lib/self-update-standalone-verifier.js +74 -27
  191. package/lib/vendor/blamejs/lib/self-update.js +517 -87
  192. package/lib/vendor/blamejs/lib/server-timing.js +2 -4
  193. package/lib/vendor/blamejs/lib/session.js +34 -12
  194. package/lib/vendor/blamejs/lib/sql.js +15 -1
  195. package/lib/vendor/blamejs/lib/ssrf-guard.js +52 -0
  196. package/lib/vendor/blamejs/lib/static.js +55 -13
  197. package/lib/vendor/blamejs/lib/storage.js +8 -2
  198. package/lib/vendor/blamejs/lib/subject.js +6 -1
  199. package/lib/vendor/blamejs/lib/tenant-quota.js +52 -13
  200. package/lib/vendor/blamejs/lib/tls-exporter.js +3 -3
  201. package/lib/vendor/blamejs/lib/tsa.js +34 -13
  202. package/lib/vendor/blamejs/lib/uri-template.js +8 -1
  203. package/lib/vendor/blamejs/lib/vault/index.js +13 -0
  204. package/lib/vendor/blamejs/lib/vc.js +44 -5
  205. package/lib/vendor/blamejs/lib/vendor/MANIFEST.json +26 -26
  206. package/lib/vendor/blamejs/lib/vendor/noble-ciphers.cjs +792 -1
  207. package/lib/vendor/blamejs/lib/vendor/noble-curves.cjs +3443 -1
  208. package/lib/vendor/blamejs/lib/vendor/noble-post-quantum.cjs +2737 -1
  209. package/lib/vendor/blamejs/lib/vendor/pki.cjs +39550 -13
  210. package/lib/vendor/blamejs/lib/vendor/public-suffix-list.dat +55 -53
  211. package/lib/vendor/blamejs/lib/vendor/public-suffix-list.data.js +5551 -5554
  212. package/lib/vendor/blamejs/lib/vendor/simplewebauthn-server.cjs +22459 -32
  213. package/lib/vendor/blamejs/lib/watcher.js +89 -17
  214. package/lib/vendor/blamejs/lib/webhook-dispatcher.js +25 -3
  215. package/lib/vendor/blamejs/lib/webhook.js +12 -2
  216. package/lib/vendor/blamejs/lib/ws-client.js +32 -1
  217. package/lib/vendor/blamejs/lib/xml-c14n.js +29 -1
  218. package/lib/vendor/blamejs/oss-fuzz/projects/blamejs/Dockerfile +1 -1
  219. package/lib/vendor/blamejs/package-lock.json +2 -2
  220. package/lib/vendor/blamejs/package.json +1 -1
  221. package/lib/vendor/blamejs/release-notes/v0.16.x.json +1462 -0
  222. package/lib/vendor/blamejs/release-notes/v0.17.0.json +31 -0
  223. package/lib/vendor/blamejs/release-notes/v0.17.1.json +31 -0
  224. package/lib/vendor/blamejs/release-notes/v0.17.10.json +30 -0
  225. package/lib/vendor/blamejs/release-notes/v0.17.11.json +22 -0
  226. package/lib/vendor/blamejs/release-notes/v0.17.12.json +18 -0
  227. package/lib/vendor/blamejs/release-notes/v0.17.13.json +77 -0
  228. package/lib/vendor/blamejs/release-notes/v0.17.14.json +40 -0
  229. package/lib/vendor/blamejs/release-notes/v0.17.15.json +18 -0
  230. package/lib/vendor/blamejs/release-notes/v0.17.16.json +27 -0
  231. package/lib/vendor/blamejs/release-notes/v0.17.17.json +31 -0
  232. package/lib/vendor/blamejs/release-notes/v0.17.18.json +18 -0
  233. package/lib/vendor/blamejs/release-notes/v0.17.19.json +18 -0
  234. package/lib/vendor/blamejs/release-notes/v0.17.2.json +26 -0
  235. package/lib/vendor/blamejs/release-notes/v0.17.20.json +43 -0
  236. package/lib/vendor/blamejs/release-notes/v0.17.21.json +26 -0
  237. package/lib/vendor/blamejs/release-notes/v0.17.22.json +18 -0
  238. package/lib/vendor/blamejs/release-notes/v0.17.3.json +43 -0
  239. package/lib/vendor/blamejs/release-notes/v0.17.4.json +35 -0
  240. package/lib/vendor/blamejs/release-notes/v0.17.5.json +26 -0
  241. package/lib/vendor/blamejs/release-notes/v0.17.6.json +26 -0
  242. package/lib/vendor/blamejs/release-notes/v0.17.7.json +35 -0
  243. package/lib/vendor/blamejs/release-notes/v0.17.8.json +22 -0
  244. package/lib/vendor/blamejs/release-notes/v0.17.9.json +26 -0
  245. package/lib/vendor/blamejs/scripts/validate-source-comment-blocks.js +4 -0
  246. package/lib/vendor/blamejs/scripts/vendor-update.sh +293 -9
  247. package/lib/vendor/blamejs/socket.yml +94 -0
  248. package/lib/vendor/blamejs/test/00-primitives.js +605 -0
  249. package/lib/vendor/blamejs/test/helpers/drivers.js +12 -9
  250. package/lib/vendor/blamejs/test/integration/audit-stack-mysql.test.js +90 -1
  251. package/lib/vendor/blamejs/test/integration/audit-stack-postgres.test.js +122 -1
  252. package/lib/vendor/blamejs/test/integration/data-layer-mysql.test.js +30 -0
  253. package/lib/vendor/blamejs/test/integration/data-layer-pg.test.js +29 -0
  254. package/lib/vendor/blamejs/test/integration/dsr-cluster-mysql.test.js +479 -0
  255. package/lib/vendor/blamejs/test/integration/dsr-cluster-pg.test.js +487 -0
  256. package/lib/vendor/blamejs/test/integration/federation-auth.test.js +313 -5
  257. package/lib/vendor/blamejs/test/integration/mail-dkim.test.js +80 -0
  258. package/lib/vendor/blamejs/test/integration/openid-federation-chain.test.js +275 -0
  259. package/lib/vendor/blamejs/test/integration/webhook-dispatcher-pg.test.js +96 -0
  260. package/lib/vendor/blamejs/test/layer-0-primitives/a2a-tasks.test.js +401 -0
  261. package/lib/vendor/blamejs/test/layer-0-primitives/acme.test.js +1649 -2
  262. package/lib/vendor/blamejs/test/layer-0-primitives/age-gate.test.js +33 -0
  263. package/lib/vendor/blamejs/test/layer-0-primitives/agent-idempotency.test.js +0 -0
  264. package/lib/vendor/blamejs/test/layer-0-primitives/agent-saga.test.js +60 -0
  265. package/lib/vendor/blamejs/test/layer-0-primitives/agent-snapshot.test.js +524 -0
  266. package/lib/vendor/blamejs/test/layer-0-primitives/api-encrypt.test.js +891 -0
  267. package/lib/vendor/blamejs/test/layer-0-primitives/app-shutdown.test.js +128 -1
  268. package/lib/vendor/blamejs/test/layer-0-primitives/archive-adapters.test.js +271 -0
  269. package/lib/vendor/blamejs/test/layer-0-primitives/archive-read.test.js +628 -1
  270. package/lib/vendor/blamejs/test/layer-0-primitives/archive-tar-read.test.js +0 -0
  271. package/lib/vendor/blamejs/test/layer-0-primitives/archive-wrap.test.js +227 -0
  272. package/lib/vendor/blamejs/test/layer-0-primitives/arg-parser.test.js +15 -0
  273. package/lib/vendor/blamejs/test/layer-0-primitives/asn1-der.test.js +73 -0
  274. package/lib/vendor/blamejs/test/layer-0-primitives/atomic-file.test.js +114 -0
  275. package/lib/vendor/blamejs/test/layer-0-primitives/audit-sign-anchor.test.js +141 -0
  276. package/lib/vendor/blamejs/test/layer-0-primitives/audit-tools.test.js +624 -0
  277. package/lib/vendor/blamejs/test/layer-0-primitives/audit.test.js +769 -0
  278. package/lib/vendor/blamejs/test/layer-0-primitives/auth-jwt-defenses.test.js +436 -0
  279. package/lib/vendor/blamejs/test/layer-0-primitives/auth-oauth.test.js +1697 -0
  280. package/lib/vendor/blamejs/test/layer-0-primitives/auth-oid4vp.test.js +495 -0
  281. package/lib/vendor/blamejs/test/layer-0-primitives/auth-password.test.js +500 -0
  282. package/lib/vendor/blamejs/test/layer-0-primitives/auth-saml.test.js +1809 -0
  283. package/lib/vendor/blamejs/test/layer-0-primitives/auth-status-list.test.js +243 -1
  284. package/lib/vendor/blamejs/test/layer-0-primitives/backup-index.test.js +2226 -0
  285. package/lib/vendor/blamejs/test/layer-0-primitives/backup-manifest-signature.test.js +183 -0
  286. package/lib/vendor/blamejs/test/layer-0-primitives/base32.test.js +105 -0
  287. package/lib/vendor/blamejs/test/layer-0-primitives/break-glass.test.js +693 -0
  288. package/lib/vendor/blamejs/test/layer-0-primitives/cache.test.js +603 -0
  289. package/lib/vendor/blamejs/test/layer-0-primitives/calendar.test.js +557 -0
  290. package/lib/vendor/blamejs/test/layer-0-primitives/case-insensitive-security-token-guard.test.js +214 -0
  291. package/lib/vendor/blamejs/test/layer-0-primitives/cbor.test.js +25 -0
  292. package/lib/vendor/blamejs/test/layer-0-primitives/cert.test.js +843 -6
  293. package/lib/vendor/blamejs/test/layer-0-primitives/ciba-authreqid-binding.test.js +77 -2
  294. package/lib/vendor/blamejs/test/layer-0-primitives/ciba.test.js +866 -0
  295. package/lib/vendor/blamejs/test/layer-0-primitives/clear-site-data.test.js +18 -0
  296. package/lib/vendor/blamejs/test/layer-0-primitives/cli-erase.test.js +19 -0
  297. package/lib/vendor/blamejs/test/layer-0-primitives/cli.test.js +2790 -0
  298. package/lib/vendor/blamejs/test/layer-0-primitives/cluster-lease-renewal-ttl.test.js +114 -0
  299. package/lib/vendor/blamejs/test/layer-0-primitives/cluster.test.js +1032 -0
  300. package/lib/vendor/blamejs/test/layer-0-primitives/cms-codec.test.js +575 -0
  301. package/lib/vendor/blamejs/test/layer-0-primitives/codebase-patterns.test.js +739 -1
  302. package/lib/vendor/blamejs/test/layer-0-primitives/codepoint-class.test.js +8 -0
  303. package/lib/vendor/blamejs/test/layer-0-primitives/compliance-ai-act.test.js +194 -0
  304. package/lib/vendor/blamejs/test/layer-0-primitives/compliance-lifecycle-proto-key.test.js +104 -0
  305. package/lib/vendor/blamejs/test/layer-0-primitives/compliance-sanctions.test.js +254 -0
  306. package/lib/vendor/blamejs/test/layer-0-primitives/content-credentials.test.js +613 -3
  307. package/lib/vendor/blamejs/test/layer-0-primitives/cookies.test.js +140 -0
  308. package/lib/vendor/blamejs/test/layer-0-primitives/cose.test.js +407 -0
  309. package/lib/vendor/blamejs/test/layer-0-primitives/crypto-adversarial.test.js +352 -0
  310. package/lib/vendor/blamejs/test/layer-0-primitives/crypto-field-derived-hash.test.js +32 -0
  311. package/lib/vendor/blamejs/test/layer-0-primitives/crypto-field.test.js +575 -0
  312. package/lib/vendor/blamejs/test/layer-0-primitives/crypto-hash-files-parallel.test.js +10 -0
  313. package/lib/vendor/blamejs/test/layer-0-primitives/crypto-hash-stream.test.js +24 -0
  314. package/lib/vendor/blamejs/test/layer-0-primitives/crypto-oprf.test.js +17 -0
  315. package/lib/vendor/blamejs/test/layer-0-primitives/crypto-spki-pin.test.js +183 -0
  316. package/lib/vendor/blamejs/test/layer-0-primitives/crypto-xwing.test.js +48 -0
  317. package/lib/vendor/blamejs/test/layer-0-primitives/crypto.test.js +345 -0
  318. package/lib/vendor/blamejs/test/layer-0-primitives/csp-report.test.js +58 -0
  319. package/lib/vendor/blamejs/test/layer-0-primitives/csv.test.js +48 -0
  320. package/lib/vendor/blamejs/test/layer-0-primitives/daemon.test.js +459 -1
  321. package/lib/vendor/blamejs/test/layer-0-primitives/dark-patterns.test.js +19 -0
  322. package/lib/vendor/blamejs/test/layer-0-primitives/db-query.test.js +1019 -0
  323. package/lib/vendor/blamejs/test/layer-0-primitives/db-raw-residency-gate.test.js +77 -0
  324. package/lib/vendor/blamejs/test/layer-0-primitives/db.test.js +1621 -0
  325. package/lib/vendor/blamejs/test/layer-0-primitives/ddl-change-control.test.js +462 -3
  326. package/lib/vendor/blamejs/test/layer-0-primitives/dnssec.test.js +323 -0
  327. package/lib/vendor/blamejs/test/layer-0-primitives/dpop-middleware-verify.test.js +562 -0
  328. package/lib/vendor/blamejs/test/layer-0-primitives/dsr.test.js +901 -1
  329. package/lib/vendor/blamejs/test/layer-0-primitives/dual-control.test.js +249 -0
  330. package/lib/vendor/blamejs/test/layer-0-primitives/external-db-migrate.test.js +561 -0
  331. package/lib/vendor/blamejs/test/layer-0-primitives/external-db.test.js +1214 -0
  332. package/lib/vendor/blamejs/test/layer-0-primitives/fal.test.js +21 -0
  333. package/lib/vendor/blamejs/test/layer-0-primitives/fedcm-dbsc.test.js +46 -20
  334. package/lib/vendor/blamejs/test/layer-0-primitives/federation-vc-suite.test.js +147 -3
  335. package/lib/vendor/blamejs/test/layer-0-primitives/fido-mds3.test.js +907 -38
  336. package/lib/vendor/blamejs/test/layer-0-primitives/file-upload-content-safety-skip-audit.test.js +29 -0
  337. package/lib/vendor/blamejs/test/layer-0-primitives/file-upload.test.js +1135 -0
  338. package/lib/vendor/blamejs/test/layer-0-primitives/flag.test.js +30 -0
  339. package/lib/vendor/blamejs/test/layer-0-primitives/forms.test.js +747 -0
  340. package/lib/vendor/blamejs/test/layer-0-primitives/gate-contract.test.js +1855 -0
  341. package/lib/vendor/blamejs/test/layer-0-primitives/gdpr-ropa.test.js +30 -0
  342. package/lib/vendor/blamejs/test/layer-0-primitives/guard-archive.test.js +86 -0
  343. package/lib/vendor/blamejs/test/layer-0-primitives/guard-auth.test.js +117 -0
  344. package/lib/vendor/blamejs/test/layer-0-primitives/guard-cidr.test.js +151 -0
  345. package/lib/vendor/blamejs/test/layer-0-primitives/guard-domain.test.js +422 -0
  346. package/lib/vendor/blamejs/test/layer-0-primitives/guard-filename.test.js +424 -0
  347. package/lib/vendor/blamejs/test/layer-0-primitives/{guard-gate-disposition-coverage.test.js → guard-gate-disposition.test.js} +1 -1
  348. package/lib/vendor/blamejs/test/layer-0-primitives/guard-graphql.test.js +340 -0
  349. package/lib/vendor/blamejs/test/layer-0-primitives/guard-html.test.js +29 -0
  350. package/lib/vendor/blamejs/test/layer-0-primitives/guard-idempotency-key.test.js +28 -0
  351. package/lib/vendor/blamejs/test/layer-0-primitives/guard-image.test.js +519 -45
  352. package/lib/vendor/blamejs/test/layer-0-primitives/guard-imap-command.test.js +0 -0
  353. package/lib/vendor/blamejs/test/layer-0-primitives/guard-jmap.test.js +51 -0
  354. package/lib/vendor/blamejs/test/layer-0-primitives/guard-jsonpath.test.js +66 -0
  355. package/lib/vendor/blamejs/test/layer-0-primitives/guard-jwt.test.js +436 -0
  356. package/lib/vendor/blamejs/test/layer-0-primitives/guard-managesieve-command.test.js +25 -0
  357. package/lib/vendor/blamejs/test/layer-0-primitives/guard-markdown.test.js +16 -0
  358. package/lib/vendor/blamejs/test/layer-0-primitives/guard-mime.test.js +86 -0
  359. package/lib/vendor/blamejs/test/layer-0-primitives/guard-oauth.test.js +140 -0
  360. package/lib/vendor/blamejs/test/layer-0-primitives/guard-pdf.test.js +80 -0
  361. package/lib/vendor/blamejs/test/layer-0-primitives/guard-pop3-command.test.js +27 -0
  362. package/lib/vendor/blamejs/test/layer-0-primitives/guard-regex.test.js +99 -0
  363. package/lib/vendor/blamejs/test/layer-0-primitives/guard-shell.test.js +76 -0
  364. package/lib/vendor/blamejs/test/layer-0-primitives/{guard-sql-coverage.test.js → guard-sql.test.js} +3 -3
  365. package/lib/vendor/blamejs/test/layer-0-primitives/guard-svg.test.js +524 -0
  366. package/lib/vendor/blamejs/test/layer-0-primitives/guard-template.test.js +71 -0
  367. package/lib/vendor/blamejs/test/layer-0-primitives/guard-time.test.js +92 -0
  368. package/lib/vendor/blamejs/test/layer-0-primitives/guard-uuid.test.js +86 -0
  369. package/lib/vendor/blamejs/test/layer-0-primitives/html-balance.test.js +38 -0
  370. package/lib/vendor/blamejs/test/layer-0-primitives/http-client-cache-authorization.test.js +347 -0
  371. package/lib/vendor/blamejs/test/layer-0-primitives/http-client-cache.test.js +908 -0
  372. package/lib/vendor/blamejs/test/layer-0-primitives/http-client.test.js +2874 -0
  373. package/lib/vendor/blamejs/test/layer-0-primitives/http-message-signature.test.js +643 -0
  374. package/lib/vendor/blamejs/test/layer-0-primitives/i18n-messageformat.test.js +38 -0
  375. package/lib/vendor/blamejs/test/layer-0-primitives/i18n.test.js +1153 -1
  376. package/lib/vendor/blamejs/test/layer-0-primitives/idempotency-key.test.js +494 -0
  377. package/lib/vendor/blamejs/test/layer-0-primitives/ip-utils.test.js +30 -0
  378. package/lib/vendor/blamejs/test/layer-0-primitives/jsdoc-example-execution.test.js +177 -0
  379. package/lib/vendor/blamejs/test/layer-0-primitives/json-path.test.js +103 -0
  380. package/lib/vendor/blamejs/test/layer-0-primitives/json-schema.test.js +214 -0
  381. package/lib/vendor/blamejs/test/layer-0-primitives/jwk.test.js +41 -0
  382. package/lib/vendor/blamejs/test/layer-0-primitives/jwt-external.test.js +276 -0
  383. package/lib/vendor/blamejs/test/layer-0-primitives/keychain.test.js +0 -0
  384. package/lib/vendor/blamejs/test/layer-0-primitives/log-stream.test.js +241 -0
  385. package/lib/vendor/blamejs/test/layer-0-primitives/log.test.js +106 -0
  386. package/lib/vendor/blamejs/test/layer-0-primitives/mail-agent.test.js +441 -0
  387. package/lib/vendor/blamejs/test/layer-0-primitives/mail-auth.test.js +2136 -4
  388. package/lib/vendor/blamejs/test/layer-0-primitives/mail-bimi.test.js +759 -12
  389. package/lib/vendor/blamejs/test/layer-0-primitives/mail-bounce.test.js +811 -1
  390. package/lib/vendor/blamejs/test/layer-0-primitives/mail-crypto-pgp-experimental.test.js +401 -3
  391. package/lib/vendor/blamejs/test/layer-0-primitives/mail-crypto-pgp.test.js +751 -8
  392. package/lib/vendor/blamejs/test/layer-0-primitives/mail-crypto-smime.test.js +864 -0
  393. package/lib/vendor/blamejs/test/layer-0-primitives/mail-crypto.test.js +110 -0
  394. package/lib/vendor/blamejs/test/layer-0-primitives/mail-dav.test.js +830 -1
  395. package/lib/vendor/blamejs/test/layer-0-primitives/mail-deploy.test.js +635 -86
  396. package/lib/vendor/blamejs/test/layer-0-primitives/mail-dkim.test.js +818 -0
  397. package/lib/vendor/blamejs/test/layer-0-primitives/mail-helo.test.js +27 -0
  398. package/lib/vendor/blamejs/test/layer-0-primitives/mail-scan.test.js +199 -0
  399. package/lib/vendor/blamejs/test/layer-0-primitives/mail-send-deliver.test.js +686 -2
  400. package/lib/vendor/blamejs/test/layer-0-primitives/mail-server-imap.test.js +778 -0
  401. package/lib/vendor/blamejs/test/layer-0-primitives/mail-server-jmap.test.js +1438 -0
  402. package/lib/vendor/blamejs/test/layer-0-primitives/mail-server-managesieve.test.js +449 -6
  403. package/lib/vendor/blamejs/test/layer-0-primitives/mail-server-mx.test.js +773 -2
  404. package/lib/vendor/blamejs/test/layer-0-primitives/mail-server-pop3.test.js +623 -3
  405. package/lib/vendor/blamejs/test/layer-0-primitives/mail-server-rate-limit.test.js +55 -0
  406. package/lib/vendor/blamejs/test/layer-0-primitives/mail-server-registry.test.js +13 -0
  407. package/lib/vendor/blamejs/test/layer-0-primitives/mail-server-submission.test.js +877 -1
  408. package/lib/vendor/blamejs/test/layer-0-primitives/mail-sieve.test.js +326 -0
  409. package/lib/vendor/blamejs/test/layer-0-primitives/mail-store-fts.test.js +55 -0
  410. package/lib/vendor/blamejs/test/layer-0-primitives/mail-store.test.js +242 -0
  411. package/lib/vendor/blamejs/test/layer-0-primitives/mail.test.js +1596 -2
  412. package/lib/vendor/blamejs/test/layer-0-primitives/mcp.test.js +440 -4
  413. package/lib/vendor/blamejs/test/layer-0-primitives/metrics-snapshot.test.js +89 -0
  414. package/lib/vendor/blamejs/test/layer-0-primitives/metrics.test.js +1230 -0
  415. package/lib/vendor/blamejs/test/layer-0-primitives/middleware-assetlinks.test.js +113 -0
  416. package/lib/vendor/blamejs/test/layer-0-primitives/middleware-body-parser.test.js +1169 -0
  417. package/lib/vendor/blamejs/test/layer-0-primitives/middleware-bot-disclose.test.js +123 -0
  418. package/lib/vendor/blamejs/test/layer-0-primitives/middleware-cookies.test.js +108 -0
  419. package/lib/vendor/blamejs/test/layer-0-primitives/middleware-gpc.test.js +121 -0
  420. package/lib/vendor/blamejs/test/layer-0-primitives/middleware-headers.test.js +163 -0
  421. package/lib/vendor/blamejs/test/layer-0-primitives/middleware-host-allowlist.test.js +154 -0
  422. package/lib/vendor/blamejs/test/layer-0-primitives/middleware-require-content-type.test.js +127 -0
  423. package/lib/vendor/blamejs/test/layer-0-primitives/{middleware-tus-upload-coverage.test.js → middleware-tus-upload.test.js} +45 -0
  424. package/lib/vendor/blamejs/test/layer-0-primitives/middleware-web-app-manifest.test.js +132 -0
  425. package/lib/vendor/blamejs/test/layer-0-primitives/mtls-ca-crl-fingerprint-only.test.js +92 -0
  426. package/lib/vendor/blamejs/test/layer-0-primitives/network-dns-resolver.test.js +65 -0
  427. package/lib/vendor/blamejs/test/layer-0-primitives/network-dns.test.js +1727 -1
  428. package/lib/vendor/blamejs/test/layer-0-primitives/network-nts.test.js +699 -0
  429. package/lib/vendor/blamejs/test/layer-0-primitives/network-smtp-policy.test.js +1181 -0
  430. package/lib/vendor/blamejs/test/layer-0-primitives/network-tls.test.js +1876 -3
  431. package/lib/vendor/blamejs/test/layer-0-primitives/network.test.js +32 -0
  432. package/lib/vendor/blamejs/test/layer-0-primitives/nonce-store-enforce-replay-nonboolean.test.js +81 -0
  433. package/lib/vendor/blamejs/test/layer-0-primitives/ntp-check.test.js +122 -0
  434. package/lib/vendor/blamejs/test/layer-0-primitives/observability-tracing.test.js +378 -0
  435. package/lib/vendor/blamejs/test/layer-0-primitives/observability.test.js +77 -0
  436. package/lib/vendor/blamejs/test/layer-0-primitives/oid4vci.test.js +1016 -0
  437. package/lib/vendor/blamejs/test/layer-0-primitives/openid-federation.test.js +946 -0
  438. package/lib/vendor/blamejs/test/layer-0-primitives/outbox.test.js +818 -0
  439. package/lib/vendor/blamejs/test/layer-0-primitives/own-property-membership-guards.test.js +109 -0
  440. package/lib/vendor/blamejs/test/layer-0-primitives/parsers-safe-toml.test.js +543 -0
  441. package/lib/vendor/blamejs/test/layer-0-primitives/{parsers-safe-yaml-coverage.test.js → parsers-safe-yaml.test.js} +2 -2
  442. package/lib/vendor/blamejs/test/layer-0-primitives/parsers-standalone.test.js +73 -0
  443. package/lib/vendor/blamejs/test/layer-0-primitives/passkey.test.js +649 -0
  444. package/lib/vendor/blamejs/test/layer-0-primitives/permissions.test.js +524 -0
  445. package/lib/vendor/blamejs/test/layer-0-primitives/pqc-agent-curve.test.js +22 -0
  446. package/lib/vendor/blamejs/test/layer-0-primitives/pubsub.test.js +295 -0
  447. package/lib/vendor/blamejs/test/layer-0-primitives/queue-flow-repeat.test.js +36 -0
  448. package/lib/vendor/blamejs/test/layer-0-primitives/queue.test.js +83 -0
  449. package/lib/vendor/blamejs/test/layer-0-primitives/rate-limit-xff-spoofing.test.js +34 -0
  450. package/lib/vendor/blamejs/test/layer-0-primitives/redact.test.js +1031 -0
  451. package/lib/vendor/blamejs/test/layer-0-primitives/request-helpers.test.js +94 -0
  452. package/lib/vendor/blamejs/test/layer-0-primitives/require-bound-key.test.js +401 -0
  453. package/lib/vendor/blamejs/test/layer-0-primitives/restore-empty-manifest-wipe.test.js +154 -0
  454. package/lib/vendor/blamejs/test/layer-0-primitives/retention.test.js +600 -0
  455. package/lib/vendor/blamejs/test/layer-0-primitives/router-host-path-injection.test.js +231 -0
  456. package/lib/vendor/blamejs/test/layer-0-primitives/router-tls0rtt.test.js +21 -0
  457. package/lib/vendor/blamejs/test/layer-0-primitives/router.test.js +1277 -0
  458. package/lib/vendor/blamejs/test/layer-0-primitives/safe-async.test.js +133 -0
  459. package/lib/vendor/blamejs/test/layer-0-primitives/safe-buffer-linear-scans.test.js +14 -0
  460. package/lib/vendor/blamejs/test/layer-0-primitives/safe-buffer.test.js +80 -0
  461. package/lib/vendor/blamejs/test/layer-0-primitives/safe-decompress.test.js +28 -0
  462. package/lib/vendor/blamejs/test/layer-0-primitives/safe-dns.test.js +245 -0
  463. package/lib/vendor/blamejs/test/layer-0-primitives/safe-ical.test.js +32 -0
  464. package/lib/vendor/blamejs/test/layer-0-primitives/safe-ini.test.js +376 -0
  465. package/lib/vendor/blamejs/test/layer-0-primitives/safe-json.test.js +175 -0
  466. package/lib/vendor/blamejs/test/layer-0-primitives/safe-mime.test.js +518 -0
  467. package/lib/vendor/blamejs/test/layer-0-primitives/safe-object.test.js +62 -0
  468. package/lib/vendor/blamejs/test/layer-0-primitives/safe-path.test.js +30 -0
  469. package/lib/vendor/blamejs/test/layer-0-primitives/safe-schema.test.js +104 -0
  470. package/lib/vendor/blamejs/test/layer-0-primitives/safe-sql.test.js +142 -0
  471. package/lib/vendor/blamejs/test/layer-0-primitives/safe-url.test.js +112 -0
  472. package/lib/vendor/blamejs/test/layer-0-primitives/safe-vcard.test.js +26 -0
  473. package/lib/vendor/blamejs/test/layer-0-primitives/scheduler.test.js +157 -0
  474. package/lib/vendor/blamejs/test/layer-0-primitives/scim-server.test.js +396 -0
  475. package/lib/vendor/blamejs/test/layer-0-primitives/sd-jwt-vc.test.js +930 -0
  476. package/lib/vendor/blamejs/test/layer-0-primitives/security-assert.test.js +755 -82
  477. package/lib/vendor/blamejs/test/layer-0-primitives/self-update.test.js +1053 -0
  478. package/lib/vendor/blamejs/test/layer-0-primitives/session-device-binding.test.js +200 -0
  479. package/lib/vendor/blamejs/test/layer-0-primitives/session-strict-binding-missing-failclosed.test.js +110 -0
  480. package/lib/vendor/blamejs/test/layer-0-primitives/sigv4-bucket-ops.test.js +636 -0
  481. package/lib/vendor/blamejs/test/layer-0-primitives/sql-offset-without-limit.test.js +94 -0
  482. package/lib/vendor/blamejs/test/layer-0-primitives/sql.test.js +1190 -0
  483. package/lib/vendor/blamejs/test/layer-0-primitives/ssrf-guard.test.js +21 -0
  484. package/lib/vendor/blamejs/test/layer-0-primitives/static.test.js +850 -0
  485. package/lib/vendor/blamejs/test/layer-0-primitives/storage-presigned-url.test.js +146 -0
  486. package/lib/vendor/blamejs/test/layer-0-primitives/storage.test.js +621 -0
  487. package/lib/vendor/blamejs/test/layer-0-primitives/subject.test.js +47 -0
  488. package/lib/vendor/blamejs/test/layer-0-primitives/template.test.js +582 -0
  489. package/lib/vendor/blamejs/test/layer-0-primitives/tenant-quota.test.js +587 -25
  490. package/lib/vendor/blamejs/test/layer-0-primitives/time.test.js +11 -0
  491. package/lib/vendor/blamejs/test/layer-0-primitives/tsa.test.js +524 -63
  492. package/lib/vendor/blamejs/test/layer-0-primitives/uri-template.test.js +27 -0
  493. package/lib/vendor/blamejs/test/layer-0-primitives/vault-rotate.test.js +866 -0
  494. package/lib/vendor/blamejs/test/layer-0-primitives/vault.test.js +74 -0
  495. package/lib/vendor/blamejs/test/layer-0-primitives/vc.test.js +215 -0
  496. package/lib/vendor/blamejs/test/layer-0-primitives/watcher.test.js +550 -0
  497. package/lib/vendor/blamejs/test/layer-0-primitives/webhook-dispatcher.test.js +388 -0
  498. package/lib/vendor/blamejs/test/layer-0-primitives/webhook.test.js +262 -0
  499. package/lib/vendor/blamejs/test/layer-0-primitives/websocket.test.js +1294 -0
  500. package/lib/vendor/blamejs/test/layer-0-primitives/ws-client.test.js +629 -0
  501. package/lib/vendor/blamejs/test/layer-0-primitives/xml-c14n-attr-normalization.test.js +164 -0
  502. package/lib/vendor/blamejs/test/smoke.js +2 -0
  503. package/package.json +1 -1
  504. package/lib/vendor/blamejs/release-notes/v0.16.0.json +0 -44
  505. package/lib/vendor/blamejs/release-notes/v0.16.1.json +0 -36
  506. package/lib/vendor/blamejs/release-notes/v0.16.2.json +0 -71
  507. package/lib/vendor/blamejs/release-notes/v0.16.3.json +0 -71
  508. package/lib/vendor/blamejs/test/layer-0-primitives/acme-coverage.test.js +0 -441
  509. package/lib/vendor/blamejs/test/layer-0-primitives/auth-oauth-coverage.test.js +0 -482
  510. package/lib/vendor/blamejs/test/layer-0-primitives/auth-saml-coverage.test.js +0 -671
  511. package/lib/vendor/blamejs/test/layer-0-primitives/backup-index-coverage.test.js +0 -690
  512. package/lib/vendor/blamejs/test/layer-0-primitives/cli-coverage.test.js +0 -238
  513. package/lib/vendor/blamejs/test/layer-0-primitives/content-credentials-coverage.test.js +0 -319
  514. package/lib/vendor/blamejs/test/layer-0-primitives/keychain-coverage.test.js +0 -0
  515. package/lib/vendor/blamejs/test/layer-0-primitives/mail-auth-coverage.test.js +0 -437
  516. package/lib/vendor/blamejs/test/layer-0-primitives/mcp-coverage.test.js +0 -443
  517. package/lib/vendor/blamejs/test/layer-0-primitives/metrics-coverage.test.js +0 -395
  518. package/lib/vendor/blamejs/test/layer-0-primitives/network-smtp-policy-coverage.test.js +0 -565
  519. package/lib/vendor/blamejs/test/layer-0-primitives/router-coverage.test.js +0 -592
  520. package/lib/vendor/blamejs/test/layer-0-primitives/sql-coverage.test.js +0 -422
  521. package/lib/vendor/blamejs/test/layer-0-primitives/test-coverage.test.js +0 -573
@@ -813,6 +813,887 @@ function testExports() {
813
813
  typeof sdJwtVc.disclosure.encode === "function");
814
814
  }
815
815
 
816
+ // ---- Shared crafting helpers for adversarial / edge inputs ----
817
+ //
818
+ // These build hand-crafted SD-JWT / JWT byte sequences to drive verify()
819
+ // and present() down error / defensive branches the happy path never
820
+ // reaches. They are NOT mocks (no helper provides an "arbitrary-payload
821
+ // JWT signer"); they mint real issuer-/holder-signed bytes so the true
822
+ // cryptographic verify path executes against tampered structure.
823
+
824
+ function _b64uJson(o) {
825
+ return Buffer.from(JSON.stringify(o), "utf8").toString("base64url");
826
+ }
827
+
828
+ // ES256 (ECDSA P-256, JOSE raw r||s) — mirrors the library's own
829
+ // _signJwt so a crafted issuer/holder credential verifies for real.
830
+ function _signEs256(header, payload, privateKey) {
831
+ var si = _b64uJson(header) + "." + _b64uJson(payload);
832
+ var sig = nodeCrypto.sign("sha256", Buffer.from(si, "ascii"),
833
+ { key: privateKey, dsaEncoding: "ieee-p1363" });
834
+ return si + "." + sig.toString("base64url");
835
+ }
836
+
837
+ async function _expectThrow(label, code, fn) {
838
+ var err = null;
839
+ try { await fn(); } catch (e) { err = e; }
840
+ check(label, err && (code == null || err.code === code));
841
+ return err;
842
+ }
843
+
844
+ // ---- _hashDisclosure (exported test hook) ----
845
+
846
+ function testHashDisclosureBadAlg() {
847
+ // Direct call with an unsupported alg drives the internal guard that
848
+ // issue()/verify() pre-validate around.
849
+ _expectThrowSync("_hashDisclosure: unsupported alg throws bad-hash",
850
+ "auth-sd-jwt-vc/bad-hash",
851
+ function () { return sdJwtVc._hashDisclosure("some-disclosure", "md5"); });
852
+ // An inherited Object.prototype member (a truthy prototype-chain hit on
853
+ // the SUPPORTED_HASH_ALGS lookup) must get the typed bad-hash refusal, not
854
+ // a raw createHash(<function>) ERR_INVALID_ARG_TYPE.
855
+ ["constructor", "__proto__", "toString", "valueOf"].forEach(function (m) {
856
+ _expectThrowSync("_hashDisclosure: inherited-member alg '" + m + "' throws bad-hash",
857
+ "auth-sd-jwt-vc/bad-hash",
858
+ function () { return sdJwtVc._hashDisclosure("x", m); });
859
+ });
860
+ // A supported alg returns a base64url digest.
861
+ var d = sdJwtVc._hashDisclosure("x", "sha-256");
862
+ check("_hashDisclosure: supported alg returns base64url digest",
863
+ typeof d === "string" && /^[A-Za-z0-9_-]+$/.test(d));
864
+ }
865
+
866
+ function _expectThrowSync(label, code, fn) {
867
+ var err = null;
868
+ try { fn(); } catch (e) { err = e; }
869
+ check(label, err && (code == null || err.code === code));
870
+ return err;
871
+ }
872
+
873
+ // ---- issue: defensive input branches ----
874
+
875
+ function testIssueClaimsNotObject() {
876
+ var key = _newKeyPair().privateKey;
877
+ _expectThrowSync("issue: array claims rejected", "auth-sd-jwt-vc/bad-opts",
878
+ function () {
879
+ sdJwtVc.issue({ issuer: "https://i", vct: "x", claims: [1, 2], issuerKey: key });
880
+ });
881
+ _expectThrowSync("issue: string claims rejected", "auth-sd-jwt-vc/bad-opts",
882
+ function () {
883
+ sdJwtVc.issue({ issuer: "https://i", vct: "x", claims: "nope", issuerKey: key });
884
+ });
885
+ }
886
+
887
+ function testIssueBadHashAlg() {
888
+ var key = _newKeyPair().privateKey;
889
+ _expectThrowSync("issue: unsupported hashAlg rejected", "auth-sd-jwt-vc/bad-hash",
890
+ function () {
891
+ sdJwtVc.issue({
892
+ issuer: "https://i", vct: "x", claims: { a: 1 },
893
+ issuerKey: key, hashAlg: "md5",
894
+ });
895
+ });
896
+ }
897
+
898
+ function testIssueNoIssuerKey() {
899
+ _expectThrowSync("issue: missing issuerKey rejected", "auth-sd-jwt-vc/no-key",
900
+ function () {
901
+ sdJwtVc.issue({ issuer: "https://i", vct: "x", claims: { a: 1 } });
902
+ });
903
+ }
904
+
905
+ function testIssueBadCnf() {
906
+ var key = _newKeyPair().privateKey;
907
+ // holderKey present but not a JWK object (string) → bad-cnf.
908
+ _expectThrowSync("issue: non-object holderKey rejected", "auth-sd-jwt-vc/bad-cnf",
909
+ function () {
910
+ sdJwtVc.issue({
911
+ issuer: "https://i", vct: "x", claims: { a: 1 },
912
+ issuerKey: key, holderKey: "not-a-jwk",
913
+ });
914
+ });
915
+ // Object without kty → bad-cnf.
916
+ _expectThrowSync("issue: holderKey object without kty rejected",
917
+ "auth-sd-jwt-vc/bad-cnf",
918
+ function () {
919
+ sdJwtVc.issue({
920
+ issuer: "https://i", vct: "x", claims: { a: 1 },
921
+ issuerKey: key, holderKey: { crv: "P-256" },
922
+ });
923
+ });
924
+ }
925
+
926
+ // ---- issue + verify across every supported signature algorithm ----
927
+
928
+ async function testIssueVerifyAllAlgs() {
929
+ var cases = [
930
+ { alg: "ES384", kp: function () { return nodeCrypto.generateKeyPairSync("ec", { namedCurve: "P-384" }); } },
931
+ { alg: "EdDSA", kp: function () { return nodeCrypto.generateKeyPairSync("ed25519"); } },
932
+ { alg: "ML-DSA-65", kp: function () { return nodeCrypto.generateKeyPairSync("ml-dsa-65"); } },
933
+ { alg: "ML-DSA-87", kp: function () { return nodeCrypto.generateKeyPairSync("ml-dsa-87"); } },
934
+ ];
935
+ for (var i = 0; i < cases.length; i++) {
936
+ var c = cases[i];
937
+ var kp = c.kp();
938
+ var sd = sdJwtVc.issue({
939
+ issuer: "https://issuer", vct: "x",
940
+ claims: { given_name: "Alice", country: "US" },
941
+ selectivelyDisclosed: ["given_name"],
942
+ issuerKey: kp.privateKey, algorithm: c.alg,
943
+ });
944
+ check("issue: " + c.alg + " header alg stamped", sd.header.alg === c.alg);
945
+ var pub = kp.publicKey;
946
+ var result = await sdJwtVc.verify(sd.token, {
947
+ issuerKeyResolver: (function (k) { return async function () { return k; }; })(pub),
948
+ });
949
+ check("verify: " + c.alg + " round-trips",
950
+ result.valid === true && result.claims.given_name === "Alice");
951
+ }
952
+ }
953
+
954
+ // ---- present: defensive / option branches ----
955
+
956
+ function testPresentMalformed() {
957
+ _expectThrowSync("present: sdJwt without ~ rejected", "auth-sd-jwt-vc/malformed",
958
+ function () {
959
+ sdJwtVc.present({ sdJwt: "no-separator-token", disclosedClaimNames: [] });
960
+ });
961
+ }
962
+
963
+ function testPresentUnsupportedKbAlg() {
964
+ var issuer = _newKeyPair();
965
+ var holder = _newKeyPair();
966
+ var sd = sdJwtVc.issue({
967
+ issuer: "https://i", vct: "x", claims: { a: 1 },
968
+ issuerKey: issuer.privateKey, holderKey: _jwk(holder.publicKey),
969
+ });
970
+ _expectThrowSync("present: unsupported KB algorithm rejected",
971
+ "auth-sd-jwt-vc/unsupported-alg",
972
+ function () {
973
+ sdJwtVc.present({
974
+ sdJwt: sd.token, audience: "v", nonce: "n",
975
+ holderKey: holder.privateKey, algorithm: "HS256",
976
+ });
977
+ });
978
+ }
979
+
980
+ function testPresentBadSdAlg() {
981
+ // A credential whose issuer payload declares an unsupported _sd_alg is
982
+ // refused by present() (holder computes sd_hash with that alg). Craft
983
+ // the JWT bytes directly — present() reads the UNSIGNED payload, so no
984
+ // real signature is needed to reach this guard.
985
+ var jwt = "aGVhZGVy" + "." +
986
+ _b64uJson({ iss: "https://i", vct: "x", _sd: [], _sd_alg: "sha-1" }) + "." +
987
+ "c2ln";
988
+ _expectThrowSync("present: unsupported issuer _sd_alg rejected",
989
+ "auth-sd-jwt-vc/bad-hash",
990
+ function () {
991
+ sdJwtVc.present({ sdJwt: jwt + "~", disclosedClaimNames: [] });
992
+ });
993
+ // An inherited Object.prototype member as `_sd_alg` (read from the
994
+ // unsigned issuer payload, attacker-controlled) must be refused with the
995
+ // typed error. Each such member is a truthy prototype-chain hit that a
996
+ // `!SUPPORTED_HASH_ALGS[_sdAlg]` guard would let slip, silently building a
997
+ // presentation against an unsupported hash (fail-open).
998
+ ["constructor", "__proto__", "toString", "valueOf"].forEach(function (m) {
999
+ var inhJwt = "aGVhZGVy" + "." +
1000
+ _b64uJson({ iss: "https://i", vct: "x", _sd: [], _sd_alg: m }) + "." + "c2ln";
1001
+ _expectThrowSync("present: inherited-member issuer _sd_alg '" + m + "' rejected",
1002
+ "auth-sd-jwt-vc/bad-hash",
1003
+ function () {
1004
+ sdJwtVc.present({ sdJwt: inhJwt + "~", disclosedClaimNames: [] });
1005
+ });
1006
+ });
1007
+ }
1008
+
1009
+ function testPresentSdAlgFallbackOnMalformedPayload() {
1010
+ // When the issuer JWT payload can't be parsed, present() falls back to
1011
+ // the spec-default sha-256 (rather than throwing) and still builds a
1012
+ // presentation.
1013
+ var jwt = "aGVhZGVy" + ".!!!not-valid-json-b64!!!." + "c2ln";
1014
+ var pres = sdJwtVc.present({ sdJwt: jwt + "~", disclosedClaimNames: [] });
1015
+ check("present: malformed issuer payload → sha-256 fallback, still builds",
1016
+ typeof pres.presentation === "string" && pres.presentation.indexOf("~") !== -1);
1017
+ }
1018
+
1019
+ async function testPresentKeyAttestationHeader() {
1020
+ var issuer = _newKeyPair();
1021
+ var holder = _newKeyPair();
1022
+ var sd = sdJwtVc.issue({
1023
+ issuer: "https://i", vct: "x", claims: { a: 1 },
1024
+ issuerKey: issuer.privateKey, holderKey: _jwk(holder.publicKey),
1025
+ });
1026
+ var pres = sdJwtVc.present({
1027
+ sdJwt: sd.token, audience: "v", nonce: "n",
1028
+ holderKey: holder.privateKey, algorithm: "ES256",
1029
+ keyAttestation: "attestation.jwt.token",
1030
+ issuedAt: Date.now(),
1031
+ });
1032
+ var kbHeader = JSON.parse(Buffer.from(
1033
+ pres.presentation.split("~").pop().split(".")[0], "base64url").toString("utf8"));
1034
+ check("present: keyAttestation embedded in KB-JWT header",
1035
+ kbHeader.key_attestation === "attestation.jwt.token");
1036
+ }
1037
+
1038
+ // ---- verify: top-level input validation ----
1039
+
1040
+ async function testVerifyInvalidPresentationArg() {
1041
+ var resolver = async function () { return _newKeyPair().publicKey; };
1042
+ await _expectThrow("verify: non-string presentation rejected",
1043
+ "auth-sd-jwt-vc/no-token",
1044
+ function () { return sdJwtVc.verify(12345, { issuerKeyResolver: resolver }); });
1045
+ await _expectThrow("verify: empty-string presentation rejected",
1046
+ "auth-sd-jwt-vc/no-token",
1047
+ function () { return sdJwtVc.verify("", { issuerKeyResolver: resolver }); });
1048
+ }
1049
+
1050
+ async function testVerifyNoResolver() {
1051
+ await _expectThrow("verify: missing issuerKeyResolver rejected",
1052
+ "auth-sd-jwt-vc/no-resolver",
1053
+ function () { return sdJwtVc.verify("a.b.c~", {}); });
1054
+ }
1055
+
1056
+ async function testVerifyPresentationNoSeparator() {
1057
+ var resolver = async function () { return _newKeyPair().publicKey; };
1058
+ await _expectThrow("verify: presentation without ~ rejected",
1059
+ "auth-sd-jwt-vc/malformed",
1060
+ function () { return sdJwtVc.verify("a.b.c", { issuerKeyResolver: resolver }); });
1061
+ }
1062
+
1063
+ async function testVerifyJwtNotThreeParts() {
1064
+ var resolver = async function () { return _newKeyPair().publicKey; };
1065
+ await _expectThrow("verify: issuer JWT without 3 parts rejected",
1066
+ "auth-sd-jwt-vc/malformed-jwt",
1067
+ function () { return sdJwtVc.verify("only-one-part~", { issuerKeyResolver: resolver }); });
1068
+ }
1069
+
1070
+ async function testVerifyBadHeader() {
1071
+ var resolver = async function () { return _newKeyPair().publicKey; };
1072
+ // Header decodes to bytes but not JSON → bad-header.
1073
+ var badHeader = Buffer.from("not-json", "utf8").toString("base64url");
1074
+ await _expectThrow("verify: non-JSON JWT header rejected", "auth-sd-jwt-vc/bad-header",
1075
+ function () {
1076
+ return sdJwtVc.verify(badHeader + ".cGF5.c2ln~", { issuerKeyResolver: resolver });
1077
+ });
1078
+ }
1079
+
1080
+ async function testVerifyUnsupportedHeaderAlg() {
1081
+ var token = _b64uJson({ alg: "HS256", typ: "vc+sd-jwt" }) + "." +
1082
+ _b64uJson({ iss: "x" }) + ".c2ln";
1083
+ // Alg-allowlist gate fires BEFORE any key resolution.
1084
+ var resolverCalled = false;
1085
+ await _expectThrow("verify: unsupported header alg rejected before key lookup",
1086
+ "auth-sd-jwt-vc/unsupported-alg",
1087
+ function () {
1088
+ return sdJwtVc.verify(token + "~", {
1089
+ issuerKeyResolver: async function () { resolverCalled = true; return null; },
1090
+ });
1091
+ });
1092
+ check("verify: resolver not invoked for unsupported alg", resolverCalled === false);
1093
+ }
1094
+
1095
+ async function testVerifyBadTyp() {
1096
+ var resolver = async function () { return _newKeyPair().publicKey; };
1097
+ var wrongTyp = _b64uJson({ alg: "ES256", typ: "JWT" }) + "." +
1098
+ _b64uJson({ iss: "x" }) + ".c2ln";
1099
+ await _expectThrow("verify: wrong typ rejected", "auth-sd-jwt-vc/bad-typ",
1100
+ function () { return sdJwtVc.verify(wrongTyp + "~", { issuerKeyResolver: resolver }); });
1101
+ var absentTyp = _b64uJson({ alg: "ES256" }) + "." +
1102
+ _b64uJson({ iss: "x" }) + ".c2ln";
1103
+ await _expectThrow("verify: absent typ rejected", "auth-sd-jwt-vc/bad-typ",
1104
+ function () { return sdJwtVc.verify(absentTyp + "~", { issuerKeyResolver: resolver }); });
1105
+ }
1106
+
1107
+ async function testVerifyDcSdJwtTypAccepted() {
1108
+ // The `dc+sd-jwt` digital-credential profile typ must be accepted.
1109
+ var issuer = _newKeyPair();
1110
+ var nowSec = Math.floor(Date.now() / 1000);
1111
+ var jwt = _signEs256(
1112
+ { alg: "ES256", typ: "dc+sd-jwt" },
1113
+ { iss: "https://i", iat: nowSec, exp: nowSec + 3600, vct: "x", _sd: [], _sd_alg: "sha-256" },
1114
+ issuer.privateKey);
1115
+ var result = await sdJwtVc.verify(jwt + "~", {
1116
+ issuerKeyResolver: async function () { return issuer.publicKey; },
1117
+ });
1118
+ check("verify: dc+sd-jwt typ accepted", result.valid === true);
1119
+ }
1120
+
1121
+ async function testVerifyCritRefusedAndEmptyAllowed() {
1122
+ var issuer = _newKeyPair();
1123
+ // Non-empty crit → refused.
1124
+ var sdCrit = sdJwtVc.issue({
1125
+ issuer: "https://i", vct: "x", claims: { a: 1 },
1126
+ issuerKey: issuer.privateKey, algorithm: "ES256",
1127
+ extraHeader: { crit: ["unknown-ext"] },
1128
+ });
1129
+ await _expectThrow("verify: non-empty crit header refused", "auth-sd-jwt-vc/unknown-crit",
1130
+ function () {
1131
+ return sdJwtVc.verify(sdCrit.token, {
1132
+ issuerKeyResolver: async function () { return issuer.publicKey; },
1133
+ });
1134
+ });
1135
+ // Empty crit array → allowed (passes the guard, continues to verify).
1136
+ var sdEmptyCrit = sdJwtVc.issue({
1137
+ issuer: "https://i", vct: "x", claims: { a: 1 },
1138
+ issuerKey: issuer.privateKey, algorithm: "ES256",
1139
+ extraHeader: { crit: [] },
1140
+ });
1141
+ var okEmpty = await sdJwtVc.verify(sdEmptyCrit.token, {
1142
+ issuerKeyResolver: async function () { return issuer.publicKey; },
1143
+ });
1144
+ check("verify: empty crit array accepted", okEmpty.valid === true);
1145
+ }
1146
+
1147
+ async function testVerifyKeyNotFound() {
1148
+ var issuer = _newKeyPair();
1149
+ var sd = sdJwtVc.issue({
1150
+ issuer: "https://i", vct: "x", claims: { a: 1 },
1151
+ issuerKey: issuer.privateKey, algorithm: "ES256",
1152
+ });
1153
+ await _expectThrow("verify: resolver returning null rejected",
1154
+ "auth-sd-jwt-vc/key-not-found",
1155
+ function () {
1156
+ return sdJwtVc.verify(sd.token, { issuerKeyResolver: async function () { return null; } });
1157
+ });
1158
+ }
1159
+
1160
+ // ---- verify: issuerKeyResolver returning a JWK (RED — was crashing) ----
1161
+
1162
+ // A resolver that hands back a raw JWK is the common path per the
1163
+ // CVE-2026-22817 alg/kty cross-check comment in verify(). Before the fix
1164
+ // the JWK was cross-checked then passed straight to node:crypto.verify,
1165
+ // which cannot consume a bare JWK object → ERR_INVALID_ARG_TYPE, so a
1166
+ // VALID credential was rejected with a non-framework crash. The issuer
1167
+ // path must import the JWK to a KeyObject first, exactly as the holder
1168
+ // KB-JWT path does.
1169
+ async function testJwkIssuerKeyResolver() {
1170
+ var issuer = _newKeyPair();
1171
+ var sd = sdJwtVc.issue({
1172
+ issuer: "https://i", vct: "x",
1173
+ claims: { given_name: "Alice", country: "US" },
1174
+ selectivelyDisclosed: ["given_name"],
1175
+ issuerKey: issuer.privateKey, algorithm: "ES256",
1176
+ });
1177
+ var result = await sdJwtVc.verify(sd.token, {
1178
+ issuerKeyResolver: async function () { return _jwk(issuer.publicKey); },
1179
+ });
1180
+ check("verify: JWK-returning resolver verifies a valid credential",
1181
+ result.valid === true && result.claims.given_name === "Alice");
1182
+
1183
+ // Ed25519 JWK resolver path too.
1184
+ var edIssuer = nodeCrypto.generateKeyPairSync("ed25519");
1185
+ var sdEd = sdJwtVc.issue({
1186
+ issuer: "https://i", vct: "x", claims: { a: 1 },
1187
+ issuerKey: edIssuer.privateKey, algorithm: "EdDSA",
1188
+ });
1189
+ var edResult = await sdJwtVc.verify(sdEd.token, {
1190
+ issuerKeyResolver: async function () { return _jwk(edIssuer.publicKey); },
1191
+ });
1192
+ check("verify: EdDSA JWK resolver verifies", edResult.valid === true);
1193
+ }
1194
+
1195
+ async function testJwkIssuerAlgKtyMismatch() {
1196
+ // Resolver returns an EC JWK but the header alg claims EdDSA (requires
1197
+ // kty=OKP) → alg/kty cross-check refuses before node:crypto.verify.
1198
+ var issuer = _newKeyPair();
1199
+ var token = _b64uJson({ alg: "EdDSA", typ: "vc+sd-jwt" }) + "." +
1200
+ _b64uJson({ iss: "x", vct: "x" }) + ".c2ln";
1201
+ await _expectThrow("verify: issuer alg/kty mismatch (EC JWK vs EdDSA) refused",
1202
+ "auth-jwt-external/alg-kty-mismatch",
1203
+ function () {
1204
+ return sdJwtVc.verify(token + "~", {
1205
+ issuerKeyResolver: async function () { return _jwk(issuer.publicKey); },
1206
+ });
1207
+ });
1208
+ }
1209
+
1210
+ // ---- verify: clock / issuer / exp branches ----
1211
+
1212
+ async function testVerifyNowAndClockSkewOpts() {
1213
+ var issuer = _newKeyPair();
1214
+ var sd = sdJwtVc.issue({
1215
+ issuer: "https://i", vct: "x", claims: { a: 1 },
1216
+ issuerKey: issuer.privateKey, algorithm: "ES256",
1217
+ });
1218
+ var result = await sdJwtVc.verify(sd.token, {
1219
+ issuerKeyResolver: async function () { return issuer.publicKey; },
1220
+ now: Date.now(), maxClockSkewSec: 120,
1221
+ });
1222
+ check("verify: explicit now + maxClockSkewSec accepted", result.valid === true);
1223
+ }
1224
+
1225
+ async function testVerifyBadClockSkew() {
1226
+ var issuer = _newKeyPair();
1227
+ var sd = sdJwtVc.issue({
1228
+ issuer: "https://i", vct: "x", claims: { a: 1 },
1229
+ issuerKey: issuer.privateKey, algorithm: "ES256",
1230
+ });
1231
+ await _expectThrow("verify: Infinity maxClockSkewSec rejected",
1232
+ "auth-sd-jwt-vc/bad-clock-skew",
1233
+ function () {
1234
+ return sdJwtVc.verify(sd.token, {
1235
+ issuerKeyResolver: async function () { return issuer.publicKey; },
1236
+ maxClockSkewSec: Infinity,
1237
+ });
1238
+ });
1239
+ }
1240
+
1241
+ async function testVerifyIatFuture() {
1242
+ var issuer = _newKeyPair();
1243
+ var sd = sdJwtVc.issue({
1244
+ issuer: "https://i", vct: "x", claims: { a: 1 },
1245
+ issuerKey: issuer.privateKey, algorithm: "ES256",
1246
+ issuedAt: Date.now() + 60 * 60 * 1000, // 1h in the future
1247
+ });
1248
+ await _expectThrow("verify: future iat rejected", "auth-sd-jwt-vc/iat-future",
1249
+ function () {
1250
+ return sdJwtVc.verify(sd.token, {
1251
+ issuerKeyResolver: async function () { return issuer.publicKey; },
1252
+ });
1253
+ });
1254
+ }
1255
+
1256
+ async function testVerifyRequireExpMissing() {
1257
+ // A validly issuer-signed credential that omits exp: accepted normally,
1258
+ // refused under requireExp:true.
1259
+ var issuer = _newKeyPair();
1260
+ var nowSec = Math.floor(Date.now() / 1000);
1261
+ var jwt = _signEs256(
1262
+ { alg: "ES256", typ: "vc+sd-jwt" },
1263
+ { iss: "https://i", iat: nowSec, vct: "x", _sd: [], _sd_alg: "sha-256" },
1264
+ issuer.privateKey);
1265
+ var okWithout = await sdJwtVc.verify(jwt + "~", {
1266
+ issuerKeyResolver: async function () { return issuer.publicKey; },
1267
+ });
1268
+ check("verify: exp-less credential accepted without requireExp",
1269
+ okWithout.valid === true);
1270
+ await _expectThrow("verify: exp-less credential refused under requireExp",
1271
+ "auth-sd-jwt-vc/missing-exp",
1272
+ function () {
1273
+ return sdJwtVc.verify(jwt + "~", {
1274
+ issuerKeyResolver: async function () { return issuer.publicKey; },
1275
+ requireExp: true,
1276
+ });
1277
+ });
1278
+ }
1279
+
1280
+ async function testVerifyIssuerMismatch() {
1281
+ var issuer = _newKeyPair();
1282
+ var sd = sdJwtVc.issue({
1283
+ issuer: "https://issuer.example", vct: "x", claims: { a: 1 },
1284
+ issuerKey: issuer.privateKey, algorithm: "ES256",
1285
+ });
1286
+ await _expectThrow("verify: expectedIssuer mismatch refused (CVE-2026-23552)",
1287
+ "auth-sd-jwt-vc/iss-mismatch",
1288
+ function () {
1289
+ return sdJwtVc.verify(sd.token, {
1290
+ issuerKeyResolver: async function () { return issuer.publicKey; },
1291
+ expectedIssuer: "https://other-issuer.example",
1292
+ });
1293
+ });
1294
+ }
1295
+
1296
+ // ---- verify: _sd_alg / _sd reconstruction defensive branches ----
1297
+
1298
+ async function testVerifyMissingSdAlgAndSd() {
1299
+ // Payload with neither _sd nor _sd_alg → hashAlg falls back to sha-256,
1300
+ // _sd falls back to []. Valid, no disclosed claims.
1301
+ var issuer = _newKeyPair();
1302
+ var nowSec = Math.floor(Date.now() / 1000);
1303
+ var jwt = _signEs256(
1304
+ { alg: "ES256", typ: "vc+sd-jwt" },
1305
+ { iss: "https://i", iat: nowSec, exp: nowSec + 3600, vct: "x", country: "US" },
1306
+ issuer.privateKey);
1307
+ var result = await sdJwtVc.verify(jwt + "~", {
1308
+ issuerKeyResolver: async function () { return issuer.publicKey; },
1309
+ });
1310
+ check("verify: missing _sd/_sd_alg → sha-256 fallback, [] digests, valid",
1311
+ result.valid === true && result.claims.country === "US");
1312
+ }
1313
+
1314
+ async function testVerifyUnsupportedSdAlg() {
1315
+ // A malicious issuer-signed payload declaring an unsupported _sd_alg is
1316
+ // refused at reconstruction.
1317
+ var issuer = _newKeyPair();
1318
+ var nowSec = Math.floor(Date.now() / 1000);
1319
+ var jwt = _signEs256(
1320
+ { alg: "ES256", typ: "vc+sd-jwt" },
1321
+ { iss: "https://i", iat: nowSec, exp: nowSec + 3600, vct: "x", _sd: [], _sd_alg: "sha-1" },
1322
+ issuer.privateKey);
1323
+ await _expectThrow("verify: unsupported _sd_alg refused", "auth-sd-jwt-vc/bad-hash",
1324
+ function () {
1325
+ return sdJwtVc.verify(jwt + "~", {
1326
+ issuerKeyResolver: async function () { return issuer.publicKey; },
1327
+ });
1328
+ });
1329
+ }
1330
+
1331
+ async function testVerifyMalformedDisclosureSkipped() {
1332
+ // A garbage disclosure segment that decodes to null is silently skipped
1333
+ // (it is not a valid disclosure); the valid disclosure still resolves.
1334
+ var issuer = _newKeyPair();
1335
+ var sd = sdJwtVc.issue({
1336
+ issuer: "https://i", vct: "x", claims: { a: 1 },
1337
+ selectivelyDisclosed: ["a"], issuerKey: issuer.privateKey, algorithm: "ES256",
1338
+ });
1339
+ var parts = sd.token.split("~"); // [jwt, dA, ""]
1340
+ var garbage = Buffer.from("123", "utf8").toString("base64url"); // JSON number, not array → null
1341
+ var tampered = parts[0] + "~" + parts[1] + "~" + garbage + "~";
1342
+ var result = await sdJwtVc.verify(tampered, {
1343
+ issuerKeyResolver: async function () { return issuer.publicKey; },
1344
+ });
1345
+ check("verify: malformed disclosure skipped, valid disclosure resolves",
1346
+ result.valid === true && result.claims.a === 1);
1347
+ }
1348
+
1349
+ async function testVerifyDisclosureReplay() {
1350
+ var issuer = _newKeyPair();
1351
+ var sd = sdJwtVc.issue({
1352
+ issuer: "https://i", vct: "x", claims: { a: 1 },
1353
+ selectivelyDisclosed: ["a"], issuerKey: issuer.privateKey, algorithm: "ES256",
1354
+ });
1355
+ var parts = sd.token.split("~"); // [jwt, dA, ""]
1356
+ var replayed = parts[0] + "~" + parts[1] + "~" + parts[1] + "~"; // dA twice
1357
+ await _expectThrow("verify: duplicate disclosure digest refused",
1358
+ "auth-sd-jwt-vc/disclosure-replay",
1359
+ function () {
1360
+ return sdJwtVc.verify(replayed, {
1361
+ issuerKeyResolver: async function () { return issuer.publicKey; },
1362
+ });
1363
+ });
1364
+ }
1365
+
1366
+ async function testVerifyProtectedClaimShadow() {
1367
+ // An issuer that selectively-discloses a spec-protected claim name
1368
+ // (e.g. iss) produces a disclosure whose digest is in _sd; the verifier
1369
+ // must refuse it rather than let it shadow the signed claim.
1370
+ var issuer = _newKeyPair();
1371
+ var sd = sdJwtVc.issue({
1372
+ issuer: "https://i", vct: "x",
1373
+ claims: { iss: "shadow-attempt", role: "user" },
1374
+ selectivelyDisclosed: ["iss"],
1375
+ issuerKey: issuer.privateKey, algorithm: "ES256",
1376
+ });
1377
+ await _expectThrow("verify: protected-claim-shadow disclosure refused",
1378
+ "auth-sd-jwt-vc/protected-claim-shadow",
1379
+ function () {
1380
+ return sdJwtVc.verify(sd.token, {
1381
+ issuerKeyResolver: async function () { return issuer.publicKey; },
1382
+ });
1383
+ });
1384
+ }
1385
+
1386
+ // ---- verify: KB-JWT error branches ----
1387
+
1388
+ function _issueWithHolder(claims, selectively) {
1389
+ var issuer = _newKeyPair();
1390
+ var holder = _newKeyPair();
1391
+ var sd = sdJwtVc.issue({
1392
+ issuer: "https://i", vct: "x", claims: claims,
1393
+ selectivelyDisclosed: selectively || [],
1394
+ issuerKey: issuer.privateKey, holderKey: _jwk(holder.publicKey),
1395
+ });
1396
+ return { issuer: issuer, holder: holder, sd: sd };
1397
+ }
1398
+
1399
+ async function testVerifyKbNoCnf() {
1400
+ // Credential issued WITHOUT a cnf, but the presentation carries a
1401
+ // KB-JWT → refuse (no issuer-attested holder key to check it against).
1402
+ var issuer = _newKeyPair();
1403
+ var holder = _newKeyPair();
1404
+ var sd = sdJwtVc.issue({
1405
+ issuer: "https://i", vct: "x", claims: { a: 1 },
1406
+ issuerKey: issuer.privateKey, // no holderKey → no cnf
1407
+ });
1408
+ var pres = sdJwtVc.present({
1409
+ sdJwt: sd.token, audience: "v", nonce: "n",
1410
+ holderKey: holder.privateKey, algorithm: "ES256",
1411
+ });
1412
+ await _expectThrow("verify: KB-JWT with no issuer cnf refused", "auth-sd-jwt-vc/no-cnf",
1413
+ function () {
1414
+ return sdJwtVc.verify(pres.presentation, {
1415
+ issuerKeyResolver: async function () { return issuer.publicKey; },
1416
+ audience: "v", nonce: "n",
1417
+ });
1418
+ });
1419
+ }
1420
+
1421
+ async function testVerifyKbBadHeader() {
1422
+ var s = _issueWithHolder({ a: 1 });
1423
+ var pres = sdJwtVc.present({
1424
+ sdJwt: s.sd.token, audience: "v", nonce: "n",
1425
+ holderKey: s.holder.privateKey, algorithm: "ES256",
1426
+ });
1427
+ var segs = pres.presentation.split("~");
1428
+ // Replace KB-JWT with a 3-part token whose header is non-JSON.
1429
+ var badHeader = Buffer.from("not-json", "utf8").toString("base64url");
1430
+ segs[segs.length - 1] = badHeader + ".cGF5.c2ln";
1431
+ await _expectThrow("verify: malformed KB-JWT header refused",
1432
+ "auth-sd-jwt-vc/bad-kb-header",
1433
+ function () {
1434
+ return sdJwtVc.verify(segs.join("~"), {
1435
+ issuerKeyResolver: async function () { return s.issuer.publicKey; },
1436
+ audience: "v", nonce: "n",
1437
+ });
1438
+ });
1439
+ }
1440
+
1441
+ async function testVerifyKbBadTyp() {
1442
+ var s = _issueWithHolder({ a: 1 });
1443
+ var pres = sdJwtVc.present({
1444
+ sdJwt: s.sd.token, audience: "v", nonce: "n",
1445
+ holderKey: s.holder.privateKey, algorithm: "ES256",
1446
+ });
1447
+ var segs = pres.presentation.split("~");
1448
+ segs[segs.length - 1] = _b64uJson({ alg: "ES256", typ: "JWT" }) + "." +
1449
+ _b64uJson({ aud: "v", nonce: "n" }) + ".c2ln";
1450
+ await _expectThrow("verify: KB-JWT wrong typ refused", "auth-sd-jwt-vc/bad-kb-typ",
1451
+ function () {
1452
+ return sdJwtVc.verify(segs.join("~"), {
1453
+ issuerKeyResolver: async function () { return s.issuer.publicKey; },
1454
+ audience: "v", nonce: "n",
1455
+ });
1456
+ });
1457
+ }
1458
+
1459
+ async function testVerifyKbUnsupportedAlg() {
1460
+ var s = _issueWithHolder({ a: 1 });
1461
+ var pres = sdJwtVc.present({
1462
+ sdJwt: s.sd.token, audience: "v", nonce: "n",
1463
+ holderKey: s.holder.privateKey, algorithm: "ES256",
1464
+ });
1465
+ var segs = pres.presentation.split("~");
1466
+ segs[segs.length - 1] = _b64uJson({ alg: "HS256", typ: "kb+jwt" }) + "." +
1467
+ _b64uJson({ aud: "v", nonce: "n" }) + ".c2ln";
1468
+ await _expectThrow("verify: KB-JWT unsupported alg refused",
1469
+ "auth-sd-jwt-vc/unsupported-alg",
1470
+ function () {
1471
+ return sdJwtVc.verify(segs.join("~"), {
1472
+ issuerKeyResolver: async function () { return s.issuer.publicKey; },
1473
+ audience: "v", nonce: "n",
1474
+ });
1475
+ });
1476
+ }
1477
+
1478
+ async function testVerifyKbWrongAudienceReal() {
1479
+ var s = _issueWithHolder({ a: 1 });
1480
+ var pres = sdJwtVc.present({
1481
+ sdJwt: s.sd.token, audience: "https://verifier-1", nonce: "n",
1482
+ holderKey: s.holder.privateKey, algorithm: "ES256",
1483
+ });
1484
+ await _expectThrow("verify: KB-JWT aud mismatch refused (string compare)",
1485
+ "auth-sd-jwt-vc/wrong-audience",
1486
+ function () {
1487
+ return sdJwtVc.verify(pres.presentation, {
1488
+ issuerKeyResolver: async function () { return s.issuer.publicKey; },
1489
+ audience: "https://verifier-2", nonce: "n",
1490
+ });
1491
+ });
1492
+ }
1493
+
1494
+ async function testVerifyKbWrongNonceReal() {
1495
+ var s = _issueWithHolder({ a: 1 });
1496
+ var pres = sdJwtVc.present({
1497
+ sdJwt: s.sd.token, audience: "v", nonce: "nonce-1",
1498
+ holderKey: s.holder.privateKey, algorithm: "ES256",
1499
+ });
1500
+ await _expectThrow("verify: KB-JWT nonce mismatch refused (replay defense)",
1501
+ "auth-sd-jwt-vc/wrong-nonce",
1502
+ function () {
1503
+ return sdJwtVc.verify(pres.presentation, {
1504
+ issuerKeyResolver: async function () { return s.issuer.publicKey; },
1505
+ audience: "v", nonce: "nonce-2",
1506
+ });
1507
+ });
1508
+ }
1509
+
1510
+ async function testVerifyKbNonStringAud() {
1511
+ // A holder-minted KB-JWT with a non-string aud must fail the aud
1512
+ // compare closed (the timing-safe compare returns false on a non-string
1513
+ // operand rather than throwing).
1514
+ var s = _issueWithHolder({ a: 1 });
1515
+ var pres = sdJwtVc.present({
1516
+ sdJwt: s.sd.token, audience: "v", nonce: "n",
1517
+ holderKey: s.holder.privateKey, algorithm: "ES256",
1518
+ });
1519
+ var segs = pres.presentation.split("~");
1520
+ // Forge a KB-JWT actually signed by the holder key so it verifies, but
1521
+ // with a numeric aud → aud compare rejects.
1522
+ var nowSec = Math.floor(Date.now() / 1000);
1523
+ segs[segs.length - 1] = _signEs256(
1524
+ { alg: "ES256", typ: "kb+jwt" },
1525
+ { aud: 12345, nonce: "n", iat: nowSec, sd_hash: "whatever" },
1526
+ s.holder.privateKey);
1527
+ await _expectThrow("verify: non-string KB-JWT aud fails closed",
1528
+ "auth-sd-jwt-vc/wrong-audience",
1529
+ function () {
1530
+ return sdJwtVc.verify(segs.join("~"), {
1531
+ issuerKeyResolver: async function () { return s.issuer.publicKey; },
1532
+ audience: "v", nonce: "n",
1533
+ });
1534
+ });
1535
+ }
1536
+
1537
+ async function testVerifyKbSdHashMismatch() {
1538
+ // Disclosing more (a valid extra disclosure) than the KB-JWT committed
1539
+ // to changes the presentation hash → sd_hash mismatch, even though both
1540
+ // disclosures individually match _sd digests.
1541
+ var issuer = _newKeyPair();
1542
+ var holder = _newKeyPair();
1543
+ var sd = sdJwtVc.issue({
1544
+ issuer: "https://i", vct: "x",
1545
+ claims: { given_name: "Alice", family_name: "Smith" },
1546
+ selectivelyDisclosed: ["given_name", "family_name"],
1547
+ issuerKey: issuer.privateKey, holderKey: _jwk(holder.publicKey),
1548
+ });
1549
+ var pres = sdJwtVc.present({
1550
+ sdJwt: sd.token, disclosedClaimNames: ["given_name"],
1551
+ audience: "v", nonce: "n", holderKey: holder.privateKey, algorithm: "ES256",
1552
+ });
1553
+ // Find the family_name disclosure (held back) and splice it in before KB.
1554
+ var famDisclosure = null;
1555
+ for (var i = 0; i < sd.disclosures.length; i++) {
1556
+ var dec = sdJwtVc.disclosure.decode(sd.disclosures[i]);
1557
+ if (dec && dec.name === "family_name") famDisclosure = sd.disclosures[i];
1558
+ }
1559
+ check("sd-hash setup: family_name disclosure located", famDisclosure !== null);
1560
+ var segs = pres.presentation.split("~"); // [jwt, gnDisclosure, KBJWT]
1561
+ segs.splice(segs.length - 1, 0, famDisclosure);
1562
+ await _expectThrow("verify: extra disclosure → KB sd_hash mismatch refused",
1563
+ "auth-sd-jwt-vc/sd-hash-mismatch",
1564
+ function () {
1565
+ return sdJwtVc.verify(segs.join("~"), {
1566
+ issuerKeyResolver: async function () { return issuer.publicKey; },
1567
+ audience: "v", nonce: "n",
1568
+ });
1569
+ });
1570
+ }
1571
+
1572
+ async function testVerifyKbIatFuture() {
1573
+ var s = _issueWithHolder({ a: 1 });
1574
+ var pres = sdJwtVc.present({
1575
+ sdJwt: s.sd.token, audience: "v", nonce: "n",
1576
+ holderKey: s.holder.privateKey, algorithm: "ES256",
1577
+ issuedAt: Date.now() + 60 * 60 * 1000, // KB iat 1h in the future
1578
+ });
1579
+ await _expectThrow("verify: future KB-JWT iat refused", "auth-sd-jwt-vc/kb-iat-future",
1580
+ function () {
1581
+ return sdJwtVc.verify(pres.presentation, {
1582
+ issuerKeyResolver: async function () { return s.issuer.publicKey; },
1583
+ audience: "v", nonce: "n",
1584
+ });
1585
+ });
1586
+ }
1587
+
1588
+ // ---- verify: OpenID4VCI key-attestation branches ----
1589
+
1590
+ function _presentWithAttestation(s, attestation) {
1591
+ return sdJwtVc.present({
1592
+ sdJwt: s.sd.token, audience: "v", nonce: "n",
1593
+ holderKey: s.holder.privateKey, algorithm: "ES256",
1594
+ keyAttestation: attestation,
1595
+ });
1596
+ }
1597
+
1598
+ async function testKbAttestationRequiredNoVerifier() {
1599
+ var s = _issueWithHolder({ a: 1 });
1600
+ var pres = _presentWithAttestation(s, "att.jwt.token");
1601
+ await _expectThrow("verify: requireKeyAttestation without verifier refused",
1602
+ "auth-sd-jwt-vc/no-attestation-verifier",
1603
+ function () {
1604
+ return sdJwtVc.verify(pres.presentation, {
1605
+ issuerKeyResolver: async function () { return s.issuer.publicKey; },
1606
+ audience: "v", nonce: "n", requireKeyAttestation: true,
1607
+ });
1608
+ });
1609
+ }
1610
+
1611
+ async function testKbAttestationNoVerifierSkipped() {
1612
+ var s = _issueWithHolder({ a: 1 });
1613
+ var pres = _presentWithAttestation(s, "att.jwt.token");
1614
+ var result = await sdJwtVc.verify(pres.presentation, {
1615
+ issuerKeyResolver: async function () { return s.issuer.publicKey; },
1616
+ audience: "v", nonce: "n",
1617
+ });
1618
+ check("verify: attestation present but no verifier → skipped, KB still valid",
1619
+ result.valid === true && result.kbValidated === true &&
1620
+ result.keyAttestationClaims === null);
1621
+ }
1622
+
1623
+ async function testKbAttestationVerified() {
1624
+ var s = _issueWithHolder({ a: 1 });
1625
+ var pres = _presentWithAttestation(s, "att.jwt.token");
1626
+ var gotArgs = null;
1627
+ var result = await sdJwtVc.verify(pres.presentation, {
1628
+ issuerKeyResolver: async function () { return s.issuer.publicKey; },
1629
+ audience: "v", nonce: "n",
1630
+ keyAttestationVerifier: async function (args) {
1631
+ gotArgs = args;
1632
+ return { attested: true, aaguid: "test" };
1633
+ },
1634
+ });
1635
+ check("verify: keyAttestationVerifier receives the raw attestation jwt",
1636
+ gotArgs && gotArgs.jwt === "att.jwt.token" && gotArgs.audience === "v");
1637
+ check("verify: verified attestation claims surfaced",
1638
+ result.keyAttestationClaims && result.keyAttestationClaims.attested === true);
1639
+ }
1640
+
1641
+ async function testKbAttestationVerifierThrows() {
1642
+ var s = _issueWithHolder({ a: 1 });
1643
+ var pres = _presentWithAttestation(s, "att.jwt.token");
1644
+ await _expectThrow("verify: rejecting keyAttestationVerifier surfaces failure",
1645
+ "auth-sd-jwt-vc/attestation-verify-failed",
1646
+ function () {
1647
+ return sdJwtVc.verify(pres.presentation, {
1648
+ issuerKeyResolver: async function () { return s.issuer.publicKey; },
1649
+ audience: "v", nonce: "n",
1650
+ keyAttestationVerifier: async function () { throw new Error("bad TEE anchor"); },
1651
+ });
1652
+ });
1653
+ // A verifier that throws an error with no message still fails closed —
1654
+ // the wrapper falls back to String(e) for the diagnostic.
1655
+ await _expectThrow("verify: keyAttestationVerifier throwing a message-less error fails closed",
1656
+ "auth-sd-jwt-vc/attestation-verify-failed",
1657
+ function () {
1658
+ return sdJwtVc.verify(pres.presentation, {
1659
+ issuerKeyResolver: async function () { return s.issuer.publicKey; },
1660
+ audience: "v", nonce: "n",
1661
+ keyAttestationVerifier: async function () { throw new Error(); },
1662
+ });
1663
+ });
1664
+ }
1665
+
1666
+ async function testKbAttestationVerifierEmpty() {
1667
+ var s = _issueWithHolder({ a: 1 });
1668
+ var pres = _presentWithAttestation(s, "att.jwt.token");
1669
+ await _expectThrow("verify: keyAttestationVerifier returning no claims refused",
1670
+ "auth-sd-jwt-vc/attestation-empty",
1671
+ function () {
1672
+ return sdJwtVc.verify(pres.presentation, {
1673
+ issuerKeyResolver: async function () { return s.issuer.publicKey; },
1674
+ audience: "v", nonce: "n",
1675
+ keyAttestationVerifier: async function () { return null; },
1676
+ });
1677
+ });
1678
+ }
1679
+
1680
+ async function testKbMissingAttestationRequired() {
1681
+ // KB-JWT carries NO key_attestation but requireKeyAttestation is set.
1682
+ var s = _issueWithHolder({ a: 1 });
1683
+ var pres = sdJwtVc.present({
1684
+ sdJwt: s.sd.token, audience: "v", nonce: "n",
1685
+ holderKey: s.holder.privateKey, algorithm: "ES256",
1686
+ });
1687
+ await _expectThrow("verify: requireKeyAttestation but KB has none refused",
1688
+ "auth-sd-jwt-vc/missing-key-attestation",
1689
+ function () {
1690
+ return sdJwtVc.verify(pres.presentation, {
1691
+ issuerKeyResolver: async function () { return s.issuer.publicKey; },
1692
+ audience: "v", nonce: "n", requireKeyAttestation: true,
1693
+ });
1694
+ });
1695
+ }
1696
+
816
1697
  // ---- Run all ----
817
1698
 
818
1699
  async function run() {
@@ -848,6 +1729,55 @@ async function run() {
848
1729
  testHolderValidation();
849
1730
  await testHolderAlgFromKeyType();
850
1731
  await testKbAlgKtyCrossCheck();
1732
+ // Error / adversarial / defensive / option-default branch coverage
1733
+ testHashDisclosureBadAlg();
1734
+ testIssueClaimsNotObject();
1735
+ testIssueBadHashAlg();
1736
+ testIssueNoIssuerKey();
1737
+ testIssueBadCnf();
1738
+ await testIssueVerifyAllAlgs();
1739
+ testPresentMalformed();
1740
+ testPresentUnsupportedKbAlg();
1741
+ testPresentBadSdAlg();
1742
+ testPresentSdAlgFallbackOnMalformedPayload();
1743
+ await testPresentKeyAttestationHeader();
1744
+ await testVerifyInvalidPresentationArg();
1745
+ await testVerifyNoResolver();
1746
+ await testVerifyPresentationNoSeparator();
1747
+ await testVerifyJwtNotThreeParts();
1748
+ await testVerifyBadHeader();
1749
+ await testVerifyUnsupportedHeaderAlg();
1750
+ await testVerifyBadTyp();
1751
+ await testVerifyDcSdJwtTypAccepted();
1752
+ await testVerifyCritRefusedAndEmptyAllowed();
1753
+ await testVerifyKeyNotFound();
1754
+ await testJwkIssuerKeyResolver();
1755
+ await testJwkIssuerAlgKtyMismatch();
1756
+ await testVerifyNowAndClockSkewOpts();
1757
+ await testVerifyBadClockSkew();
1758
+ await testVerifyIatFuture();
1759
+ await testVerifyRequireExpMissing();
1760
+ await testVerifyIssuerMismatch();
1761
+ await testVerifyMissingSdAlgAndSd();
1762
+ await testVerifyUnsupportedSdAlg();
1763
+ await testVerifyMalformedDisclosureSkipped();
1764
+ await testVerifyDisclosureReplay();
1765
+ await testVerifyProtectedClaimShadow();
1766
+ await testVerifyKbNoCnf();
1767
+ await testVerifyKbBadHeader();
1768
+ await testVerifyKbBadTyp();
1769
+ await testVerifyKbUnsupportedAlg();
1770
+ await testVerifyKbWrongAudienceReal();
1771
+ await testVerifyKbWrongNonceReal();
1772
+ await testVerifyKbNonStringAud();
1773
+ await testVerifyKbSdHashMismatch();
1774
+ await testVerifyKbIatFuture();
1775
+ await testKbAttestationRequiredNoVerifier();
1776
+ await testKbAttestationNoVerifierSkipped();
1777
+ await testKbAttestationVerified();
1778
+ await testKbAttestationVerifierThrows();
1779
+ await testKbAttestationVerifierEmpty();
1780
+ await testKbMissingAttestationRequired();
851
1781
  testExports();
852
1782
  }
853
1783