attenu-guard 0.7.0 → 0.8.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.
- package/CHANGELOG.md +24 -0
- package/README.md +40 -0
- package/dist/cjs/cli.d.ts +4 -1
- package/dist/cjs/cli.d.ts.map +1 -1
- package/dist/cjs/cli.js +37 -3
- package/dist/cjs/cli.js.map +1 -1
- package/dist/cjs/evidence.d.ts +161 -1
- package/dist/cjs/evidence.d.ts.map +1 -1
- package/dist/cjs/evidence.js +605 -5
- package/dist/cjs/evidence.js.map +1 -1
- package/dist/cjs/index.d.ts +2 -2
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +15 -2
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/version.d.ts +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/esm/cli.d.ts +4 -1
- package/dist/esm/cli.d.ts.map +1 -1
- package/dist/esm/cli.js +37 -3
- package/dist/esm/cli.js.map +1 -1
- package/dist/esm/evidence.d.ts +161 -1
- package/dist/esm/evidence.d.ts.map +1 -1
- package/dist/esm/evidence.js +601 -5
- package/dist/esm/evidence.js.map +1 -1
- package/dist/esm/index.d.ts +2 -2
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/version.d.ts +1 -1
- package/dist/esm/version.js +1 -1
- package/package.json +1 -1
package/dist/esm/evidence.d.ts
CHANGED
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
*/
|
|
33
33
|
import { type CJson, type Json } from "./canonical.js";
|
|
34
34
|
import { AuditLog, type Anchor, type LedgerEntry } from "./audit.js";
|
|
35
|
-
import type
|
|
35
|
+
import { type Signer } from "./wire.js";
|
|
36
36
|
/**
|
|
37
37
|
* The COMPLETE set of top-level ledger field names the library emits. Custody
|
|
38
38
|
* guarantee: an exported bundle may carry ONLY these — an unknown field is
|
|
@@ -76,6 +76,12 @@ export interface Bundle {
|
|
|
76
76
|
anchor: Anchor;
|
|
77
77
|
redaction: RedactionReport;
|
|
78
78
|
note: string;
|
|
79
|
+
/**
|
|
80
|
+
* Observer envelopes, when the bundle carries any: a witness's signature over the identity of
|
|
81
|
+
* a ledger entry. Omitted entirely when there are none, so a bundle without them is
|
|
82
|
+
* byte-for-byte what `exportBundle` has always produced.
|
|
83
|
+
*/
|
|
84
|
+
envelopes?: Envelope[];
|
|
79
85
|
}
|
|
80
86
|
/**
|
|
81
87
|
* Every top-level field must be in `LEDGER_FIELDS`; if `contextAllowlist` is
|
|
@@ -93,6 +99,12 @@ export interface ExportOptions {
|
|
|
93
99
|
redactTask?: boolean;
|
|
94
100
|
/** Throw `EvidenceLeakError` on any field outside the allow-list. */
|
|
95
101
|
strict?: boolean;
|
|
102
|
+
/**
|
|
103
|
+
* Observer envelopes (`signEnvelope`) to carry beside the ledger. Omitted from the bundle
|
|
104
|
+
* entirely when absent or empty, so a bundle without them is unchanged. Cannot be combined
|
|
105
|
+
* with `redactTask` in one call: sign over the redacted ledger the export produces.
|
|
106
|
+
*/
|
|
107
|
+
envelopes?: readonly Envelope[] | null;
|
|
96
108
|
}
|
|
97
109
|
/**
|
|
98
110
|
* A self-contained evidence bundle: the full ledger plus a signed anchor over
|
|
@@ -104,6 +116,12 @@ export interface ExportOptions {
|
|
|
104
116
|
* only ever removes. With `strict`, the bundle is checked against
|
|
105
117
|
* `LEDGER_FIELDS` (and `contextAllowlist` if given) and an `EvidenceLeakError`
|
|
106
118
|
* is thrown on any field outside it.
|
|
119
|
+
*
|
|
120
|
+
* ORDER MATTERS with `redactTask`: redaction rewrites every entry hash, so envelopes signed
|
|
121
|
+
* over the unredacted ledger no longer bind to the entries that ship and would all fail
|
|
122
|
+
* `envelope_subject_mismatch`. Giving both throws `Error` rather than exporting a bundle that
|
|
123
|
+
* cannot verify. Export the redacted bundle first, then `signEnvelope` over ITS entries, then
|
|
124
|
+
* export again with those envelopes.
|
|
107
125
|
*/
|
|
108
126
|
export declare function exportBundle(auditLog: AuditLog | readonly LedgerEntry[], signer: Signer, options?: ExportOptions): Bundle;
|
|
109
127
|
/**
|
|
@@ -175,7 +193,132 @@ export interface VerifyChecks {
|
|
|
175
193
|
chain_id: boolean;
|
|
176
194
|
root: boolean;
|
|
177
195
|
expected_anchor: "not checked" | "verified" | "FAILED";
|
|
196
|
+
/**
|
|
197
|
+
* `"not present"` on a bundle with no `envelopes` array, which is every bundle written before
|
|
198
|
+
* observer envelopes existed. Like `anchor`, it is a status string rather than a pass/fail
|
|
199
|
+
* boolean, and a failed envelope already lands its own entry in `failures`.
|
|
200
|
+
*/
|
|
201
|
+
envelopes: "not present" | "verified" | "FAILED";
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* The only envelope version this build knows. The version commits the exact signed member set of
|
|
205
|
+
* the WHOLE envelope, the subject included, so a member added anywhere is a new version and the
|
|
206
|
+
* digest cannot widen silently.
|
|
207
|
+
*/
|
|
208
|
+
export declare const ENVELOPE_VERSION = 1;
|
|
209
|
+
/** The only `typ` at v1. A different one is a different contract, not a different envelope. */
|
|
210
|
+
export declare const ENVELOPE_TYP = "delegation-event-observation";
|
|
211
|
+
/** The envelope's own member set at v1. */
|
|
212
|
+
export declare const ENVELOPE_MEMBERS: ReadonlySet<string>;
|
|
213
|
+
/**
|
|
214
|
+
* The subject member set, keyed by `event`. v1 defines a subject for `spawn` and `allow` and for
|
|
215
|
+
* no other event. `entry_hash` is the BINDING member — the only evidence of WHICH entry the
|
|
216
|
+
* witness signed — and the rest are locators, whose job is to find the entry without hashing
|
|
217
|
+
* every entry.
|
|
218
|
+
*/
|
|
219
|
+
export declare const ENVELOPE_SUBJECT_MEMBERS: ReadonlyMap<string, ReadonlySet<string>>;
|
|
220
|
+
/**
|
|
221
|
+
* `observed.result`'s closed vocabulary. `not_matched` requires evidence that CONTRADICTS the
|
|
222
|
+
* event; `indeterminate` is the residual state, and covers thin or absent evidence. No verifier
|
|
223
|
+
* decision turns on the result: it is reported next to the state, never instead of it.
|
|
224
|
+
*/
|
|
225
|
+
export declare const ENVELOPE_RESULTS: readonly ["matched", "not_matched", "indeterminate"];
|
|
226
|
+
export type EnvelopeResult = (typeof ENVELOPE_RESULTS)[number];
|
|
227
|
+
/** The JOSE identifier for Ed25519, and the only `witness.alg` v1 defines. */
|
|
228
|
+
export declare const ENVELOPE_ALG = "EdDSA";
|
|
229
|
+
/**
|
|
230
|
+
* A verifying envelope's state. It says where the signature came from and NOTHING about
|
|
231
|
+
* authority — the witness is whoever holds the key `witness.kid` names, which nothing in the
|
|
232
|
+
* envelope makes the delegation parent.
|
|
233
|
+
*/
|
|
234
|
+
export declare const WITNESS_SIGNED = "witness-signed";
|
|
235
|
+
/**
|
|
236
|
+
* No envelope, or one that does not verify. It covers two facts a bundle does not separate — a
|
|
237
|
+
* hop nobody undertook to cover, and a hop a witness undertook to cover and never did — and v1
|
|
238
|
+
* takes the weaker reading of the two.
|
|
239
|
+
*/
|
|
240
|
+
export declare const PROCESS_ASSERTED = "process-asserted";
|
|
241
|
+
export type EnvelopeState = typeof WITNESS_SIGNED | typeof PROCESS_ASSERTED;
|
|
242
|
+
/** The seven named envelope failures, in the order this build checks them. */
|
|
243
|
+
export declare const ENVELOPE_FAILURES: readonly ["envelope_unknown_version", "envelope_unknown_member", "envelope_subject_mismatch", "envelope_duplicate_subject", "envelope_non_canonical", "envelope_unknown_witness", "envelope_bad_signature"];
|
|
244
|
+
/** One observer envelope, as it appears in `bundle.envelopes`. */
|
|
245
|
+
export interface Envelope {
|
|
246
|
+
v: number;
|
|
247
|
+
typ: string;
|
|
248
|
+
subject: Record<string, CJson>;
|
|
249
|
+
observed: Record<string, CJson>;
|
|
250
|
+
witness: Record<string, CJson>;
|
|
251
|
+
sig: string;
|
|
252
|
+
}
|
|
253
|
+
/** One trusted witness key, in the shape the vector file carries. */
|
|
254
|
+
export interface WitnessKey {
|
|
255
|
+
kid: string;
|
|
256
|
+
alg: string;
|
|
257
|
+
public_key_hex: string;
|
|
258
|
+
}
|
|
259
|
+
/**
|
|
260
|
+
* The bytes a witness signs: `JCS(envelope minus its "sig" member)`.
|
|
261
|
+
*
|
|
262
|
+
* The same RFC 8785 canonicalization the ledger has signed with since 0.7.0 — one
|
|
263
|
+
* implementation, not a second one for envelopes.
|
|
264
|
+
*/
|
|
265
|
+
export declare function envelopeSigningInput(envelope: Record<string, CJson>): Buffer;
|
|
266
|
+
/**
|
|
267
|
+
* The v1 subject for the entry at `seq`, recomputed from the ledger.
|
|
268
|
+
*
|
|
269
|
+
* Throws when `seq` names no entry, or names one whose `event` v1 defines no subject for.
|
|
270
|
+
*/
|
|
271
|
+
export declare function envelopeSubject(entries: readonly LedgerEntry[], seq: number): Record<string, CJson>;
|
|
272
|
+
/** What a witness asserts about the event it signed. */
|
|
273
|
+
export interface Observation {
|
|
274
|
+
result?: EnvelopeResult;
|
|
275
|
+
at: string;
|
|
276
|
+
method: string;
|
|
277
|
+
}
|
|
278
|
+
/**
|
|
279
|
+
* An observer envelope over the entry at `seq`, signed with the 32-byte Ed25519 `seed`.
|
|
280
|
+
*
|
|
281
|
+
* `entries` is the ledger the subject is recomputed from — a witness signs the identity of an
|
|
282
|
+
* entry that already exists, never a claim it composes itself. That makes the ledger it is
|
|
283
|
+
* signed over part of the signature: sign over the entries AS THEY WILL SHIP. With
|
|
284
|
+
* `exportBundle({redactTask: true})` those are the redacted entries, so export first and sign
|
|
285
|
+
* over the exported bundle's `entries` — `exportBundle` refuses to redact and carry envelopes in
|
|
286
|
+
* one call for exactly this reason.
|
|
287
|
+
*/
|
|
288
|
+
export declare function signEnvelope(entries: readonly LedgerEntry[], seq: number, seed: Buffer, kid: string, observed: Observation): Envelope;
|
|
289
|
+
/** What `verifyEnvelopes` and `verifyBundle`'s `envelopes` field report. */
|
|
290
|
+
export interface EnvelopeSummary {
|
|
291
|
+
status: "verified" | "FAILED" | "not present";
|
|
292
|
+
count: number;
|
|
293
|
+
/** The seqs a verifying envelope covers, ascending. */
|
|
294
|
+
witness_signed: number[];
|
|
295
|
+
/** Every entry's seq -> its state. Coverage is explicit, never assumed dense. */
|
|
296
|
+
states: Record<string, EnvelopeState>;
|
|
297
|
+
/** The `observed.result` of each witness-signed entry. */
|
|
298
|
+
results: Record<string, Json>;
|
|
299
|
+
/** The report line for each entry: `witness-signed (matched)`, or `process-asserted`. */
|
|
300
|
+
lines: Record<string, string>;
|
|
301
|
+
failures: string[];
|
|
302
|
+
}
|
|
303
|
+
export interface VerifyEnvelopesOptions {
|
|
304
|
+
/** The trust set: the vector file's `witness_keys`, or a `{kid: publicKey}` record. */
|
|
305
|
+
witnessKeys?: readonly WitnessKey[] | Record<string, Buffer | string> | null;
|
|
306
|
+
/**
|
|
307
|
+
* The envelope bytes AS RECEIVED, positionally aligned with `bundle.envelopes` (entries may be
|
|
308
|
+
* null). Only `envelope_non_canonical` needs them, and only where a deployment kept them.
|
|
309
|
+
*/
|
|
310
|
+
envelopeBytes?: readonly (Buffer | string | null)[] | null;
|
|
178
311
|
}
|
|
312
|
+
/**
|
|
313
|
+
* Score a bundle's observer envelopes on their own, without the ledger checks.
|
|
314
|
+
*
|
|
315
|
+
* Returns `{ok, ...summary, failure_details}`. `states` maps every entry's seq to
|
|
316
|
+
* `witness-signed` or `process-asserted`; `lines` is the report line for each.
|
|
317
|
+
*/
|
|
318
|
+
export declare function verifyEnvelopes(bundle: Partial<Bundle>, options?: VerifyEnvelopesOptions): EnvelopeSummary & {
|
|
319
|
+
ok: boolean;
|
|
320
|
+
failure_details: FailureDetail[];
|
|
321
|
+
};
|
|
179
322
|
export type ExecutionBinding = {
|
|
180
323
|
status: "not applicable";
|
|
181
324
|
failures?: string[];
|
|
@@ -200,6 +343,11 @@ export interface VerifyReport {
|
|
|
200
343
|
actions_checked: number;
|
|
201
344
|
chain_id: Json;
|
|
202
345
|
execution_binding: ExecutionBinding;
|
|
346
|
+
/**
|
|
347
|
+
* The observer-envelope layer: the per-entry state for EVERY entry, the result and report line
|
|
348
|
+
* for each, and the failures (which are also in `failures`/`failure_details`).
|
|
349
|
+
*/
|
|
350
|
+
envelopes: EnvelopeSummary;
|
|
203
351
|
/** Which anchor mode this verification ran against. */
|
|
204
352
|
verified_against: "expected_anchor" | "bundle_anchor";
|
|
205
353
|
}
|
|
@@ -230,6 +378,18 @@ export interface VerifyBundleOptions {
|
|
|
230
378
|
expectedAnchor?: Record<string, CJson> | Anchor | null;
|
|
231
379
|
/** An independently retained `[seq, hash]` to verify the bundle's actual head against. */
|
|
232
380
|
expectedHead?: readonly [number, string] | null;
|
|
381
|
+
/**
|
|
382
|
+
* The trust set for the bundle's observer envelopes, if it carries any: the vector file's
|
|
383
|
+
* `[{kid, alg, public_key_hex}]` shape, or a `{kid: publicKey}` record. Absent is an EMPTY
|
|
384
|
+
* trust set, not a skipped check — an envelope naming a key nobody trusts is
|
|
385
|
+
* `envelope_unknown_witness`.
|
|
386
|
+
*/
|
|
387
|
+
witnessKeys?: readonly WitnessKey[] | Record<string, Buffer | string> | null;
|
|
388
|
+
/**
|
|
389
|
+
* The envelope bytes AS RECEIVED, positionally aligned with `bundle.envelopes`. Only
|
|
390
|
+
* `envelope_non_canonical` needs them, and only where a deployment kept them.
|
|
391
|
+
*/
|
|
392
|
+
envelopeBytes?: readonly (Buffer | string | null)[] | null;
|
|
233
393
|
}
|
|
234
394
|
export declare function verifyBundle(bundle: Partial<Bundle>, signer?: Signer | null, options?: VerifyBundleOptions): VerifyReport;
|
|
235
395
|
/** Read a bundle from JSON text, keeping every number's original literal. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evidence.d.ts","sourceRoot":"","sources":["../../src/evidence.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"evidence.d.ts","sourceRoot":"","sources":["../../src/evidence.ts"],"names":[],"mappings":"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"}
|