burnledger 0.4.0 → 0.6.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 (104) hide show
  1. package/README.md +11 -4
  2. package/dist/cjs/anchor.d.ts +71 -0
  3. package/dist/cjs/anchor.d.ts.map +1 -0
  4. package/dist/cjs/anchor.js +279 -0
  5. package/dist/cjs/anchor.js.map +1 -0
  6. package/dist/cjs/client.d.ts +26 -2
  7. package/dist/cjs/client.d.ts.map +1 -1
  8. package/dist/cjs/client.js +27 -5
  9. package/dist/cjs/client.js.map +1 -1
  10. package/dist/cjs/enclave-seal.d.ts +101 -0
  11. package/dist/cjs/enclave-seal.d.ts.map +1 -0
  12. package/dist/cjs/enclave-seal.js +479 -0
  13. package/dist/cjs/enclave-seal.js.map +1 -0
  14. package/dist/cjs/errors.d.ts +42 -1
  15. package/dist/cjs/errors.d.ts.map +1 -1
  16. package/dist/cjs/errors.js +44 -2
  17. package/dist/cjs/errors.js.map +1 -1
  18. package/dist/cjs/http.d.ts +21 -1
  19. package/dist/cjs/http.d.ts.map +1 -1
  20. package/dist/cjs/http.js +76 -12
  21. package/dist/cjs/http.js.map +1 -1
  22. package/dist/cjs/index.browser.d.ts +2 -4
  23. package/dist/cjs/index.browser.d.ts.map +1 -1
  24. package/dist/cjs/index.browser.js.map +1 -1
  25. package/dist/cjs/index.d.ts +16 -11
  26. package/dist/cjs/index.d.ts.map +1 -1
  27. package/dist/cjs/index.js +20 -1
  28. package/dist/cjs/index.js.map +1 -1
  29. package/dist/cjs/keys.d.ts +66 -0
  30. package/dist/cjs/keys.d.ts.map +1 -1
  31. package/dist/cjs/keys.js +128 -3
  32. package/dist/cjs/keys.js.map +1 -1
  33. package/dist/cjs/models.d.ts +41 -3
  34. package/dist/cjs/models.d.ts.map +1 -1
  35. package/dist/cjs/models.js +25 -4
  36. package/dist/cjs/models.js.map +1 -1
  37. package/dist/cjs/verify.d.ts +72 -6
  38. package/dist/cjs/verify.d.ts.map +1 -1
  39. package/dist/cjs/verify.js +392 -62
  40. package/dist/cjs/verify.js.map +1 -1
  41. package/dist/cjs/web-verifier.d.ts +54 -5
  42. package/dist/cjs/web-verifier.d.ts.map +1 -1
  43. package/dist/cjs/web-verifier.js +36 -3
  44. package/dist/cjs/web-verifier.js.map +1 -1
  45. package/dist/esm/anchor.d.ts +71 -0
  46. package/dist/esm/anchor.d.ts.map +1 -0
  47. package/dist/esm/anchor.js +275 -0
  48. package/dist/esm/anchor.js.map +1 -0
  49. package/dist/esm/cli.d.ts +45 -14
  50. package/dist/esm/cli.d.ts.map +1 -1
  51. package/dist/esm/cli.js +357 -50
  52. package/dist/esm/cli.js.map +1 -1
  53. package/dist/esm/client.d.ts +26 -2
  54. package/dist/esm/client.d.ts.map +1 -1
  55. package/dist/esm/client.js +27 -5
  56. package/dist/esm/client.js.map +1 -1
  57. package/dist/esm/enclave-seal.d.ts +101 -0
  58. package/dist/esm/enclave-seal.d.ts.map +1 -0
  59. package/dist/esm/enclave-seal.js +472 -0
  60. package/dist/esm/enclave-seal.js.map +1 -0
  61. package/dist/esm/errors.d.ts +42 -1
  62. package/dist/esm/errors.d.ts.map +1 -1
  63. package/dist/esm/errors.js +43 -1
  64. package/dist/esm/errors.js.map +1 -1
  65. package/dist/esm/http.d.ts +21 -1
  66. package/dist/esm/http.d.ts.map +1 -1
  67. package/dist/esm/http.js +75 -12
  68. package/dist/esm/http.js.map +1 -1
  69. package/dist/esm/index.browser.d.ts +2 -4
  70. package/dist/esm/index.browser.d.ts.map +1 -1
  71. package/dist/esm/index.browser.js.map +1 -1
  72. package/dist/esm/index.d.ts +16 -11
  73. package/dist/esm/index.d.ts.map +1 -1
  74. package/dist/esm/index.js +11 -2
  75. package/dist/esm/index.js.map +1 -1
  76. package/dist/esm/keys.d.ts +66 -0
  77. package/dist/esm/keys.d.ts.map +1 -1
  78. package/dist/esm/keys.js +125 -3
  79. package/dist/esm/keys.js.map +1 -1
  80. package/dist/esm/models.d.ts +41 -3
  81. package/dist/esm/models.d.ts.map +1 -1
  82. package/dist/esm/models.js +24 -4
  83. package/dist/esm/models.js.map +1 -1
  84. package/dist/esm/verify.d.ts +72 -6
  85. package/dist/esm/verify.d.ts.map +1 -1
  86. package/dist/esm/verify.js +390 -63
  87. package/dist/esm/verify.js.map +1 -1
  88. package/dist/esm/web-verifier.d.ts +54 -5
  89. package/dist/esm/web-verifier.d.ts.map +1 -1
  90. package/dist/esm/web-verifier.js +40 -3
  91. package/dist/esm/web-verifier.js.map +1 -1
  92. package/package.json +1 -1
  93. package/src/anchor.ts +330 -0
  94. package/src/cli.ts +389 -54
  95. package/src/client.ts +46 -4
  96. package/src/enclave-seal.ts +582 -0
  97. package/src/errors.ts +47 -2
  98. package/src/http.ts +79 -12
  99. package/src/index.browser.ts +2 -2
  100. package/src/index.ts +28 -9
  101. package/src/keys.ts +176 -3
  102. package/src/models.ts +72 -7
  103. package/src/verify.ts +467 -72
  104. package/src/web-verifier.ts +58 -5
@@ -1,19 +1,32 @@
1
1
  /** HTTP transport layer wrapping native fetch.
2
2
  *
3
3
  * Handles: Bearer auth, response envelope unwrapping, retry on 5xx/transport
4
- * errors, Retry-After respect on 429, and raw byte streaming for PDFs.
4
+ * errors and on 429, and raw byte streaming for PDFs.
5
+ *
6
+ * Retry delay: a `Retry-After` header (delta-seconds or HTTP-date) is honoured
7
+ * when the server sends one and it is at most `MAX_RETRY_AFTER`; otherwise
8
+ * exponential backoff with jitter. A 429 with no usable `Retry-After`, one
9
+ * beyond the cap, or one on the last attempt throws `RateLimitError` with
10
+ * `retryAfter` populated so the caller can decide.
5
11
  */
12
+ /** Longest Retry-After, in seconds, the transport will wait on before
13
+ * throwing instead: a server asking for minutes gets the error and the
14
+ * number rather than a promise nobody can cancel. */
15
+ export declare const MAX_RETRY_AFTER = 30;
6
16
  export interface TransportOptions {
7
17
  baseUrl: string;
8
18
  apiKey: string;
9
19
  timeout: number;
10
20
  maxRetries: number;
21
+ /** Team to act as. Omit to let the API use the caller's default team. */
22
+ teamId?: string;
11
23
  }
12
24
  export declare class Transport {
13
25
  private readonly baseUrl;
14
26
  private readonly apiKey;
15
27
  private readonly timeout;
16
28
  private readonly maxRetries;
29
+ private readonly teamId?;
17
30
  constructor(opts: TransportOptions);
18
31
  /** Make a request and return the unwrapped `data` field. */
19
32
  request(method: string, path: string, opts?: {
@@ -32,4 +45,11 @@ export declare class Transport {
32
45
  authenticated?: boolean;
33
46
  }): Promise<Uint8Array>;
34
47
  }
48
+ /** Seconds to wait per the Retry-After header (RFC 9110 §10.2.3).
49
+ *
50
+ * Accepts both forms the header allows: non-negative delta-seconds and an
51
+ * HTTP-date, converted to seconds from now (a date already past reads as 0).
52
+ * Anything else is treated as absent.
53
+ */
54
+ export declare function parseRetryAfter(resp: Response): number | undefined;
35
55
  //# sourceMappingURL=http.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/http.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IAEpC,YAAY,IAAI,EAAE,gBAAgB,EAKjC;IAED,4DAA4D;IACtD,OAAO,CACX,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE;QACL,IAAI,CAAC,EAAE,OAAO,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;QACzC,aAAa,CAAC,EAAE,OAAO,CAAC;KACzB,GACA,OAAO,CAAC,OAAO,CAAC,CAGlB;IAED,6EAA6E;IACvE,UAAU,CACd,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE;QACL,IAAI,CAAC,EAAE,OAAO,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;QACzC,aAAa,CAAC,EAAE,OAAO,CAAC;KACzB,GACA,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAyFlC;IAED,+DAA+D;IACzD,YAAY,CAChB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE;QAAE,aAAa,CAAC,EAAE,OAAO,CAAA;KAAE,GACjC,OAAO,CAAC,UAAU,CAAC,CAwBrB;CACF"}
1
+ {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/http.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH;;qDAEqD;AACrD,eAAO,MAAM,eAAe,KAAK,CAAC;AAElC,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,yEAAyE;IACzE,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IAKpC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAS;IAEjC,YAAY,IAAI,EAAE,gBAAgB,EAMjC;IAED,4DAA4D;IACtD,OAAO,CACX,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE;QACL,IAAI,CAAC,EAAE,OAAO,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;QACzC,aAAa,CAAC,EAAE,OAAO,CAAC;KACzB,GACA,OAAO,CAAC,OAAO,CAAC,CAGlB;IAED,6EAA6E;IACvE,UAAU,CACd,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE;QACL,IAAI,CAAC,EAAE,OAAO,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;QACzC,aAAa,CAAC,EAAE,OAAO,CAAC;KACzB,GACA,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CA0GlC;IAED,+DAA+D;IACzD,YAAY,CAChB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE;QAAE,aAAa,CAAC,EAAE,OAAO,CAAA;KAAE,GACjC,OAAO,CAAC,UAAU,CAAC,CA6BrB;CACF;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS,CAYlE"}
package/dist/esm/http.js CHANGED
@@ -1,19 +1,35 @@
1
1
  /** HTTP transport layer wrapping native fetch.
2
2
  *
3
3
  * Handles: Bearer auth, response envelope unwrapping, retry on 5xx/transport
4
- * errors, Retry-After respect on 429, and raw byte streaming for PDFs.
4
+ * errors and on 429, and raw byte streaming for PDFs.
5
+ *
6
+ * Retry delay: a `Retry-After` header (delta-seconds or HTTP-date) is honoured
7
+ * when the server sends one and it is at most `MAX_RETRY_AFTER`; otherwise
8
+ * exponential backoff with jitter. A 429 with no usable `Retry-After`, one
9
+ * beyond the cap, or one on the last attempt throws `RateLimitError` with
10
+ * `retryAfter` populated so the caller can decide.
5
11
  */
6
12
  import { raiseForError } from "./errors.js";
13
+ /** Longest Retry-After, in seconds, the transport will wait on before
14
+ * throwing instead: a server asking for minutes gets the error and the
15
+ * number rather than a promise nobody can cancel. */
16
+ export const MAX_RETRY_AFTER = 30;
7
17
  export class Transport {
8
18
  baseUrl;
9
19
  apiKey;
10
20
  timeout;
11
21
  maxRetries;
22
+ // Which team the caller is acting as. The API resolves scope from this
23
+ // header and otherwise falls back to the caller's default team, so a member
24
+ // of more than one team who does not send it silently acts as whichever they
25
+ // joined first.
26
+ teamId;
12
27
  constructor(opts) {
13
28
  this.baseUrl = opts.baseUrl.replace(/\/+$/, "");
14
29
  this.apiKey = opts.apiKey;
15
30
  this.timeout = opts.timeout;
16
31
  this.maxRetries = opts.maxRetries;
32
+ this.teamId = opts.teamId;
17
33
  }
18
34
  /** Make a request and return the unwrapped `data` field. */
19
35
  async request(method, path, opts) {
@@ -28,6 +44,12 @@ export class Transport {
28
44
  };
29
45
  if (authenticated) {
30
46
  headers["Authorization"] = `Bearer ${this.apiKey}`;
47
+ // Alongside the key, never without it: the header names the scope the
48
+ // caller is acting in, which is meaningless for an unauthenticated
49
+ // request and is not a second credential.
50
+ if (this.teamId) {
51
+ headers["X-Team-ID"] = this.teamId;
52
+ }
31
53
  }
32
54
  let url = `${this.baseUrl}${path}`;
33
55
  if (opts?.params) {
@@ -48,13 +70,13 @@ export class Transport {
48
70
  headers["Idempotency-Key"] = randomIdempotencyKey();
49
71
  }
50
72
  let lastError;
73
+ // Delay before the next attempt when the server named one; undefined
74
+ // means fall back to backoff.
75
+ let retryAfter;
51
76
  for (let attempt = 0; attempt <= this.maxRetries; attempt++) {
52
77
  if (attempt > 0) {
53
- // Backoff with ±25% jitter so coordinated 5xx events don't produce
54
- // a synchronized retry storm from every client at the same instant.
55
- const base = 500 * 2 ** (attempt - 1);
56
- const jitter = base * 0.25 * (Math.random() * 2 - 1);
57
- await sleep(base + jitter);
78
+ await sleep(retryDelayMs(attempt, retryAfter));
79
+ retryAfter = undefined;
58
80
  }
59
81
  const controller = new AbortController();
60
82
  const timer = setTimeout(() => controller.abort(), this.timeout * 1000);
@@ -78,8 +100,17 @@ export class Transport {
78
100
  if (resp.status === 204) {
79
101
  return {};
80
102
  }
103
+ retryAfter = parseRetryAfter(resp);
81
104
  if (resp.status === 429) {
82
- const retryAfter = parseRetryAfter(resp);
105
+ // Only on the server's say-so: without Retry-After there is no delay
106
+ // known to be enough, and beyond the cap the caller gets the number
107
+ // (RateLimitError.retryAfter) rather than a hung promise.
108
+ if (retryAfter !== undefined &&
109
+ retryAfter <= MAX_RETRY_AFTER &&
110
+ attempt < this.maxRetries) {
111
+ lastError = new Error(`Server error ${resp.status}`);
112
+ continue;
113
+ }
83
114
  const errorBody = await safeJson(resp);
84
115
  raiseForError(resp.status, errorBody, retryAfter);
85
116
  }
@@ -101,6 +132,11 @@ export class Transport {
101
132
  const headers = {};
102
133
  if (authenticated) {
103
134
  headers["Authorization"] = `Bearer ${this.apiKey}`;
135
+ // A downloaded certificate is as team-scoped as the JSON one; omitting
136
+ // the header here would hand a member their default team's PDF.
137
+ if (this.teamId) {
138
+ headers["X-Team-ID"] = this.teamId;
139
+ }
104
140
  }
105
141
  const url = `${this.baseUrl}${path}`;
106
142
  const controller = new AbortController();
@@ -119,12 +155,39 @@ export class Transport {
119
155
  return new Uint8Array(await resp.arrayBuffer());
120
156
  }
121
157
  }
122
- function parseRetryAfter(resp) {
123
- const raw = resp.headers.get("Retry-After");
124
- if (raw == null)
158
+ /** Seconds to wait per the Retry-After header (RFC 9110 §10.2.3).
159
+ *
160
+ * Accepts both forms the header allows: non-negative delta-seconds and an
161
+ * HTTP-date, converted to seconds from now (a date already past reads as 0).
162
+ * Anything else is treated as absent.
163
+ */
164
+ export function parseRetryAfter(resp) {
165
+ const raw = resp.headers.get("Retry-After")?.trim();
166
+ if (!raw)
125
167
  return undefined;
126
- const n = Number(raw);
127
- return Number.isFinite(n) ? n : undefined;
168
+ if (/^\d+(\.\d+)?$/.test(raw)) {
169
+ return Number(raw);
170
+ }
171
+ // Every HTTP-date form (IMF-fixdate, RFC 850, asctime) opens with a weekday
172
+ // name; Date.parse alone would also read "-3" or "2099" as a year.
173
+ if (!/^[A-Za-z]{3}/.test(raw))
174
+ return undefined;
175
+ const when = Date.parse(raw);
176
+ if (Number.isNaN(when))
177
+ return undefined;
178
+ return Math.max(0, (when - Date.now()) / 1000);
179
+ }
180
+ /** Milliseconds to sleep before retry `attempt` (1-based). A server-supplied
181
+ * delay within the cap wins; otherwise exponential backoff with ±25% jitter so
182
+ * coordinated 5xx events don't produce a synchronized retry storm from every
183
+ * client at the same instant. */
184
+ function retryDelayMs(attempt, retryAfter) {
185
+ if (retryAfter !== undefined && retryAfter <= MAX_RETRY_AFTER) {
186
+ return retryAfter * 1000;
187
+ }
188
+ const base = Math.min(500 * 2 ** (attempt - 1), MAX_RETRY_AFTER * 1000);
189
+ const jitter = base * 0.25 * (Math.random() * 2 - 1);
190
+ return base + jitter;
128
191
  }
129
192
  async function safeJson(resp) {
130
193
  // Read once. resp.json() consumes the stream on failure too — calling
@@ -1 +1 @@
1
- {"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/http.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/http.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C;;qDAEqD;AACrD,MAAM,CAAC,MAAM,eAAe,GAAG,EAAE,CAAC;AAWlC,MAAM,OAAO,SAAS;IACH,OAAO,CAAS;IAChB,MAAM,CAAS;IACf,OAAO,CAAS;IAChB,UAAU,CAAS;IACpC,uEAAuE;IACvE,4EAA4E;IAC5E,6EAA6E;IAC7E,gBAAgB;IACC,MAAM,CAAU;IAEjC,YAAY,IAAsB;QAChC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAChD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC5B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QAClC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IAC5B,CAAC;IAED,4DAA4D;IAC5D,KAAK,CAAC,OAAO,CACX,MAAc,EACd,IAAY,EACZ,IAIC;QAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAC3D,OAAQ,QAAoC,CAAC,IAAI,CAAC;IACpD,CAAC;IAED,6EAA6E;IAC7E,KAAK,CAAC,UAAU,CACd,MAAc,EACd,IAAY,EACZ,IAIC;QAED,MAAM,aAAa,GAAG,IAAI,EAAE,aAAa,IAAI,IAAI,CAAC;QAClD,MAAM,OAAO,GAA2B;YACtC,MAAM,EAAE,kBAAkB;SAC3B,CAAC;QACF,IAAI,aAAa,EAAE,CAAC;YAClB,OAAO,CAAC,eAAe,CAAC,GAAG,UAAU,IAAI,CAAC,MAAM,EAAE,CAAC;YACnD,sEAAsE;YACtE,mEAAmE;YACnE,0CAA0C;YAC1C,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChB,OAAO,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;YACrC,CAAC;QACH,CAAC;QAED,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,CAAC;QACnC,IAAI,IAAI,EAAE,MAAM,EAAE,CAAC;YACjB,MAAM,EAAE,GAAG,IAAI,eAAe,EAAE,CAAC;YACjC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;gBACjD,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YACvB,CAAC;YACD,GAAG,IAAI,IAAI,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC;QAC7B,CAAC;QAED,MAAM,IAAI,GACR,IAAI,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACnE,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,OAAO,CAAC,cAAc,CAAC,GAAG,kBAAkB,CAAC;QAC/C,CAAC;QACD,IAAI,MAAM,CAAC,WAAW,EAAE,KAAK,MAAM,EAAE,CAAC;YACpC,yEAAyE;YACzE,yEAAyE;YACzE,sBAAsB;YACtB,OAAO,CAAC,iBAAiB,CAAC,GAAG,oBAAoB,EAAE,CAAC;QACtD,CAAC;QAED,IAAI,SAA4B,CAAC;QACjC,qEAAqE;QACrE,8BAA8B;QAC9B,IAAI,UAA8B,CAAC;QAEnC,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,EAAE,CAAC;YAC5D,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;gBAChB,MAAM,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;gBAC/C,UAAU,GAAG,SAAS,CAAC;YACzB,CAAC;YAED,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;YACzC,MAAM,KAAK,GAAG,UAAU,CACtB,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EACxB,IAAI,CAAC,OAAO,GAAG,IAAI,CACpB,CAAC;YAEF,IAAI,IAAc,CAAC;YACnB,IAAI,CAAC;gBACH,IAAI,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;oBACtB,MAAM;oBACN,OAAO;oBACP,IAAI;oBACJ,MAAM,EAAE,UAAU,CAAC,MAAM;iBAC1B,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,YAAY,CAAC,KAAK,CAAC,CAAC;gBACpB,SAAS,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;gBAChE,SAAS;YACX,CAAC;oBAAS,CAAC;gBACT,YAAY,CAAC,KAAK,CAAC,CAAC;YACtB,CAAC;YAED,IAAI,IAAI,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBACxB,OAAO,EAAE,CAAC;YACZ,CAAC;YAED,UAAU,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;YACnC,IAAI,IAAI,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBACxB,qEAAqE;gBACrE,oEAAoE;gBACpE,0DAA0D;gBAC1D,IACE,UAAU,KAAK,SAAS;oBACxB,UAAU,IAAI,eAAe;oBAC7B,OAAO,GAAG,IAAI,CAAC,UAAU,EACzB,CAAC;oBACD,SAAS,GAAG,IAAI,KAAK,CAAC,gBAAgB,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;oBACrD,SAAS;gBACX,CAAC;gBACD,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;gBACvC,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;YACpD,CAAC;YAED,IAAI,IAAI,CAAC,MAAM,IAAI,GAAG,IAAI,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;gBACpD,SAAS,GAAG,IAAI,KAAK,CAAC,gBAAgB,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;gBACrD,SAAS;YACX,CAAC;YAED,IAAI,IAAI,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;gBACvB,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;gBACvC,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YACxC,CAAC;YAED,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAA4B,CAAC;QACxD,CAAC;QAED,MAAM,IAAI,KAAK,CACb,wBAAwB,IAAI,CAAC,UAAU,GAAG,CAAC,cAAc,SAAS,EAAE,OAAO,EAAE,CAC9E,CAAC;IACJ,CAAC;IAED,+DAA+D;IAC/D,KAAK,CAAC,YAAY,CAChB,MAAc,EACd,IAAY,EACZ,IAAkC;QAElC,MAAM,aAAa,GAAG,IAAI,EAAE,aAAa,IAAI,IAAI,CAAC;QAClD,MAAM,OAAO,GAA2B,EAAE,CAAC;QAC3C,IAAI,aAAa,EAAE,CAAC;YAClB,OAAO,CAAC,eAAe,CAAC,GAAG,UAAU,IAAI,CAAC,MAAM,EAAE,CAAC;YACnD,uEAAuE;YACvE,gEAAgE;YAChE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChB,OAAO,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;YACrC,CAAC;QACH,CAAC;QAED,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,CAAC;QACrC,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;QAExE,IAAI,IAAc,CAAC;QACnB,IAAI,CAAC;YACH,IAAI,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;QAC1E,CAAC;gBAAS,CAAC;YACT,YAAY,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;YACvB,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;YACvC,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QACxC,CAAC;QAED,OAAO,IAAI,UAAU,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;IAClD,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,IAAc;IAC5C,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,CAAC;IACpD,IAAI,CAAC,GAAG;QAAE,OAAO,SAAS,CAAC;IAC3B,IAAI,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAC9B,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC;IACD,4EAA4E;IAC5E,mEAAmE;IACnE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,SAAS,CAAC;IAChD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC7B,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;QAAE,OAAO,SAAS,CAAC;IACzC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;AACjD,CAAC;AAED;;;iCAGiC;AACjC,SAAS,YAAY,CAAC,OAAe,EAAE,UAA8B;IACnE,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,IAAI,eAAe,EAAE,CAAC;QAC9D,OAAO,UAAU,GAAG,IAAI,CAAC;IAC3B,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC,CAAC;IACxE,MAAM,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IACrD,OAAO,IAAI,GAAG,MAAM,CAAC;AACvB,CAAC;AAED,KAAK,UAAU,QAAQ,CAAC,IAAc;IACpC,sEAAsE;IACtE,qEAAqE;IACrE,6BAA6B;IAC7B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;IAC/B,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAA4B,CAAC;IACrD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO;YACL,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE;SAC1D,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,4EAA4E;AAC5E,uEAAuE;AACvE,SAAS,oBAAoB;IAC3B,MAAM,CAAC,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;IAC7B,UAAU,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,YAAY;IAC1C,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,aAAa;IAC3C,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACzE,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;AACnG,CAAC"}
@@ -16,7 +16,7 @@ export { Paginator } from "./pagination.js";
16
16
  export type { CryptoOps } from "./crypto.js";
17
17
  export type { PublicKeyInfo } from "./verify.js";
18
18
  export { issuanceBytes, hexToBytes, bytesToHex } from "./verify.js";
19
- import type { PublicKeyInfo } from "./verify.js";
19
+ import type { PublicKeyInfo, PublicKeyOptions } from "./verify.js";
20
20
  import type { VerificationResult, TransparencyResult } from "./models.js";
21
21
  type Cert = Record<string, unknown>;
22
22
  /** Verify all signatures on a deletion certificate offline. */
@@ -24,9 +24,7 @@ export declare function verifyCertificate(certificate: Cert, publicKeys: Map<str
24
24
  /** Verify the transparency proof embedded in a certificate. */
25
25
  export declare function verifyTransparency(certificate: Cert, publicKeys: Map<string, PublicKeyInfo>): Promise<TransparencyResult>;
26
26
  /** Construct a PublicKeyInfo from a hex-encoded Ed25519 public key. */
27
- export declare function publicKeyFromHex(hexKey: string, opts?: {
28
- revoked?: boolean;
29
- }): Promise<PublicKeyInfo>;
27
+ export declare function publicKeyFromHex(hexKey: string, opts?: PublicKeyOptions): Promise<PublicKeyInfo>;
30
28
  /** Verify a Merkle consistency proof between two tree states (RFC 6962). */
31
29
  export declare function verifyConsistency(oldSize: number, newSize: number, oldRoot: Uint8Array, newRoot: Uint8Array, proof: Uint8Array[]): Promise<boolean>;
32
30
  //# sourceMappingURL=index.browser.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.browser.d.ts","sourceRoot":"","sources":["../../src/index.browser.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,YAAY,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAErD,OAAO,EACL,eAAe,EACf,QAAQ,EACR,mBAAmB,EACnB,aAAa,EACb,aAAa,EACb,eAAe,EACf,cAAc,EACd,WAAW,EACX,YAAY,EACZ,iBAAiB,GAClB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,YAAY,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAElD,YAAY,EACV,SAAS,EACT,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,YAAY,EACZ,iBAAiB,EACjB,mBAAmB,EACnB,aAAa,EACb,SAAS,EACT,YAAY,EACZ,kBAAkB,EAClB,kBAAkB,EAClB,MAAM,EACN,iBAAiB,EACjB,WAAW,EACX,kBAAkB,EAClB,YAAY,EACZ,mBAAmB,EACnB,gBAAgB,EAChB,OAAO,EACP,cAAc,EACd,QAAQ,EACR,cAAc,EACd,gBAAgB,GACjB,MAAM,aAAa,CAAC;AAIrB,OAAO,EAAE,WAAW,EAAE,wBAAwB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAElF,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,YAAY,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AASpE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAE1E,KAAK,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEpC,+DAA+D;AAC/D,wBAAgB,iBAAiB,CAC/B,WAAW,EAAE,IAAI,EACjB,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,GACrC,OAAO,CAAC,kBAAkB,CAAC,CAE7B;AAED,+DAA+D;AAC/D,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,IAAI,EACjB,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,GACrC,OAAO,CAAC,kBAAkB,CAAC,CAE7B;AAED,uEAAuE;AACvE,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,GAC3B,OAAO,CAAC,aAAa,CAAC,CAExB;AAED,4EAA4E;AAC5E,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,UAAU,EACnB,OAAO,EAAE,UAAU,EACnB,KAAK,EAAE,UAAU,EAAE,GAClB,OAAO,CAAC,OAAO,CAAC,CAElB"}
1
+ {"version":3,"file":"index.browser.d.ts","sourceRoot":"","sources":["../../src/index.browser.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,YAAY,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAErD,OAAO,EACL,eAAe,EACf,QAAQ,EACR,mBAAmB,EACnB,aAAa,EACb,aAAa,EACb,eAAe,EACf,cAAc,EACd,WAAW,EACX,YAAY,EACZ,iBAAiB,GAClB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,YAAY,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAElD,YAAY,EACV,SAAS,EACT,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,YAAY,EACZ,iBAAiB,EACjB,mBAAmB,EACnB,aAAa,EACb,SAAS,EACT,YAAY,EACZ,kBAAkB,EAClB,kBAAkB,EAClB,MAAM,EACN,iBAAiB,EACjB,WAAW,EACX,kBAAkB,EAClB,YAAY,EACZ,mBAAmB,EACnB,gBAAgB,EAChB,OAAO,EACP,cAAc,EACd,QAAQ,EACR,cAAc,EACd,gBAAgB,GACjB,MAAM,aAAa,CAAC;AAIrB,OAAO,EAAE,WAAW,EAAE,wBAAwB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAElF,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,YAAY,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AASpE,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACnE,OAAO,KAAK,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAE1E,KAAK,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEpC,+DAA+D;AAC/D,wBAAgB,iBAAiB,CAC/B,WAAW,EAAE,IAAI,EACjB,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,GACrC,OAAO,CAAC,kBAAkB,CAAC,CAE7B;AAED,+DAA+D;AAC/D,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,IAAI,EACjB,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,GACrC,OAAO,CAAC,kBAAkB,CAAC,CAE7B;AAED,uEAAuE;AACvE,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,gBAAgB,GACtB,OAAO,CAAC,aAAa,CAAC,CAExB;AAED,4EAA4E;AAC5E,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,UAAU,EACnB,OAAO,EAAE,UAAU,EACnB,KAAK,EAAE,UAAU,EAAE,GAClB,OAAO,CAAC,OAAO,CAAC,CAElB"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.browser.js","sourceRoot":"","sources":["../../src/index.browser.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC,OAAO,EACL,eAAe,EACf,QAAQ,EACR,mBAAmB,EACnB,aAAa,EACb,aAAa,EACb,eAAe,EACf,cAAc,EACd,WAAW,EACX,YAAY,EACZ,iBAAiB,GAClB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AA8BtC,2EAA2E;AAC3E,0EAA0E;AAC1E,OAAO,EAAE,WAAW,EAAE,wBAAwB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAElF,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAI5C,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEpE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EACL,iBAAiB,IAAI,kBAAkB,EACvC,kBAAkB,IAAI,mBAAmB,EACzC,iBAAiB,IAAI,kBAAkB,EACvC,gBAAgB,IAAI,iBAAiB,GACtC,MAAM,aAAa,CAAC;AAMrB,+DAA+D;AAC/D,MAAM,UAAU,iBAAiB,CAC/B,WAAiB,EACjB,UAAsC;IAEtC,OAAO,kBAAkB,CAAC,aAAa,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;AACpE,CAAC;AAED,+DAA+D;AAC/D,MAAM,UAAU,kBAAkB,CAChC,WAAiB,EACjB,UAAsC;IAEtC,OAAO,mBAAmB,CAAC,aAAa,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;AACrE,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,gBAAgB,CAC9B,MAAc,EACd,IAA4B;IAE5B,OAAO,iBAAiB,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;AACxD,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,iBAAiB,CAC/B,OAAe,EACf,OAAe,EACf,OAAmB,EACnB,OAAmB,EACnB,KAAmB;IAEnB,OAAO,kBAAkB,CAAC,aAAa,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AACtF,CAAC"}
1
+ {"version":3,"file":"index.browser.js","sourceRoot":"","sources":["../../src/index.browser.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC,OAAO,EACL,eAAe,EACf,QAAQ,EACR,mBAAmB,EACnB,aAAa,EACb,aAAa,EACb,eAAe,EACf,cAAc,EACd,WAAW,EACX,YAAY,EACZ,iBAAiB,GAClB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AA8BtC,2EAA2E;AAC3E,0EAA0E;AAC1E,OAAO,EAAE,WAAW,EAAE,wBAAwB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAElF,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAI5C,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEpE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EACL,iBAAiB,IAAI,kBAAkB,EACvC,kBAAkB,IAAI,mBAAmB,EACzC,iBAAiB,IAAI,kBAAkB,EACvC,gBAAgB,IAAI,iBAAiB,GACtC,MAAM,aAAa,CAAC;AAMrB,+DAA+D;AAC/D,MAAM,UAAU,iBAAiB,CAC/B,WAAiB,EACjB,UAAsC;IAEtC,OAAO,kBAAkB,CAAC,aAAa,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;AACpE,CAAC;AAED,+DAA+D;AAC/D,MAAM,UAAU,kBAAkB,CAChC,WAAiB,EACjB,UAAsC;IAEtC,OAAO,mBAAmB,CAAC,aAAa,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;AACrE,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,gBAAgB,CAC9B,MAAc,EACd,IAAuB;IAEvB,OAAO,iBAAiB,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;AACxD,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,iBAAiB,CAC/B,OAAe,EACf,OAAe,EACf,OAAmB,EACnB,OAAmB,EACnB,KAAmB;IAEnB,OAAO,kBAAkB,CAAC,aAAa,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AACtF,CAAC"}
@@ -1,16 +1,17 @@
1
1
  /** BurnLedger TypeScript SDK — public API (Node.js entry point). */
2
- export { BurnLedger } from "./client.js";
2
+ export { BurnLedger, MAX_BATCH_REVOKE } from "./client.js";
3
3
  export type { BurnLedgerOptions } from "./client.js";
4
- export { BurnLedgerError, ApiError, AuthenticationError, NotFoundError, ConflictError, ValidationError, RateLimitError, ServerError, TimeoutError, VerificationError, } from "./errors.js";
4
+ export { BurnLedgerError, ApiError, AuthenticationError, NotFoundError, ConflictError, ValidationError, RateLimitError, ServerError, TimeoutError, VerificationError, CERTIFICATE_REVOKED, UNSUPPORTED_FORMAT_VERSION, } from "./errors.js";
5
5
  export { Transport } from "./http.js";
6
6
  export type { TransportOptions } from "./http.js";
7
- export type { ProofMode, AttestationStatus, CertificateStatus, TransparencyStatus, HealthStatus, TransportSecurity, ReadOnlyEnforcement, ConnectorType, HashScope, LogEntryType, VerificationResult, TransparencyResult, ApiKeyRole, System, SystemAttestation, Attestation, VerificationSystem, VerifyResult, CertificateResponse, RevocationStatus, Webhook, SignedTreeHead, LogEntry, InclusionProof, ConsistencyProof, BatchAttestationResponse, BatchAttestationError, MonthlyCount, CertificateStats, WebhookRotateResponse, WebhookDelivery, ApiKeyListItem, ApiKeyResponse, PlanUsage, Profile, SystemHealth, } from "./models.js";
7
+ export type { PublicKeyOptions } from "./verify.js";
8
+ export type { ProofMode, AttestationStatus, CertificateStatus, TransparencyStatus, HealthStatus, TransportSecurity, ReadOnlyEnforcement, ConnectorType, HashScope, LogEntryType, VerificationResult, TransparencyResult, ApiKeyRole, System, SystemAttestation, Attestation, VerificationSystem, VerifyResult, CertificateResponse, RevocationStatus, Webhook, SignedTreeHead, LogEntry, InclusionProof, ConsistencyProof, BatchAttestationResponse, BatchAttestationError, BatchRevokeResponse, BatchRevokeError, MonthlyCount, CertificateStats, WebhookRotateResponse, WebhookDelivery, ApiKeyListItem, ApiKeyResponse, PlanUsage, Profile, SystemHealth, } from "./models.js";
8
9
  export { parseSystem, parseCertificateResponse, parseWebhook } from "./models.js";
9
10
  export { Paginator } from "./pagination.js";
10
11
  export type { CryptoOps } from "./crypto.js";
11
12
  export type { PublicKeyInfo } from "./verify.js";
12
13
  export { issuanceBytes, hexToBytes, bytesToHex } from "./verify.js";
13
- import type { PublicKeyInfo } from "./verify.js";
14
+ import type { PublicKeyInfo, PublicKeyOptions } from "./verify.js";
14
15
  import type { VerificationResult, TransparencyResult } from "./models.js";
15
16
  type Cert = Record<string, unknown>;
16
17
  /** Verify all signatures on a deletion certificate offline. */
@@ -33,14 +34,18 @@ export declare function verifyTransparency(certificate: Cert, publicKeys: Map<st
33
34
  * all, and every key they built looked unconditionally active. Widening only;
34
35
  * `revoked` still works and still means "unusable".
35
36
  */
36
- export declare function publicKeyFromHex(hexKey: string, opts?: {
37
- revoked?: boolean;
38
- keyStatus?: string;
39
- notBefore?: string;
40
- notAfter?: string;
41
- compromisedFrom?: string;
42
- }): Promise<PublicKeyInfo>;
37
+ export declare function publicKeyFromHex(hexKey: string, opts?: PublicKeyOptions): Promise<PublicKeyInfo>;
43
38
  /** Verify a Merkle consistency proof between two tree states (RFC 6962). */
44
39
  export declare function verifyConsistency(oldSize: number, newSize: number, oldRoot: Uint8Array, newRoot: Uint8Array, proof: Uint8Array[]): Promise<boolean>;
45
40
  export { verifyWebhookSignature, isTimestampFresh } from "./webhooks.js";
41
+ /**
42
+ * Client-side connection-config sealing.
43
+ *
44
+ * Node only, and absent from the browser entry point on purpose: verifying an
45
+ * attestation document needs X.509 chain building, which browsers do not
46
+ * expose, and sealing a datastore credential is not something a browser should
47
+ * be doing.
48
+ */
49
+ export { EnclaveAttestationError, ENVELOPE_MAGIC, HEADER_SIZE, NITRO_ROOT_G1_PEM, sealConnectionConfig, sealToKey, verifyEnclaveConfigSealKey, } from "./enclave-seal.js";
50
+ export type { SealOptions } from "./enclave-seal.js";
46
51
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,oEAAoE;AAEpE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,YAAY,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAErD,OAAO,EACL,eAAe,EACf,QAAQ,EACR,mBAAmB,EACnB,aAAa,EACb,aAAa,EACb,eAAe,EACf,cAAc,EACd,WAAW,EACX,YAAY,EACZ,iBAAiB,GAClB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,YAAY,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAElD,YAAY,EACV,SAAS,EACT,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,YAAY,EACZ,iBAAiB,EACjB,mBAAmB,EACnB,aAAa,EACb,SAAS,EACT,YAAY,EACZ,kBAAkB,EAClB,kBAAkB,EAClB,UAAU,EACV,MAAM,EACN,iBAAiB,EACjB,WAAW,EACX,kBAAkB,EAClB,YAAY,EACZ,mBAAmB,EACnB,gBAAgB,EAChB,OAAO,EACP,cAAc,EACd,QAAQ,EACR,cAAc,EACd,gBAAgB,EAChB,wBAAwB,EACxB,qBAAqB,EACrB,YAAY,EACZ,gBAAgB,EAChB,qBAAqB,EACrB,eAAe,EACf,cAAc,EACd,cAAc,EACd,SAAS,EACT,OAAO,EACP,YAAY,GACb,MAAM,aAAa,CAAC;AAIrB,OAAO,EAAE,WAAW,EAAE,wBAAwB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAElF,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,YAAY,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAUpE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAE1E,KAAK,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEpC,+DAA+D;AAC/D,wBAAgB,iBAAiB,CAC/B,WAAW,EAAE,IAAI,EACjB,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,GACrC,OAAO,CAAC,kBAAkB,CAAC,CAE7B;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CACzC,WAAW,EAAE,IAAI,EACjB,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,EACtC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,EACvC,GAAG,CAAC,EAAE,IAAI,GACT,OAAO,CAAC,MAAM,CAAC,CAEjB;AAED,+DAA+D;AAC/D,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,IAAI,EACjB,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,GACrC,OAAO,CAAC,kBAAkB,CAAC,CAE7B;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE;IACL,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,GACA,OAAO,CAAC,aAAa,CAAC,CAExB;AAED,4EAA4E;AAC5E,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,UAAU,EACnB,OAAO,EAAE,UAAU,EACnB,KAAK,EAAE,UAAU,EAAE,GAClB,OAAO,CAAC,OAAO,CAAC,CAElB;AAED,OAAO,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
package/dist/esm/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  /** BurnLedger TypeScript SDK — public API (Node.js entry point). */
2
- export { BurnLedger } from "./client.js";
3
- export { BurnLedgerError, ApiError, AuthenticationError, NotFoundError, ConflictError, ValidationError, RateLimitError, ServerError, TimeoutError, VerificationError, } from "./errors.js";
2
+ export { BurnLedger, MAX_BATCH_REVOKE } from "./client.js";
3
+ export { BurnLedgerError, ApiError, AuthenticationError, NotFoundError, ConflictError, ValidationError, RateLimitError, ServerError, TimeoutError, VerificationError, CERTIFICATE_REVOKED, UNSUPPORTED_FORMAT_VERSION, } from "./errors.js";
4
4
  export { Transport } from "./http.js";
5
5
  // Raw-JSON → model parsers, for consumers that fetch API responses outside
6
6
  // the client (the dashboard's paginated list hooks) but render SDK types.
@@ -43,4 +43,13 @@ export function verifyConsistency(oldSize, newSize, oldRoot, newRoot, proof) {
43
43
  return _verifyConsistency(nodeCrypto, oldSize, newSize, oldRoot, newRoot, proof);
44
44
  }
45
45
  export { verifyWebhookSignature, isTimestampFresh } from "./webhooks.js";
46
+ /**
47
+ * Client-side connection-config sealing.
48
+ *
49
+ * Node only, and absent from the browser entry point on purpose: verifying an
50
+ * attestation document needs X.509 chain building, which browsers do not
51
+ * expose, and sealing a datastore credential is not something a browser should
52
+ * be doing.
53
+ */
54
+ export { EnclaveAttestationError, ENVELOPE_MAGIC, HEADER_SIZE, NITRO_ROOT_G1_PEM, sealConnectionConfig, sealToKey, verifyEnclaveConfigSealKey, } from "./enclave-seal.js";
46
55
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,oEAAoE;AAEpE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC,OAAO,EACL,eAAe,EACf,QAAQ,EACR,mBAAmB,EACnB,aAAa,EACb,aAAa,EACb,eAAe,EACf,cAAc,EACd,WAAW,EACX,YAAY,EACZ,iBAAiB,GAClB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AA0CtC,2EAA2E;AAC3E,0EAA0E;AAC1E,OAAO,EAAE,WAAW,EAAE,wBAAwB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAElF,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAI5C,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEpE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EACL,iBAAiB,IAAI,kBAAkB,EACvC,2BAA2B,IAAI,4BAA4B,EAC3D,kBAAkB,IAAI,mBAAmB,EACzC,iBAAiB,IAAI,kBAAkB,EACvC,gBAAgB,IAAI,iBAAiB,GACtC,MAAM,aAAa,CAAC;AAMrB,+DAA+D;AAC/D,MAAM,UAAU,iBAAiB,CAC/B,WAAiB,EACjB,UAAsC;IAEtC,OAAO,kBAAkB,CAAC,UAAU,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;AACjE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,2BAA2B,CACzC,WAAiB,EACjB,UAAsC,EACtC,MAAuC,EACvC,GAAU;IAEV,OAAO,4BAA4B,CAAC,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;AACxF,CAAC;AAED,+DAA+D;AAC/D,MAAM,UAAU,kBAAkB,CAChC,WAAiB,EACjB,UAAsC;IAEtC,OAAO,mBAAmB,CAAC,UAAU,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;AAClE,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,gBAAgB,CAC9B,MAAc,EACd,IAMC;IAED,OAAO,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;AACrD,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,iBAAiB,CAC/B,OAAe,EACf,OAAe,EACf,OAAmB,EACnB,OAAmB,EACnB,KAAmB;IAEnB,OAAO,kBAAkB,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AACnF,CAAC;AAED,OAAO,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,oEAAoE;AAEpE,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAG3D,OAAO,EACL,eAAe,EACf,QAAQ,EACR,mBAAmB,EACnB,aAAa,EACb,aAAa,EACb,eAAe,EACf,cAAc,EACd,WAAW,EACX,YAAY,EACZ,iBAAiB,EACjB,mBAAmB,EACnB,0BAA0B,GAC3B,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AA8CtC,2EAA2E;AAC3E,0EAA0E;AAC1E,OAAO,EAAE,WAAW,EAAE,wBAAwB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAElF,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAI5C,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEpE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EACL,iBAAiB,IAAI,kBAAkB,EACvC,2BAA2B,IAAI,4BAA4B,EAC3D,kBAAkB,IAAI,mBAAmB,EACzC,iBAAiB,IAAI,kBAAkB,EACvC,gBAAgB,IAAI,iBAAiB,GACtC,MAAM,aAAa,CAAC;AAMrB,+DAA+D;AAC/D,MAAM,UAAU,iBAAiB,CAC/B,WAAiB,EACjB,UAAsC;IAEtC,OAAO,kBAAkB,CAAC,UAAU,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;AACjE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,2BAA2B,CACzC,WAAiB,EACjB,UAAsC,EACtC,MAAuC,EACvC,GAAU;IAEV,OAAO,4BAA4B,CAAC,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;AACxF,CAAC;AAED,+DAA+D;AAC/D,MAAM,UAAU,kBAAkB,CAChC,WAAiB,EACjB,UAAsC;IAEtC,OAAO,mBAAmB,CAAC,UAAU,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;AAClE,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,gBAAgB,CAC9B,MAAc,EACd,IAAuB;IAEvB,OAAO,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;AACrD,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,iBAAiB,CAC/B,OAAe,EACf,OAAe,EACf,OAAmB,EACnB,OAAmB,EACnB,KAAmB;IAEnB,OAAO,kBAAkB,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AACnF,CAAC;AAED,OAAO,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEzE;;;;;;;GAOG;AACH,OAAO,EACL,uBAAuB,EACvB,cAAc,EACd,WAAW,EACX,iBAAiB,EACjB,oBAAoB,EACpB,SAAS,EACT,0BAA0B,GAC3B,MAAM,mBAAmB,CAAC"}
@@ -1,3 +1,4 @@
1
+ import type { CryptoOps } from "./crypto.js";
1
2
  export type KeyEntry = {
2
3
  key_id: string;
3
4
  public_key: string;
@@ -9,6 +10,24 @@ export type KeyEntry = {
9
10
  not_after?: string | null;
10
11
  compromised_from?: string | null;
11
12
  };
13
+ /**
14
+ * The published key set as /.well-known/burnledger-keys serves it: the `keys`
15
+ * array, and BESIDE it — in the same object — the fields of a signed
16
+ * key_list.v3 statement when the server signs one (ADR-017 §5a). A body with no
17
+ * `signature` is the unsigned list the endpoint has always served; that is not
18
+ * an error, it is the state of the world before §5a is deployed.
19
+ *
20
+ * Mirrors core.KeyListDocument.
21
+ */
22
+ export type KeyListDocument = {
23
+ keys: KeyEntry[];
24
+ statement_issued_at?: string;
25
+ statement_expires_at?: string;
26
+ sth_tree_size?: number;
27
+ sth_root_hash?: string;
28
+ signature?: string;
29
+ key_id?: string;
30
+ };
12
31
  /**
13
32
  * Normalize a parsed keys file to an array of key entries. Accepts a bare
14
33
  * JSON array (the generated keys.json shape), a { "keys": [...] } envelope,
@@ -16,4 +35,51 @@ export type KeyEntry = {
16
35
  * actually publishes. Throws on any other shape.
17
36
  */
18
37
  export declare function parseKeyEntries(parsed: unknown): KeyEntry[];
38
+ /**
39
+ * Read a published key set in any shape this project has ever served — a bare
40
+ * array, a {"keys": [...]} object, or either inside the API's {"data": ...}
41
+ * envelope — keeping the statement fields when the object forms carry them.
42
+ * Mirrors core.ParseKeyListDocument, so this CLI, the Go CLI and the browser
43
+ * cannot disagree about which files are key sets.
44
+ */
45
+ export declare function parseKeyListDocument(parsed: unknown): KeyListDocument;
46
+ /** Verdicts about a key list. Mirrors core.KeyListResult, plus the one the CLI
47
+ * adds (SIGNING_KEY_NOT_IN_LIST) because core never reaches it: VerifyKeyList
48
+ * is told which key to trust, and this is the case where there is none to offer. */
49
+ export declare const KEY_LIST_VALID = "VALID";
50
+ export declare const KEY_LIST_MALFORMED = "MALFORMED_KEY_LIST";
51
+ export declare const KEY_LIST_SIGNING_KEY_UNUSABLE = "KEY_LIST_SIGNING_KEY_UNUSABLE";
52
+ export declare const KEY_LIST_INVALID_SIGNATURE = "INVALID_KEY_LIST_SIGNATURE";
53
+ export declare const KEY_LIST_STALE = "KEY_LIST_STALE";
54
+ export declare const KEY_LIST_SIGNING_KEY_ABSENT = "SIGNING_KEY_NOT_IN_LIST";
55
+ /**
56
+ * What a run learned about where the key statuses and dates came from.
57
+ * Mirrors keyListEvidence in cmd/cli/keys.go: it is not a pass/fail input to
58
+ * certificate verification, it qualifies one. An auditor reading
59
+ * KEY_COMPROMISED needs to know whether that word arrived as evidence they can
60
+ * keep or as JSON from an endpoint trusted for one TCP connection.
61
+ */
62
+ export interface KeyListEvidence {
63
+ /** Whether the file carried a signed statement at all. */
64
+ present: boolean;
65
+ result?: string;
66
+ /** The trusted key was taken from the list itself — trust-on-first-use, not proof. */
67
+ selfSigned: boolean;
68
+ /** statement_expires_at, normalized to the form Go prints. */
69
+ expiresAt?: string;
70
+ }
71
+ /**
72
+ * Check a key-list statement the way cmd/cli/keys.go does, so four verifiers
73
+ * agree: the trusted key is looked up IN THE LIST ITSELF (trust-on-first-use,
74
+ * and selfSigned says so), then core.VerifyKeyList's order — the list parses
75
+ * and has no duplicate, the signing key is usable at `now` under ADR-017's
76
+ * table, the signature verifies over the published entries, and only then
77
+ * freshness. A stale verdict is never returned for a signature never tested.
78
+ *
79
+ * THROWS where the Go CLI exits 2: an entry that does not parse, a key_id that
80
+ * is not sha256(public_key), or a statement whose fields will not read. Someone
81
+ * signed something the reader cannot read, and continuing as though the file
82
+ * were merely unsigned would throw that fact away.
83
+ */
84
+ export declare function verifyKeyList(crypto: CryptoOps, doc: KeyListDocument, now: Date): Promise<KeyListEvidence>;
19
85
  //# sourceMappingURL=keys.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../../src/keys.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,QAAQ,GAAG;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB;;0BAEsB;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,OAAO,GAAG,QAAQ,EAAE,CAO3D"}
1
+ {"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../../src/keys.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAU7C,MAAM,MAAM,QAAQ,GAAG;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB;;0BAEsB;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,QAAQ,EAAE,CAAC;IACjB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,OAAO,GAAG,QAAQ,EAAE,CAE3D;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,OAAO,GAAG,eAAe,CAQrE;AAED;;oFAEoF;AACpF,eAAO,MAAM,cAAc,UAAU,CAAC;AACtC,eAAO,MAAM,kBAAkB,uBAAuB,CAAC;AACvD,eAAO,MAAM,6BAA6B,kCAAkC,CAAC;AAC7E,eAAO,MAAM,0BAA0B,+BAA+B,CAAC;AACvE,eAAO,MAAM,cAAc,mBAAmB,CAAC;AAC/C,eAAO,MAAM,2BAA2B,4BAA4B,CAAC;AAErE;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC9B,0DAA0D;IAC1D,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,sFAAsF;IACtF,UAAU,EAAE,OAAO,CAAC;IACpB,8DAA8D;IAC9D,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAoBD;;;;;;;;;;;;GAYG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,SAAS,EACjB,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,IAAI,GACR,OAAO,CAAC,eAAe,CAAC,CAmE1B"}
package/dist/esm/keys.js CHANGED
@@ -1,4 +1,6 @@
1
- // Public-key file parsing shared by the CLI (and unit-testable in isolation).
1
+ // Public-key file parsing shared by the CLI and the browser verifier, and the
2
+ // key_list.v3 verdict (ADR-017 §5a) — unit-testable in isolation.
3
+ import { buildKeyListPayload, evaluateKey, formatTimestamp, hexToBytes, keyIsUsable, publicKeyFromHex, } from "./verify.js";
2
4
  /**
3
5
  * Normalize a parsed keys file to an array of key entries. Accepts a bare
4
6
  * JSON array (the generated keys.json shape), a { "keys": [...] } envelope,
@@ -6,11 +8,131 @@
6
8
  * actually publishes. Throws on any other shape.
7
9
  */
8
10
  export function parseKeyEntries(parsed) {
11
+ return parseKeyListDocument(parsed).keys;
12
+ }
13
+ /**
14
+ * Read a published key set in any shape this project has ever served — a bare
15
+ * array, a {"keys": [...]} object, or either inside the API's {"data": ...}
16
+ * envelope — keeping the statement fields when the object forms carry them.
17
+ * Mirrors core.ParseKeyListDocument, so this CLI, the Go CLI and the browser
18
+ * cannot disagree about which files are key sets.
19
+ */
20
+ export function parseKeyListDocument(parsed) {
9
21
  const root = parsed?.data ?? parsed;
10
- const entries = Array.isArray(root) ? root : root?.keys;
22
+ if (Array.isArray(root))
23
+ return { keys: root };
24
+ const entries = root?.keys;
11
25
  if (!Array.isArray(entries)) {
12
26
  throw new Error('--keys file must be a JSON array of keys or a {"keys": [...]} object');
13
27
  }
14
- return entries;
28
+ return root;
29
+ }
30
+ /** Verdicts about a key list. Mirrors core.KeyListResult, plus the one the CLI
31
+ * adds (SIGNING_KEY_NOT_IN_LIST) because core never reaches it: VerifyKeyList
32
+ * is told which key to trust, and this is the case where there is none to offer. */
33
+ export const KEY_LIST_VALID = "VALID";
34
+ export const KEY_LIST_MALFORMED = "MALFORMED_KEY_LIST";
35
+ export const KEY_LIST_SIGNING_KEY_UNUSABLE = "KEY_LIST_SIGNING_KEY_UNUSABLE";
36
+ export const KEY_LIST_INVALID_SIGNATURE = "INVALID_KEY_LIST_SIGNATURE";
37
+ export const KEY_LIST_STALE = "KEY_LIST_STALE";
38
+ export const KEY_LIST_SIGNING_KEY_ABSENT = "SIGNING_KEY_NOT_IN_LIST";
39
+ /** The whole-second RFC 3339 form every published key date uses
40
+ * (core.KeyTimeFormat). Entry dates are validated against it strictly, as
41
+ * core.KeyEntry.PublicKeyInfo does, so a date Go refuses is refused here. */
42
+ const KEY_TIME_RE = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}Z$/;
43
+ function requireKeyTime(keyId, field, value) {
44
+ if (typeof value !== "string" || !KEY_TIME_RE.test(value)) {
45
+ throw new Error(`key ${keyId}: ${field} is not YYYY-MM-DDTHH:MM:SSZ`);
46
+ }
47
+ }
48
+ function requireHex(field, value, bytes) {
49
+ if (typeof value !== "string" || value.length !== bytes * 2 || !/^[0-9a-fA-F]+$/.test(value)) {
50
+ throw new Error(`key list: ${field} is not ${bytes} bytes of hex`);
51
+ }
52
+ return hexToBytes(value);
53
+ }
54
+ /**
55
+ * Check a key-list statement the way cmd/cli/keys.go does, so four verifiers
56
+ * agree: the trusted key is looked up IN THE LIST ITSELF (trust-on-first-use,
57
+ * and selfSigned says so), then core.VerifyKeyList's order — the list parses
58
+ * and has no duplicate, the signing key is usable at `now` under ADR-017's
59
+ * table, the signature verifies over the published entries, and only then
60
+ * freshness. A stale verdict is never returned for a signature never tested.
61
+ *
62
+ * THROWS where the Go CLI exits 2: an entry that does not parse, a key_id that
63
+ * is not sha256(public_key), or a statement whose fields will not read. Someone
64
+ * signed something the reader cannot read, and continuing as though the file
65
+ * were merely unsigned would throw that fact away.
66
+ */
67
+ export async function verifyKeyList(crypto, doc, now) {
68
+ if (doc.keys.length === 0)
69
+ throw new Error("keys file contains no keys");
70
+ const signed = doc.signature !== undefined && doc.signature !== "";
71
+ const keys = new Map();
72
+ let duplicate = false;
73
+ for (const e of doc.keys) {
74
+ if (typeof e.public_key !== "string")
75
+ throw new Error(`key ${e.key_id}: public_key is not a string`);
76
+ const pki = await publicKeyFromHex(crypto, e.public_key, {
77
+ keyStatus: e.key_status,
78
+ notBefore: e.not_before,
79
+ notAfter: e.not_after ?? undefined,
80
+ compromisedFrom: e.compromised_from ?? undefined,
81
+ });
82
+ // The strict Go loader rules — key_id is sha256(public_key), dates are
83
+ // whole-second UTC — apply to a SIGNED list, whose statement signs the
84
+ // published strings. An unsigned list keeps this CLI's existing
85
+ // tolerance (an absent key_id is allowed, and the map is keyed on the
86
+ // derived id either way); tightening the unsigned path would refuse files
87
+ // it accepts today.
88
+ if (signed) {
89
+ if (e.key_id !== pki.keyId) {
90
+ throw new Error(`key_id ${e.key_id} does not match sha256(public_key) (${pki.keyId})`);
91
+ }
92
+ if (e.not_before != null && e.not_before !== "")
93
+ requireKeyTime(e.key_id, "not_before", e.not_before);
94
+ if (e.not_after != null)
95
+ requireKeyTime(e.key_id, "not_after", e.not_after);
96
+ if (e.compromised_from != null)
97
+ requireKeyTime(e.key_id, "compromised_from", e.compromised_from);
98
+ }
99
+ if (keys.has(pki.keyId))
100
+ duplicate = true;
101
+ keys.set(pki.keyId, pki);
102
+ }
103
+ if (!signed) {
104
+ return { present: false, selfSigned: false };
105
+ }
106
+ // The statement's own fields. Refused rather than defaulted: a zero
107
+ // statement_expires_at would read as "expired", which is an answer.
108
+ requireHex("sth_root_hash", doc.sth_root_hash, 32);
109
+ const signature = requireHex("signature", doc.signature, 64);
110
+ if (typeof doc.key_id !== "string" || doc.key_id === "")
111
+ throw new Error("key list: key_id is missing");
112
+ if (typeof doc.sth_tree_size !== "number" || !Number.isInteger(doc.sth_tree_size) || doc.sth_tree_size < 0) {
113
+ throw new Error("key list: sth_tree_size is not a non-negative integer");
114
+ }
115
+ const issued = formatTimestamp(doc.statement_issued_at);
116
+ const expires = formatTimestamp(doc.statement_expires_at);
117
+ const evidence = { present: true, selfSigned: false, expiresAt: expires };
118
+ const signingKey = keys.get(doc.key_id);
119
+ if (signingKey === undefined) {
120
+ return { ...evidence, result: KEY_LIST_SIGNING_KEY_ABSENT };
121
+ }
122
+ evidence.selfSigned = true;
123
+ if (duplicate)
124
+ return { ...evidence, result: KEY_LIST_MALFORMED };
125
+ const at = formatTimestamp(now.toISOString());
126
+ if (!keyIsUsable(evaluateKey(signingKey, Math.floor(Date.parse(at) / 1000)))) {
127
+ return { ...evidence, result: KEY_LIST_SIGNING_KEY_UNUSABLE };
128
+ }
129
+ const payload = buildKeyListPayload(doc);
130
+ if (!(await crypto.ed25519Verify(signingKey.keyBytes, payload, signature))) {
131
+ return { ...evidence, result: KEY_LIST_INVALID_SIGNATURE };
132
+ }
133
+ if (at < issued || at >= expires) {
134
+ return { ...evidence, result: KEY_LIST_STALE };
135
+ }
136
+ return { ...evidence, result: KEY_LIST_VALID };
15
137
  }
16
138
  //# sourceMappingURL=keys.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"keys.js","sourceRoot":"","sources":["../../src/keys.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAc9E;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,MAAe;IAC7C,MAAM,IAAI,GAAI,MAA6B,EAAE,IAAI,IAAI,MAAM,CAAC;IAC5D,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAE,IAA2B,EAAE,IAAI,CAAC;IAChF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAC;IAC1F,CAAC;IACD,OAAO,OAAqB,CAAC;AAC/B,CAAC"}
1
+ {"version":3,"file":"keys.js","sourceRoot":"","sources":["../../src/keys.ts"],"names":[],"mappings":"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"}