burnledger 0.3.1 → 0.5.0

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 (89) hide show
  1. package/README.md +15 -3
  2. package/dist/cjs/client.d.ts +14 -0
  3. package/dist/cjs/client.d.ts.map +1 -1
  4. package/dist/cjs/client.js +4 -0
  5. package/dist/cjs/client.js.map +1 -1
  6. package/dist/cjs/errors.d.ts +28 -1
  7. package/dist/cjs/errors.d.ts.map +1 -1
  8. package/dist/cjs/errors.js +30 -2
  9. package/dist/cjs/errors.js.map +1 -1
  10. package/dist/cjs/http.d.ts +21 -1
  11. package/dist/cjs/http.d.ts.map +1 -1
  12. package/dist/cjs/http.js +76 -12
  13. package/dist/cjs/http.js.map +1 -1
  14. package/dist/cjs/index.browser.d.ts +2 -4
  15. package/dist/cjs/index.browser.d.ts.map +1 -1
  16. package/dist/cjs/index.browser.js.map +1 -1
  17. package/dist/cjs/index.d.ts +14 -7
  18. package/dist/cjs/index.d.ts.map +1 -1
  19. package/dist/cjs/index.js +13 -2
  20. package/dist/cjs/index.js.map +1 -1
  21. package/dist/cjs/keys.d.ts +6 -0
  22. package/dist/cjs/keys.d.ts.map +1 -1
  23. package/dist/cjs/keys.js.map +1 -1
  24. package/dist/cjs/models.d.ts +24 -4
  25. package/dist/cjs/models.d.ts.map +1 -1
  26. package/dist/cjs/models.js +10 -4
  27. package/dist/cjs/models.js.map +1 -1
  28. package/dist/cjs/pagination.d.ts.map +1 -1
  29. package/dist/cjs/pagination.js.map +1 -1
  30. package/dist/cjs/verify.d.ts +83 -5
  31. package/dist/cjs/verify.d.ts.map +1 -1
  32. package/dist/cjs/verify.js +359 -28
  33. package/dist/cjs/verify.js.map +1 -1
  34. package/dist/cjs/web-verifier.d.ts +10 -5
  35. package/dist/cjs/web-verifier.d.ts.map +1 -1
  36. package/dist/cjs/web-verifier.js +7 -3
  37. package/dist/cjs/web-verifier.js.map +1 -1
  38. package/dist/cjs/webhooks.js.map +1 -1
  39. package/dist/esm/cli.d.ts +6 -0
  40. package/dist/esm/cli.d.ts.map +1 -1
  41. package/dist/esm/cli.js +116 -15
  42. package/dist/esm/cli.js.map +1 -1
  43. package/dist/esm/client.d.ts +14 -0
  44. package/dist/esm/client.d.ts.map +1 -1
  45. package/dist/esm/client.js +4 -0
  46. package/dist/esm/client.js.map +1 -1
  47. package/dist/esm/errors.d.ts +28 -1
  48. package/dist/esm/errors.d.ts.map +1 -1
  49. package/dist/esm/errors.js +29 -1
  50. package/dist/esm/errors.js.map +1 -1
  51. package/dist/esm/http.d.ts +21 -1
  52. package/dist/esm/http.d.ts.map +1 -1
  53. package/dist/esm/http.js +75 -12
  54. package/dist/esm/http.js.map +1 -1
  55. package/dist/esm/index.browser.d.ts +2 -4
  56. package/dist/esm/index.browser.d.ts.map +1 -1
  57. package/dist/esm/index.browser.js.map +1 -1
  58. package/dist/esm/index.d.ts +14 -7
  59. package/dist/esm/index.d.ts.map +1 -1
  60. package/dist/esm/index.js +11 -3
  61. package/dist/esm/index.js.map +1 -1
  62. package/dist/esm/keys.d.ts +6 -0
  63. package/dist/esm/keys.d.ts.map +1 -1
  64. package/dist/esm/keys.js.map +1 -1
  65. package/dist/esm/models.d.ts +24 -4
  66. package/dist/esm/models.d.ts.map +1 -1
  67. package/dist/esm/models.js +10 -4
  68. package/dist/esm/models.js.map +1 -1
  69. package/dist/esm/pagination.d.ts.map +1 -1
  70. package/dist/esm/verify.d.ts +83 -5
  71. package/dist/esm/verify.d.ts.map +1 -1
  72. package/dist/esm/verify.js +357 -28
  73. package/dist/esm/verify.js.map +1 -1
  74. package/dist/esm/web-verifier.d.ts +10 -5
  75. package/dist/esm/web-verifier.d.ts.map +1 -1
  76. package/dist/esm/web-verifier.js +11 -3
  77. package/dist/esm/web-verifier.js.map +1 -1
  78. package/dist/esm/webhooks.js.map +1 -1
  79. package/package.json +5 -3
  80. package/src/cli.ts +123 -13
  81. package/src/client.ts +16 -0
  82. package/src/errors.ts +32 -2
  83. package/src/http.ts +79 -12
  84. package/src/index.browser.ts +2 -2
  85. package/src/index.ts +16 -4
  86. package/src/keys.ts +11 -1
  87. package/src/models.ts +34 -8
  88. package/src/verify.ts +428 -28
  89. package/src/web-verifier.ts +14 -5
@@ -17,10 +17,12 @@
17
17
  * output at issuance time (transparency_status=PENDING, no transparency).
18
18
  */
19
19
  Object.defineProperty(exports, "__esModule", { value: true });
20
- exports.VALID_REVOCATION_UNKNOWN = void 0;
20
+ exports.VALID_REVOCATION_UNKNOWN = exports.VALID_KEY_WINDOW_UNKNOWN = exports.VALID_KEY_COMPROMISED_LATER = exports.KEY_COMPROMISED = exports.KEY_OUTSIDE_VALIDITY = exports.KNOWN_FORMAT_VERSIONS = void 0;
21
21
  exports.hexToBytes = hexToBytes;
22
22
  exports.bytesToHex = bytesToHex;
23
23
  exports.publicKeyFromHex = publicKeyFromHex;
24
+ exports.evaluateKey = evaluateKey;
25
+ exports.certificateAnchor = certificateAnchor;
24
26
  exports.verifyCertificate = verifyCertificate;
25
27
  exports.verifyTransparency = verifyTransparency;
26
28
  exports.issuanceBytes = issuanceBytes;
@@ -37,6 +39,57 @@ const HEX_CHARS = "0123456789abcdef";
37
39
  // source-of-truth const block in Go's core/payload.go byte-for-byte.
38
40
  const PAYLOAD_TYPE_ATTESTATION = "burnledger.attestation.v3";
39
41
  const PAYLOAD_TYPE_CERTIFICATE = "burnledger.certificate.v3";
42
+ // v4 signs the legal entity behind the trading name and a commitment to the
43
+ // limitations wording. v3 certificates are verified forever -- they are evidence
44
+ // designed to outlive the company -- so this is a branch, never a replacement.
45
+ const PAYLOAD_TYPE_CERTIFICATE_V4 = "burnledger.certificate.v4";
46
+ // v5 moves BOTH tags. v4 moved only the certificate's, because the attestation
47
+ // shape did not change; in v5 it does, by way of the certificate carrying it.
48
+ const PAYLOAD_TYPE_ATTESTATION_V5 = "burnledger.attestation.v5";
49
+ const PAYLOAD_TYPE_CERTIFICATE_V5 = "burnledger.certificate.v5";
50
+ const FORMAT_VERSION_V5 = "5.0";
51
+ const FORMAT_VERSION_V4 = "4.0";
52
+ // v6 renames the artifact and nothing else: the shape is byte-for-byte v5, and
53
+ // only the tag and the version string differ. It still takes its own tag, for
54
+ // the same reason v4 and v5 each took one -- a signature over a payload calling
55
+ // itself a verification record must not verify as one calling itself a
56
+ // certificate. Two names for one shape sharing a separator is exactly what a
57
+ // separator prevents.
58
+ const PAYLOAD_TYPE_ATTESTATION_V6 = "burnledger.attestation.v6";
59
+ const PAYLOAD_TYPE_VERIFICATION_RECORD_V6 = "burnledger.verification_record.v6";
60
+ const FORMAT_VERSION_V6 = "6.0";
61
+ const FORMAT_VERSION_V3 = "3.0";
62
+ /**
63
+ * Every format this build can read, oldest first. Mirrors core.FormatVersions()
64
+ * in the Go source; the cross-language conformance corpus carries a fixture per
65
+ * version, so a version present in one language and missing here fails there.
66
+ *
67
+ * Frozen because `readonly` is erased at build time: it stops a TypeScript
68
+ * caller from writing to the array, and does nothing at all to the JavaScript
69
+ * this compiles to — which is what the browser bundle actually runs, where any
70
+ * script on the page could otherwise push a version onto it.
71
+ */
72
+ exports.KNOWN_FORMAT_VERSIONS = Object.freeze([
73
+ FORMAT_VERSION_V3,
74
+ FORMAT_VERSION_V4,
75
+ FORMAT_VERSION_V5,
76
+ FORMAT_VERSION_V6,
77
+ ]);
78
+ /**
79
+ * Returns the version, or throws if this SDK cannot read it.
80
+ *
81
+ * Rejects a non-string too: JSON carrying `6.0` as a NUMBER would compare
82
+ * unequal to every known version and silently take the oldest branch, which is
83
+ * the same trap as an unknown version wearing a different hat.
84
+ */
85
+ function checkFormatVersion(version) {
86
+ if (typeof version !== "string" || !exports.KNOWN_FORMAT_VERSIONS.includes(version)) {
87
+ throw new errors_js_1.VerificationError(`unsupported certificate_format_version ${JSON.stringify(version)}; ` +
88
+ `this version of the SDK reads ${exports.KNOWN_FORMAT_VERSIONS.join(", ")}. ` +
89
+ "The record may be genuine and simply newer than this library.", errors_js_1.UNSUPPORTED_FORMAT_VERSION);
90
+ }
91
+ return version;
92
+ }
40
93
  const PAYLOAD_TYPE_TREE_HEAD = "burnledger.sth.v3";
41
94
  const PAYLOAD_TYPE_LOG_LEAF = "burnledger.log_leaf.v3";
42
95
  // There is deliberately no verification payload type: v3 produces those facts
@@ -108,17 +161,189 @@ async function publicKeyFromHex(crypto, hexKey, opts) {
108
161
  }
109
162
  const hash = await crypto.sha256(raw);
110
163
  const keyId = "dp_k_" + bytesToHex(hash);
111
- return { keyBytes: raw, keyId, revoked: opts?.revoked ?? false };
164
+ const revoked = opts?.revoked ?? false;
165
+ // An old caller passing revoked:true meant "this key is unusable" and must
166
+ // keep getting exactly that. Mapping it to a status this verifier cannot
167
+ // interpret reaches the same fail-closed branch as before.
168
+ const keyStatus = opts?.keyStatus ?? (revoked ? "revoked" : "active");
169
+ return {
170
+ keyBytes: raw,
171
+ keyId,
172
+ keyStatus,
173
+ notBefore: opts?.notBefore,
174
+ notAfter: opts?.notAfter,
175
+ compromisedFrom: opts?.compromisedFrom,
176
+ revoked,
177
+ };
178
+ }
179
+ /** Verdicts for the key check (ADR-017 §2). */
180
+ exports.KEY_OUTSIDE_VALIDITY = "KEY_OUTSIDE_VALIDITY";
181
+ exports.KEY_COMPROMISED = "KEY_COMPROMISED";
182
+ exports.VALID_KEY_COMPROMISED_LATER = "VALID_KEY_COMPROMISED_LATER";
183
+ exports.VALID_KEY_WINDOW_UNKNOWN = "VALID_KEY_WINDOW_UNKNOWN";
184
+ /**
185
+ * The revocation states a statement may assert. Mirrors
186
+ * core.ValidCertificateStatusValue: anything else means the statement was read
187
+ * but not understood, which is not the same as "not revoked".
188
+ */
189
+ const KNOWN_STATUS_VALUES = new Set(["ACTIVE", "REVOKED"]);
190
+ /**
191
+ * The key verdicts that permit relying on a signature: VALID plus the two soft
192
+ * verdicts ADR-017 §2 says a reader must be SHOWN rather than refused. Anything
193
+ * not named here is refused, including a verdict added in a later release.
194
+ */
195
+ const USABLE_KEY_VERDICTS = new Set([
196
+ "VALID",
197
+ exports.VALID_KEY_WINDOW_UNKNOWN,
198
+ exports.VALID_KEY_COMPROMISED_LATER,
199
+ ]);
200
+ /** Whether a key was authorized to sign at anchor time `t`.
201
+ *
202
+ * Returns `"VALID"` when the key clears. The anchor is seconds since the epoch
203
+ * from a time the verifier observed independently — the signed tree head's
204
+ * timestamp — never the certificate's own `issued_at`, which is signed by the
205
+ * very key whose validity is in question.
206
+ *
207
+ * Mirrors core.EvaluateKey in Go, including both of its settled readings: an
208
+ * entry stating no interval has nothing to check, so a missing anchor is not
209
+ * "unknown"; and a compromised key with no anchor does not soften, because
210
+ * without an anchor we cannot show the signature predates the compromise.
211
+ */
212
+ function evaluateKey(pki, anchor) {
213
+ // A caller can still build a PublicKeyInfo by hand with revoked:true rather
214
+ // than going through publicKeyFromHex. That flag meant "this key is
215
+ // unusable" and must keep meaning exactly that.
216
+ if (pki.revoked)
217
+ return "UNKNOWN_KEY";
218
+ if (pki.keyStatus === "compromised") {
219
+ if (anchor === null || pki.compromisedFrom === undefined)
220
+ return exports.KEY_COMPROMISED;
221
+ return anchor < parseRfc3339(pki.compromisedFrom)
222
+ ? exports.VALID_KEY_COMPROMISED_LATER
223
+ : exports.KEY_COMPROMISED;
224
+ }
225
+ if (pki.keyStatus === "active" || pki.keyStatus === "retired" || pki.keyStatus === "") {
226
+ if (pki.notBefore === undefined && pki.notAfter === undefined)
227
+ return "VALID";
228
+ if (anchor === null)
229
+ return exports.VALID_KEY_WINDOW_UNKNOWN;
230
+ if (pki.notBefore !== undefined && anchor < parseRfc3339(pki.notBefore)) {
231
+ return exports.KEY_OUTSIDE_VALIDITY;
232
+ }
233
+ if (pki.notAfter !== undefined && anchor >= parseRfc3339(pki.notAfter)) {
234
+ return exports.KEY_OUTSIDE_VALIDITY;
235
+ }
236
+ return "VALID";
237
+ }
238
+ // A disposition this verifier does not understand is not one it can vouch
239
+ // for. Fail closed, as the boolean it replaces did.
240
+ return "UNKNOWN_KEY";
241
+ }
242
+ /**
243
+ * The anchor a certificate supplies, or null when it supplies none.
244
+ *
245
+ * READS AN UNSIGNED FIELD. `transparency` is stripped before signing, so on a
246
+ * certificate handed to a verifier the timestamp is holder-editable. Use
247
+ * {@link verifiedCertificateAnchor} anywhere the anchor decides whether a key
248
+ * may be relied on; this is safe only where the same timestamp is inside a
249
+ * payload the caller goes on to verify, which is what verifyTransparency does.
250
+ *
251
+ * Exported and unchanged because it is published API.
252
+ */
253
+ function certificateAnchor(certificate) {
254
+ const transparency = certificate.transparency;
255
+ if (transparency == null)
256
+ return null;
257
+ const sth = transparency.signed_tree_head;
258
+ if (sth === undefined || typeof sth.timestamp !== "string")
259
+ return null;
260
+ try {
261
+ return parseRfc3339(sth.timestamp);
262
+ }
263
+ catch {
264
+ return null;
265
+ }
266
+ }
267
+ /**
268
+ * The anchor, but only once the tree head carrying it has been checked against
269
+ * the key being evaluated.
270
+ *
271
+ * The bypass this closes: for a key declared compromised, evaluateKey answers
272
+ * KEY_COMPROMISED with no anchor and VALID_KEY_COMPROMISED_LATER when the
273
+ * anchor predates the compromise — and the second is a verdict requireUsableKey
274
+ * passes through as the RESULT of verifyCertificate. Since the timestamp is
275
+ * covered by no signature, a holder could backdate it and have a certificate
276
+ * signed with a compromised key reported as verified-with-a-caveat. Deleting
277
+ * `transparency` failed closed; keeping a doctored one did not.
278
+ *
279
+ * A head that does not verify yields no anchor, which is the same conservative
280
+ * answer as a certificate carrying no transparency block at all.
281
+ */
282
+ async function verifiedCertificateAnchor(crypto, certificate, pki) {
283
+ const anchor = certificateAnchor(certificate);
284
+ if (anchor === null)
285
+ return null;
286
+ const transparency = certificate.transparency;
287
+ const sth = transparency.signed_tree_head;
288
+ try {
289
+ const headPayload = buildTreeHeadPayload(sth);
290
+ const headSig = decodeSignature(sth.signature);
291
+ if (!(await crypto.ed25519Verify(pki.keyBytes, headPayload, headSig)))
292
+ return null;
293
+ }
294
+ catch {
295
+ return null;
296
+ }
297
+ return anchor;
298
+ }
299
+ /** Throws for a key that cannot be used at all; returns the verdict otherwise.
300
+ *
301
+ * VALID_KEY_COMPROMISED_LATER and VALID_KEY_WINDOW_UNKNOWN are returned rather
302
+ * than thrown because they are not refusals — they are results a caller must
303
+ * show the reader instead of collapsing into green.
304
+ */
305
+ function requireUsableKey(pki, anchor, keyId,
306
+ // Named, because this is also the key that signs a certificate-status
307
+ // statement, and "issuer key is compromised" would send a reader looking at
308
+ // the wrong key.
309
+ role = "issuer key") {
310
+ const verdict = evaluateKey(pki, anchor);
311
+ if (verdict === exports.KEY_COMPROMISED) {
312
+ throw new errors_js_1.VerificationError(`${role} is compromised: ${keyId}`);
313
+ }
314
+ if (verdict === exports.KEY_OUTSIDE_VALIDITY) {
315
+ throw new errors_js_1.VerificationError(`${role} was not valid when it signed: ${keyId}`);
316
+ }
317
+ if (verdict === "UNKNOWN_KEY") {
318
+ throw new errors_js_1.VerificationError(`${role} has an unusable status "${pki.keyStatus}": ${keyId}`);
319
+ }
320
+ // An ALLOW-list, matching core.KeyIsUsable, which was inverted away from
321
+ // exactly the shape above. Naming the refusals and returning everything else
322
+ // means a verdict added to evaluateKey later becomes a PASS by default — and
323
+ // the value returned here is propagated out of verifyCertificate as its
324
+ // result, so "everything else" is rendered to a reader as "verified, with a
325
+ // note". Go would refuse the same document. That is #684's three-verifiers-
326
+ // two-answers divergence, in the direction that calls a bad document good.
327
+ if (!USABLE_KEY_VERDICTS.has(verdict)) {
328
+ throw new errors_js_1.VerificationError(`${role} returned a verdict this SDK does not recognize (${verdict}): ${keyId}`);
329
+ }
330
+ return verdict;
112
331
  }
113
332
  /** Verify all signatures on a deletion certificate offline. */
114
333
  async function verifyCertificate(crypto, certificate, publicKeys) {
334
+ // Step 0: can this SDK read the format at all? Every check below rebuilds
335
+ // signed bytes from the version, so an unreadable version makes all of them
336
+ // meaningless - and "unknown issuer key" would be the wrong thing to tell
337
+ // someone holding a record that is merely newer than this library.
338
+ checkFormatVersion(certificate.certificate_format_version);
115
339
  const issuer = certificate.issuer;
116
340
  const keyId = issuer.key_id;
117
341
  const pki = publicKeys.get(keyId);
118
342
  if (pki === undefined)
119
343
  throw new errors_js_1.VerificationError(`unknown issuer key: ${keyId}`);
120
- if (pki.revoked)
121
- throw new errors_js_1.VerificationError(`issuer key is revoked: ${keyId}`);
344
+ // The key check runs before any signature check: a signature verified
345
+ // against a key nobody vouches for proves nothing about the issuer.
346
+ const keyVerdict = requireUsableKey(pki, await verifiedCertificateAnchor(crypto, certificate, pki), keyId);
122
347
  // 1. Certificate signature FIRST — nothing below may trust a field until the
123
348
  // bytes carrying it are covered by a verified signature.
124
349
  const certPayload = buildCertificatePayload(certificate);
@@ -135,7 +360,7 @@ async function verifyCertificate(crypto, certificate, publicKeys) {
135
360
  proof_mode: att.proof_mode,
136
361
  attested_at: att.attested_at,
137
362
  systems: attestationSystems(certificate),
138
- });
363
+ }, certificate.certificate_format_version);
139
364
  const attSig = decodeSignature(att.attestation_signature);
140
365
  if (!(await crypto.ed25519Verify(pki.keyBytes, attPayload, attSig))) {
141
366
  throw new errors_js_1.VerificationError("attestation signature is invalid");
@@ -185,7 +410,10 @@ async function verifyCertificate(crypto, certificate, publicKeys) {
185
410
  if (!anyAttested) {
186
411
  throw new errors_js_1.VerificationError("incomplete verification: no system held any records at attestation time");
187
412
  }
188
- return "VALID";
413
+ // A soft key verdict is the result, not a footnote: VALID_KEY_WINDOW_UNKNOWN
414
+ // and VALID_KEY_COMPROMISED_LATER mean this document still needs a human, and
415
+ // reporting VALID here would be the lying by omission ADR-017 exists to stop.
416
+ return keyVerdict;
189
417
  }
190
418
  const NIL_UUID = "00000000-0000-0000-0000-000000000000";
191
419
  /** Verify the transparency proof embedded in a certificate. */
@@ -200,8 +428,8 @@ async function verifyTransparency(crypto, certificate, publicKeys) {
200
428
  const pki = publicKeys.get(keyId);
201
429
  if (pki === undefined)
202
430
  throw new errors_js_1.VerificationError(`unknown issuer key: ${keyId}`);
203
- if (pki.revoked)
204
- throw new errors_js_1.VerificationError(`issuer key is revoked: ${keyId}`);
431
+ // The tree head carries its own timestamp, so this path always has an anchor.
432
+ requireUsableKey(pki, certificateAnchor(certificate), keyId);
205
433
  // 1. Tree head signature
206
434
  const headPayload = buildTreeHeadPayload(sth);
207
435
  const headSig = decodeSignature(sth.signature);
@@ -470,7 +698,7 @@ function civilFromDays(days) {
470
698
  // ---------------------------------------------------------------------------
471
699
  // Payload builders — exact ports of core/payload.go
472
700
  // ---------------------------------------------------------------------------
473
- function buildAttestationPayload(subject, att) {
701
+ function buildAttestationPayload(subject, att, certFormatVersion) {
474
702
  const attestedAt = formatTimestamp(att.attested_at);
475
703
  const systems = att.systems.map((s) => ({
476
704
  canonical_version: s.canonical_version ?? null,
@@ -488,13 +716,38 @@ function buildAttestationPayload(subject, att) {
488
716
  }));
489
717
  const payload = {
490
718
  attested_at: attestedAt,
491
- payload_type: PAYLOAD_TYPE_ATTESTATION,
719
+ payload_type: attestationPayloadType(certFormatVersion),
492
720
  proof_mode: att.proof_mode,
493
721
  subject_hash: toHex(subject.identifier_hash),
494
722
  systems,
495
723
  };
496
724
  return canonicalJson(payload);
497
725
  }
726
+ /** Domain separator for the record itself, by certificate format version. */
727
+ function certificatePayloadType(version) {
728
+ checkFormatVersion(version);
729
+ if (version === FORMAT_VERSION_V6)
730
+ return PAYLOAD_TYPE_VERIFICATION_RECORD_V6;
731
+ if (version === FORMAT_VERSION_V5)
732
+ return PAYLOAD_TYPE_CERTIFICATE_V5;
733
+ if (version === FORMAT_VERSION_V4)
734
+ return PAYLOAD_TYPE_CERTIFICATE_V4;
735
+ return PAYLOAD_TYPE_CERTIFICATE;
736
+ }
737
+ /**
738
+ * Domain separator for the attestation carried by a record of that format. It
739
+ * follows the record's version because a verifier rebuilds the attestation
740
+ * payload from the record it is checking, and must reproduce the exact bytes
741
+ * the enclave signed.
742
+ */
743
+ function attestationPayloadType(version) {
744
+ checkFormatVersion(version);
745
+ if (version === FORMAT_VERSION_V6)
746
+ return PAYLOAD_TYPE_ATTESTATION_V6;
747
+ if (version === FORMAT_VERSION_V5)
748
+ return PAYLOAD_TYPE_ATTESTATION_V5;
749
+ return PAYLOAD_TYPE_ATTESTATION;
750
+ }
498
751
  function buildCertificatePayload(cert) {
499
752
  const att = cert.attestation;
500
753
  const issuer = cert.issuer;
@@ -522,15 +775,36 @@ function buildCertificatePayload(cert) {
522
775
  attested_at: formatTimestamp(att.attested_at),
523
776
  proof_mode: att.proof_mode,
524
777
  };
778
+ // Fields added after v3 are gated on the certificate's OWN version. A v3
779
+ // certificate must reconstruct to the same bytes forever; reading these
780
+ // unconditionally would break every certificate already issued.
781
+ const version = cert.certificate_format_version;
782
+ // v6 carries v5's shape exactly, so it takes every gate v5 takes. Naming
783
+ // these "Plus" rather than testing equality at each use is what stops a new
784
+ // version from silently missing one.
785
+ const isV5Plus = version === FORMAT_VERSION_V5 || version === FORMAT_VERSION_V6;
786
+ const isV4Plus = version === FORMAT_VERSION_V4 || isV5Plus;
525
787
  const issuerObj = {
526
788
  key_id: issuer.key_id,
527
789
  name: issuer.name,
528
790
  public_key: toHex(issuer.public_key),
529
791
  };
792
+ if (isV4Plus && typeof issuer.legal_entity === "string" && issuer.legal_entity !== "") {
793
+ issuerObj.legal_entity = issuer.legal_entity;
794
+ }
795
+ // Signed from v5, and omitted when absent or empty: a build with no
796
+ // measurement signs none, and "" is a value a reader could mistake for one.
797
+ if (isV5Plus && typeof issuer.enclave_pcr0 === "string" && issuer.enclave_pcr0 !== "") {
798
+ issuerObj.enclave_pcr0 = issuer.enclave_pcr0;
799
+ }
800
+ // v5 drops identifier_type_hint: signed, but always the constant "custom",
801
+ // so it was never evidence. v3 and v4 keep it or they stop verifying.
530
802
  const subjectObj = {
531
803
  identifier_hash: toHex(subject.identifier_hash),
532
- identifier_type_hint: subject.identifier_type_hint,
533
804
  };
805
+ if (!isV5Plus) {
806
+ subjectObj.identifier_type_hint = subject.identifier_type_hint;
807
+ }
534
808
  // status and revocation are deliberately absent (ADR-016 §3): a signature
535
809
  // commits to bytes at an instant, revocation is discovered later, so it
536
810
  // travels as a separate short-lived signed status statement.
@@ -541,10 +815,17 @@ function buildCertificatePayload(cert) {
541
815
  certificate_id: cert.certificate_id,
542
816
  issued_at: formatTimestamp(cert.issued_at),
543
817
  issuer: issuerObj,
544
- payload_type: PAYLOAD_TYPE_CERTIFICATE,
818
+ payload_type: certificatePayloadType(version),
545
819
  subject: subjectObj,
546
820
  systems,
547
821
  };
822
+ if (isV4Plus && cert.scope != null) {
823
+ const scope = cert.scope;
824
+ payload.scope = {
825
+ text_sha256: toHex(scope.text_sha256),
826
+ version: scope.version,
827
+ };
828
+ }
548
829
  return canonicalJson(payload);
549
830
  }
550
831
  /** Port of Go's BuildLogLeafPayload (ADR-016 §4). */
@@ -755,28 +1036,43 @@ exports.VALID_REVOCATION_UNKNOWN = "VALID_REVOCATION_UNKNOWN";
755
1036
  * | input | result |
756
1037
  * |---|---|
757
1038
  * | fresh statement, REVOKED | throws VerificationError |
758
- * | fresh statement, ACTIVE | `"VALID"` |
759
- * | absent or expired statement | `"VALID_REVOCATION_UNKNOWN"` |
1039
+ * | fresh statement, ACTIVE | `"VALID"`, or a soft verdict on either key |
1040
+ * | absent or expired statement | `"VALID_REVOCATION_UNKNOWN"`, or the certificate key's soft verdict |
1041
+ * | statement key unusable (ADR-017) | throws VerificationError |
760
1042
  *
761
- * The last row is the point: `verifyCertificate` answers VALID there, which
1043
+ * The third row is the point: `verifyCertificate` answers VALID there, which
762
1044
  * reads as "not revoked" and is not something it checked.
763
1045
  */
764
1046
  async function verifyCertificateWithStatus(crypto, certificate, publicKeys, status, now) {
1047
+ // A refusal throws out of verifyCertificate, so `base` is VALID or one of the
1048
+ // two soft verdicts. Returning a soft verdict here skipped every check below
1049
+ // it: a revoked certificate signed by a compromised-later key answered
1050
+ // VALID_KEY_COMPROMISED_LATER and its statement was never authenticated. The
1051
+ // verdict is held instead, and resolved against what the statement says.
765
1052
  const base = await verifyCertificate(crypto, certificate, publicKeys);
766
- if (base !== "VALID") {
767
- return base;
768
- }
769
1053
  if (status == null) {
770
- return exports.VALID_REVOCATION_UNKNOWN;
1054
+ return resolveWithBase(base, exports.VALID_REVOCATION_UNKNOWN);
771
1055
  }
772
1056
  const keyId = status.key_id;
773
1057
  const info = keyId ? publicKeys.get(keyId) : undefined;
774
1058
  if (!info) {
775
1059
  throw new errors_js_1.VerificationError(`status statement signed by unknown key: ${keyId}`);
776
1060
  }
777
- if (info.revoked) {
778
- throw new errors_js_1.VerificationError("status statement signed by a revoked key");
779
- }
1061
+ // The whole ADR-017 table, not just the deprecated boolean. `revoked` is
1062
+ // never set by a key loaded from /.well-known/burnledger-keys — that endpoint
1063
+ // publishes key_status — so this check read `false` for a key the issuer had
1064
+ // declared COMPROMISED, and whoever held that key could mint an ACTIVE
1065
+ // statement for a revoked certificate that every SDK and the browser bundle
1066
+ // rendered as a signed "not revoked". core.VerifyCertificateWithStatus has
1067
+ // always evaluated it.
1068
+ //
1069
+ // The anchor is the verifier's own clock, not a field inside the statement: a
1070
+ // statement must already be inside its own validity window to be served at
1071
+ // all, and `now` is a time this verifier observed rather than one the signing
1072
+ // key asserted about itself.
1073
+ const when = now ?? new Date();
1074
+ const at = formatTimestamp(when.toISOString());
1075
+ const statusKeyVerdict = requireUsableKey(info, parseRfc3339(at), keyId, "status statement key");
780
1076
  const payload = buildCertificateStatusPayload(status);
781
1077
  // decodeSignature, not hexToBytes: signatures arrive as hex, base64 or a byte
782
1078
  // array depending on the producer, and every other signature on this path
@@ -787,24 +1083,59 @@ async function verifyCertificateWithStatus(crypto, certificate, publicKeys, stat
787
1083
  }
788
1084
  // A validly signed statement about a different certificate must not be
789
1085
  // allowed to speak for this one.
790
- const certId = certificate.id ??
791
- certificate.certificate_id;
1086
+ //
1087
+ // Compared against `certificate_id` and nothing else. This used to fall back
1088
+ // through `certificate.id`, which the signature does not cover:
1089
+ // buildCertificatePayload (core/payload.go) enumerates nine keys and `id` is
1090
+ // not among them, and no verifier rejects unknown top-level keys. So a holder
1091
+ // of a REVOKED certificate could add `"id": "<some other certificate>"`,
1092
+ // staple that certificate's ACTIVE status statement — served unauthenticated
1093
+ // by design — and this check would compare the two things the attacker chose.
1094
+ // Every signature still verified; the binding was the only forged part.
1095
+ // core/verify.go never had the fallback, so Go said STATUS_STATEMENT_MISMATCH
1096
+ // while both SDKs and the browser bundle said VALID.
1097
+ const certId = certificate.certificate_id;
792
1098
  if (status.certificate_id !== certId) {
793
1099
  throw new errors_js_1.VerificationError("status statement is about a different certificate");
794
1100
  }
795
1101
  // Compared in the normalized form the payload signs, so the freshness check
796
1102
  // cannot disagree with what was signed about the same two instants.
797
- const at = formatTimestamp((now ?? new Date()).toISOString());
798
1103
  const issued = formatTimestamp(status.statement_issued_at);
799
1104
  const expires = formatTimestamp(status.statement_expires_at);
800
1105
  if (at < issued || at >= expires) {
801
1106
  // Stale is not a weaker answer, it is no answer — including for a REVOKED
802
1107
  // statement, which must never decay into VALID.
803
- return exports.VALID_REVOCATION_UNKNOWN;
1108
+ return resolveWithBase(base, exports.VALID_REVOCATION_UNKNOWN);
804
1109
  }
805
1110
  if (status.status === "REVOKED") {
806
- throw new errors_js_1.VerificationError("certificate has been revoked");
1111
+ // Coded, because this is the only status-path rejection that is a fact
1112
+ // about the certificate rather than a failure to authenticate the
1113
+ // statement. A caller that cannot tell the two apart will render an
1114
+ // unsigned statement as a revocation.
1115
+ throw new errors_js_1.VerificationError("certificate has been revoked", errors_js_1.CERTIFICATE_REVOKED);
807
1116
  }
808
- return "VALID";
1117
+ // A state this SDK does not recognize is NOT active. This tested only for
1118
+ // REVOKED and treated everything else as a pass, so a signed, fresh,
1119
+ // correctly-bound statement saying "SUSPENDED" — or "revoked" in the wrong
1120
+ // case — was reported as revocation CHECKED AND PASSED. Mirrors
1121
+ // core.ValidCertificateStatusValue.
1122
+ if (!KNOWN_STATUS_VALUES.has(status.status)) {
1123
+ return resolveWithBase(base, exports.VALID_REVOCATION_UNKNOWN);
1124
+ }
1125
+ // A soft verdict on the status key is the result, not a footnote — but it is
1126
+ // reported only once the statement has authenticated and been read, so it can
1127
+ // neither speak for an unverified statement nor suppress a revocation.
1128
+ return resolveWithBase(base, statusKeyVerdict);
1129
+ }
1130
+ /**
1131
+ * Picks what to report when the certificate's own key returned a soft verdict
1132
+ * and the status path also has something to say. A doubt about the key that
1133
+ * signed the certificate questions the whole document, so it outranks a doubt
1134
+ * about revocation or about the statement's own key; only one verdict string
1135
+ * comes back, and this is the one a reader most needs. Mirrors
1136
+ * core.resolveWithBase.
1137
+ */
1138
+ function resolveWithBase(base, verdict) {
1139
+ return base !== "VALID" ? base : verdict;
809
1140
  }
810
1141
  //# sourceMappingURL=verify.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"verify.js","sourceRoot":"","sources":["../../src/verify.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"verify.js","sourceRoot":"","sources":["../../src/verify.ts"],"names":[],"mappings":"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"}