@cedulon/audit 0.1.0 → 0.3.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/dist/index.d.ts CHANGED
@@ -1,7 +1,10 @@
1
- import { type SignedCheckpoint } from "@cedulon/checkpoint";
1
+ import { type InclusionReceipt, type SignedCheckpoint } from "@cedulon/checkpoint";
2
2
  import { type SignedReceipt } from "@cedulon/receipts";
3
3
  import { type RailSettlement, type SignedRailExtract } from "@cedulon/x402-adapter";
4
- export type FindingCode = "settlement-without-receipt" | "receipt-without-settlement" | "receipt-chain-break" | "checkpoint-total-mismatch" | "checkpoint-head-mismatch" | "duplicate-ref" | "settlement-mismatch" | "equivocation" | "window-coverage" | "settled-without-ref" | "unauthenticated-extract" | "extract-key-mismatch" | "extract-scope-mismatch" | "extract-settlement-mismatch" | "malformed-amount" | "countersign-bad" | "ok";
4
+ export declare const FINDING_CODES: readonly ["settlement-without-receipt", "receipt-without-settlement", "receipt-chain-break", "checkpoint-total-mismatch", "checkpoint-head-mismatch", "duplicate-ref", "settlement-mismatch", "equivocation", "window-coverage", "settled-without-ref", "unauthenticated-extract", "unauthenticated-issuer", "unauthenticated-witness", "unauthenticated-countersigner", "countersign-missing", "witness-entry-unattributable", "issuer-key-mismatch", "countersign-key-mismatch", "extract-key-mismatch", "extract-scope-mismatch", "extract-settlement-mismatch", "trust-key-unreadable", "unstated-audit-window", "malformed-amount", "countersign-bad", "checkpoint-not-anchored", "checkpoint-withheld", "checkpoint-totals-redacted"];
5
+ export type FindingCode = (typeof FINDING_CODES)[number];
6
+ /** Diagnostic envelope version. Not a wire format until a later draft says so. */
7
+ export declare const FINDING_OBJECT_VERSION = 1;
5
8
  /**
6
9
  * Trust root the verifier supplies out of band. Without it a rail extract only
7
10
  * proves internal consistency: any key can sign any body, including its own.
@@ -13,8 +16,24 @@ export type RailTrustPin = {
13
16
  windowStartMs?: number;
14
17
  windowEndMs?: number;
15
18
  };
19
+ /**
20
+ * The issuer key the verifier holds out of band. The rail pin says who reported
21
+ * the settlements; this says who was entitled to issue receipts and checkpoints
22
+ * for them. Without it an attacker mints a key, signs a receipt for a settlement
23
+ * they were never authorised to make, and the row stops looking uncovered.
24
+ */
25
+ export type IssuerTrustPin = {
26
+ /**
27
+ * One key, or every key the verifier accepts. A single pin turns an honest key
28
+ * rotation into a wall of findings, and the way out an operator reaches for is
29
+ * to stop pinning at all - so the set is stated rather than assumed to be one.
30
+ */
31
+ publicKeyPem: string | readonly string[];
32
+ };
33
+ /** Payee keys the verifier holds, keyed by the payee named in the receipt. */
34
+ export type PayeeTrustPins = Readonly<Record<string, string>>;
16
35
  export type Finding = {
17
- code: Exclude<FindingCode, "ok">;
36
+ code: FindingCode;
18
37
  detail: string;
19
38
  id: string;
20
39
  severity?: "fail" | "warn";
@@ -29,6 +48,25 @@ export type AuditReport = {
29
48
  export declare function inCheckpointWindow(timestampMs: number, cp: SignedCheckpoint): boolean;
30
49
  export declare function receiptsInWindow(receipts: SignedReceipt[], cp: SignedCheckpoint): SignedReceipt[];
31
50
  export declare function findReceiptChainBreak(receipts: SignedReceipt[]): Finding | null;
51
+ /**
52
+ * Defects the submitted receipts have on their own terms: a settled receipt that
53
+ * names no rail ref, and two receipts claiming the same one. Neither is a claim
54
+ * about who signed them, so neither depends on a trust root - and an unreadable
55
+ * pin used to take both down with it, quietly simplifying the picture.
56
+ */
57
+ export declare function findReceiptSelfConsistency(receipts: SignedReceipt[]): Finding[];
58
+ /**
59
+ * Defects keyed by the offending receipt's own nonce. These accuse nobody else,
60
+ * so they are reported for every receipt submitted - a receipt the verifier
61
+ * rejected can still be malformed, and saying so costs the honest side nothing.
62
+ */
63
+ export declare function findReceiptDefects(receipts: SignedReceipt[]): Finding[];
64
+ /**
65
+ * A clash between two receipts, keyed by the rail ref they share. That ref may
66
+ * be one the honest issuer legitimately used, so this question is asked only of
67
+ * the receipts the verifier accepts.
68
+ */
69
+ export declare function findReceiptRefClashes(receipts: SignedReceipt[]): Finding[];
32
70
  export declare function findSettlementMatches(receipts: SignedReceipt[], settlements: RailSettlement[]): Finding[];
33
71
  /** @deprecated use findSettlementMatches */
34
72
  export declare function findSettlementsWithoutReceipt(receipts: SignedReceipt[], settlements: RailSettlement[]): Finding[];
@@ -37,12 +75,30 @@ export declare function findReceiptsWithoutSettlement(receipts: SignedReceipt[],
37
75
  export declare function findWindowCoverage(receipts: SignedReceipt[], checkpoints: SignedCheckpoint[]): Finding[];
38
76
  export declare function findCheckpointTotalMismatches(receipts: SignedReceipt[], checkpoints: SignedCheckpoint[]): Finding[];
39
77
  export declare function findEquivocationFinding(checkpoints: SignedCheckpoint[]): Finding | null;
40
- export declare function audit(input: {
78
+ export type AuditInput = {
41
79
  receipts: SignedReceipt[];
42
80
  checkpoints: SignedCheckpoint[];
43
81
  settlements?: RailSettlement[];
44
82
  extract?: SignedRailExtract;
45
83
  trust?: RailTrustPin;
46
- }): AuditReport;
84
+ issuerTrust?: IssuerTrustPin;
85
+ /** The transparency log's key, held out of band. Same argument as the two above. */
86
+ witnessTrust?: IssuerTrustPin;
87
+ /** Payee keys the verifier holds, keyed by payee. Same argument again. */
88
+ payeeTrust?: PayeeTrustPins;
89
+ /** Checkpoint inclusion receipts. Absent ⇒ today's behaviour. Present ⇒ T11 witness is configured. */
90
+ inclusionReceipts?: InclusionReceipt[];
91
+ };
92
+ export declare function audit(input: AuditInput): AuditReport;
93
+ export type FindingObject = {
94
+ findingObjectVersion: typeof FINDING_OBJECT_VERSION;
95
+ ok: boolean;
96
+ guarantee: AuditReport["guarantee"];
97
+ summary: string;
98
+ receipts: number;
99
+ findings: Finding[];
100
+ warnings: Finding[];
101
+ };
102
+ export declare function toFindingObject(report: AuditReport, receiptCount?: number): FindingObject;
47
103
  export declare function formatAudit(report: AuditReport, receiptCount?: number): string;
48
104
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,gBAAgB,EACtB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAsD,KAAK,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAC3G,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACvB,MAAM,uBAAuB,CAAC;AAE/B,MAAM,MAAM,WAAW,GACnB,4BAA4B,GAC5B,4BAA4B,GAC5B,qBAAqB,GACrB,2BAA2B,GAC3B,0BAA0B,GAC1B,eAAe,GACf,qBAAqB,GACrB,cAAc,GACd,iBAAiB,GACjB,qBAAqB,GACrB,yBAAyB,GACzB,sBAAsB,GACtB,wBAAwB,GACxB,6BAA6B,GAC7B,kBAAkB,GAClB,iBAAiB,GACjB,IAAI,CAAC;AAET;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,OAAO,GAAG;IACpB,IAAI,EAAE,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,EAAE,EAAE,OAAO,CAAC;IACZ,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,SAAS,EAAE,eAAe,GAAG,aAAa,CAAC;IAC3C,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAUF,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,gBAAgB,GAAG,OAAO,CAErF;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,aAAa,EAAE,EAAE,EAAE,EAAE,gBAAgB,GAAG,aAAa,EAAE,CAEjG;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG,OAAO,GAAG,IAAI,CAmB/E;AAwBD,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,aAAa,EAAE,EACzB,WAAW,EAAE,cAAc,EAAE,GAC5B,OAAO,EAAE,CA6HX;AAED,4CAA4C;AAC5C,wBAAgB,6BAA6B,CAC3C,QAAQ,EAAE,aAAa,EAAE,EACzB,WAAW,EAAE,cAAc,EAAE,GAC5B,OAAO,EAAE,CAEX;AAED,4CAA4C;AAC5C,wBAAgB,6BAA6B,CAC3C,QAAQ,EAAE,aAAa,EAAE,EACzB,WAAW,EAAE,cAAc,EAAE,GAC5B,OAAO,EAAE,CAEX;AAED,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,aAAa,EAAE,EACzB,WAAW,EAAE,gBAAgB,EAAE,GAC9B,OAAO,EAAE,CAuCX;AAED,wBAAgB,6BAA6B,CAC3C,QAAQ,EAAE,aAAa,EAAE,EACzB,WAAW,EAAE,gBAAgB,EAAE,GAC9B,OAAO,EAAE,CA6CX;AAED,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,gBAAgB,EAAE,GAAG,OAAO,GAAG,IAAI,CAUvF;AAiBD,wBAAgB,KAAK,CAAC,KAAK,EAAE;IAC3B,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,WAAW,EAAE,gBAAgB,EAAE,CAAC;IAChC,WAAW,CAAC,EAAE,cAAc,EAAE,CAAC;IAC/B,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B,KAAK,CAAC,EAAE,YAAY,CAAC;CACtB,GAAG,WAAW,CAoId;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,WAAW,EAAE,YAAY,SAAI,GAAG,MAAM,CAWzE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,6 +1,60 @@
1
- import { findCheckpointChainBreak, findEquivocation, totalsFromReceipts, verifyCheckpoint, } from "@cedulon/checkpoint";
1
+ import { sameSpkiKey, toSpkiDer } from "@cedulon/cose";
2
+ import { findCheckpointChainBreak, findEquivocation, statementHashOfCheckpoint, totalsFromReceipts, verifyCheckpoint, verifyInclusionReceipt, } from "@cedulon/checkpoint";
2
3
  import { receiptHash, verifyCounterSignature, verifyReceipt } from "@cedulon/receipts";
3
4
  import { verifyRailExtract, } from "@cedulon/x402-adapter";
5
+ export const FINDING_CODES = [
6
+ "settlement-without-receipt",
7
+ "receipt-without-settlement",
8
+ "receipt-chain-break",
9
+ "checkpoint-total-mismatch",
10
+ "checkpoint-head-mismatch",
11
+ "duplicate-ref",
12
+ "settlement-mismatch",
13
+ "equivocation",
14
+ "window-coverage",
15
+ "settled-without-ref",
16
+ "unauthenticated-extract",
17
+ "unauthenticated-issuer",
18
+ "unauthenticated-witness",
19
+ "unauthenticated-countersigner",
20
+ "countersign-missing",
21
+ "witness-entry-unattributable",
22
+ "issuer-key-mismatch",
23
+ "countersign-key-mismatch",
24
+ "extract-key-mismatch",
25
+ "extract-scope-mismatch",
26
+ "extract-settlement-mismatch",
27
+ "trust-key-unreadable",
28
+ "unstated-audit-window",
29
+ "malformed-amount",
30
+ "countersign-bad",
31
+ "checkpoint-not-anchored",
32
+ "checkpoint-withheld",
33
+ "checkpoint-totals-redacted",
34
+ ];
35
+ /** Diagnostic envelope version. Not a wire format until a later draft says so. */
36
+ export const FINDING_OBJECT_VERSION = 1;
37
+ /**
38
+ * Reads a pin as SPKI DER, keeping the keys it could read and counting the ones
39
+ * it could not. One mistyped key in a rotation set must not throw away the
40
+ * others, and a set nothing could be read from must withhold trust rather than
41
+ * fall back to accepting everything.
42
+ */
43
+ function pinnedKeys(pin) {
44
+ const pems = typeof pin === "string" ? [pin] : pin;
45
+ const usable = [];
46
+ let unreadable = 0;
47
+ for (const pem of pems) {
48
+ const der = toSpkiDer(pem);
49
+ if (der === null) {
50
+ unreadable += 1;
51
+ }
52
+ else {
53
+ usable.push(der);
54
+ }
55
+ }
56
+ return { usable, unreadable };
57
+ }
4
58
  function receiptRef(r) {
5
59
  return r.claims.x402PaymentRef;
6
60
  }
@@ -51,10 +105,23 @@ function pushDuplicateRefs(items, findings) {
51
105
  }
52
106
  return dupes;
53
107
  }
54
- export function findSettlementMatches(receipts, settlements) {
108
+ /**
109
+ * Defects the submitted receipts have on their own terms: a settled receipt that
110
+ * names no rail ref, and two receipts claiming the same one. Neither is a claim
111
+ * about who signed them, so neither depends on a trust root - and an unreadable
112
+ * pin used to take both down with it, quietly simplifying the picture.
113
+ */
114
+ export function findReceiptSelfConsistency(receipts) {
115
+ return [...findReceiptDefects(receipts), ...findReceiptRefClashes(receipts)];
116
+ }
117
+ /**
118
+ * Defects keyed by the offending receipt's own nonce. These accuse nobody else,
119
+ * so they are reported for every receipt submitted - a receipt the verifier
120
+ * rejected can still be malformed, and saying so costs the honest side nothing.
121
+ */
122
+ export function findReceiptDefects(receipts) {
55
123
  const findings = [];
56
- const settled = receipts.filter(isSettled);
57
- for (const r of settled) {
124
+ for (const r of receipts.filter(isSettled)) {
58
125
  if (receiptRef(r) === null) {
59
126
  findings.push({
60
127
  code: "settled-without-ref",
@@ -63,6 +130,25 @@ export function findSettlementMatches(receipts, settlements) {
63
130
  });
64
131
  }
65
132
  }
133
+ return findings;
134
+ }
135
+ /**
136
+ * A clash between two receipts, keyed by the rail ref they share. That ref may
137
+ * be one the honest issuer legitimately used, so this question is asked only of
138
+ * the receipts the verifier accepts.
139
+ */
140
+ export function findReceiptRefClashes(receipts) {
141
+ const findings = [];
142
+ const withRef = receipts
143
+ .filter(isSettled)
144
+ .map((r) => ({ ref: receiptRef(r), id: r.claims.nonce, side: "receipt" }))
145
+ .filter((x) => x.ref !== null);
146
+ pushDuplicateRefs(withRef, findings);
147
+ return findings;
148
+ }
149
+ export function findSettlementMatches(receipts, settlements) {
150
+ const findings = [];
151
+ const settled = receipts.filter(isSettled);
66
152
  const receiptItems = settled
67
153
  .map((r) => ({ ref: receiptRef(r), id: r.claims.nonce, side: "receipt", receipt: r }))
68
154
  .filter((x) => x.ref !== null);
@@ -72,7 +158,9 @@ export function findSettlementMatches(receipts, settlements) {
72
158
  side: "settlement",
73
159
  settlement: s,
74
160
  }));
75
- const dupeReceipt = pushDuplicateRefs(receiptItems, findings);
161
+ // Reported by findReceiptRefClashes over the accepted set; here the set is
162
+ // only needed to know which refs the aggregate walk covers.
163
+ const dupeReceipt = pushDuplicateRefs(receiptItems, []);
76
164
  const dupeSettlement = pushDuplicateRefs(settlementItems, findings);
77
165
  const skip = new Set([...dupeReceipt, ...dupeSettlement]);
78
166
  // A ref that repeats is skipped by the ref-keyed match below, so compare the
@@ -113,7 +201,12 @@ export function findSettlementMatches(receipts, settlements) {
113
201
  if (malformed) {
114
202
  continue;
115
203
  }
116
- for (const [currency, settled] of settledByCurrency) {
204
+ // Walk both sides: a currency that appears only among the receipts is a
205
+ // receipt with nothing settled behind it, and iterating the settled side
206
+ // alone would report nothing at all for it.
207
+ const currencies = new Set([...settledByCurrency.keys(), ...receiptedByCurrency.keys()]);
208
+ for (const currency of currencies) {
209
+ const settled = settledByCurrency.get(currency) ?? 0n;
117
210
  const receipted = receiptedByCurrency.get(currency) ?? 0n;
118
211
  if (settled > receipted) {
119
212
  findings.push({
@@ -233,7 +326,7 @@ export function findCheckpointTotalMismatches(receipts, checkpoints) {
233
326
  }
234
327
  const inWindow = receiptsInWindow(receipts, cp);
235
328
  const expected = totalsFromReceipts(inWindow);
236
- if (JSON.stringify(expected) !== JSON.stringify(cp.claims.totals)) {
329
+ if (cp.claims.totals !== null && JSON.stringify(expected) !== JSON.stringify(cp.claims.totals)) {
237
330
  findings.push({
238
331
  code: "checkpoint-total-mismatch",
239
332
  id: `epoch-${cp.claims.epoch}`,
@@ -277,8 +370,147 @@ export function findEquivocationFinding(checkpoints) {
277
370
  detail: `epoch ${hit.epoch} has ${hit.hashes.length} distinct checkpoint hashes`,
278
371
  };
279
372
  }
280
- function normalizePem(pem) {
281
- return pem.replace(/\s+/g, "");
373
+ /** A log may publish under more than one key, the same way an issuer may. */
374
+ function inclusionFromPinnedLog(rec, witnessKeyPem) {
375
+ if (witnessKeyPem === undefined) {
376
+ return verifyInclusionReceipt(rec);
377
+ }
378
+ const pems = typeof witnessKeyPem === "string" ? [witnessKeyPem] : witnessKeyPem;
379
+ return pems.some((pem) => verifyInclusionReceipt(rec, pem));
380
+ }
381
+ /**
382
+ * `attestsIssuer` is the second question: the witness pin says which log spoke,
383
+ * and this says whether the statement that log holds was signed by the issuer
384
+ * under audit. Without it a pinned log can carry a body anyone minted into the
385
+ * epoch pool.
386
+ */
387
+ function verifiedWitnessCheckpoints(receipts, witnessKeyPem, attestsIssuer) {
388
+ const out = [];
389
+ for (const rec of receipts) {
390
+ if (!inclusionFromPinnedLog(rec, witnessKeyPem) || !rec.checkpoint) {
391
+ continue;
392
+ }
393
+ if (attestsIssuer && !attestsIssuer(rec.checkpoint.publicKeyPem)) {
394
+ continue;
395
+ }
396
+ if (statementHashOfCheckpoint(rec.checkpoint) !== rec.statementHash) {
397
+ continue;
398
+ }
399
+ if (!verifyCheckpoint(rec.checkpoint)) {
400
+ continue;
401
+ }
402
+ out.push(rec.checkpoint);
403
+ }
404
+ return out;
405
+ }
406
+ function findTransparencyWitness(checkpoints, inclusionReceipts, witnessKeyPem, attestsIssuer) {
407
+ const findings = [];
408
+ const warnings = [];
409
+ // Two different questions, so two different sets.
410
+ //
411
+ // Anchoring only needs the hash: an entry that binds this checkpoint proves it
412
+ // was logged, whoever else can read the body.
413
+ const anchoring = inclusionReceipts.filter((r) => inclusionFromPinnedLog(r, witnessKeyPem));
414
+ const witnessHashes = new Set(anchoring.map((r) => r.statementHash));
415
+ // Accusing an issuer of withholding an epoch needs to know whose epoch it is.
416
+ // A log holds statements from everyone who uses it, and an entry with no body
417
+ // names nobody - stripping the body off a genuine entry is free, and it used
418
+ // to be enough to report an honest issuer for hiding something never theirs.
419
+ const accusing = anchoring.filter((r) => r.checkpoint && (!attestsIssuer || attestsIssuer(r.checkpoint.publicKeyPem)));
420
+ const presentedHashes = new Set(checkpoints.map(statementHashOfCheckpoint));
421
+ for (const cp of checkpoints) {
422
+ const hash = statementHashOfCheckpoint(cp);
423
+ if (!witnessHashes.has(hash)) {
424
+ warnings.push({
425
+ code: "checkpoint-not-anchored",
426
+ id: `epoch-${cp.claims.epoch}`,
427
+ detail: `checkpoint epoch ${cp.claims.epoch} has no inclusion receipt in the configured witness`,
428
+ severity: "warn",
429
+ });
430
+ }
431
+ }
432
+ // Cannot name who logged these, so they are not accusations - but a real
433
+ // withholding goes silent if stripping the body is enough to bury it. Counted
434
+ // rather than listed: entries with no body are free to produce, and one
435
+ // warning each would let an attacker bury the findings under volume.
436
+ const unattributable = anchoring.filter((rec) => !rec.checkpoint && !presentedHashes.has(rec.statementHash));
437
+ if (unattributable.length > 0) {
438
+ warnings.push({
439
+ code: "witness-entry-unattributable",
440
+ id: "witness",
441
+ detail: `the witness holds ${unattributable.length} statement(s) this chain does not present and which carry no body to say whose they are; first is ${unattributable[0].statementHash}`,
442
+ severity: "warn",
443
+ });
444
+ }
445
+ for (const rec of accusing) {
446
+ if (!presentedHashes.has(rec.statementHash)) {
447
+ findings.push({
448
+ code: "checkpoint-withheld",
449
+ id: rec.statementHash,
450
+ detail: `inclusion receipt index ${rec.index} binds statement ${rec.statementHash}, which is not in the presented checkpoint chain`,
451
+ });
452
+ }
453
+ }
454
+ return { findings, warnings };
455
+ }
456
+ /**
457
+ * A countersignature travels beside the issuer signature without being covered
458
+ * by it, so anyone holding an honest receipt can append one of their own and it
459
+ * reads as the payee having approved the payment. Checking it against the key it
460
+ * carries answers a question that answers itself; the payee key has to come from
461
+ * the verifier. Findings go into `findings`; the return value is the warnings.
462
+ */
463
+ function findCountersignFindings(input, findings) {
464
+ const warnings = [];
465
+ const countersigned = input.receipts.filter((r) => r.counterCoseHex);
466
+ for (const r of countersigned) {
467
+ const pinned = input.payeeTrust?.[r.claims.payee];
468
+ if (!verifyCounterSignature(r)) {
469
+ findings.push({
470
+ code: "countersign-bad",
471
+ id: r.claims.nonce,
472
+ detail: `payee countersignature on nonce=${r.claims.nonce} failed verify`,
473
+ });
474
+ continue;
475
+ }
476
+ if (pinned === undefined) {
477
+ continue;
478
+ }
479
+ const carried = r.payeePublicKeyPem;
480
+ if (carried === undefined || !sameSpkiKey(carried, pinned)) {
481
+ findings.push({
482
+ code: "countersign-key-mismatch",
483
+ id: r.claims.nonce,
484
+ detail: `the countersignature on nonce=${r.claims.nonce} is by a key other than the one pinned for payee ${r.claims.payee}, so it is not that payee approving the payment`,
485
+ });
486
+ }
487
+ }
488
+ // Naming a payee key is the verifier saying it expects that payee's word on
489
+ // these payments. Dropping the countersignature would otherwise drop the
490
+ // question with it, so deleting the evidence - or a failed forgery - would
491
+ // read as nothing to answer.
492
+ for (const r of input.receipts) {
493
+ if (isSettled(r) &&
494
+ !r.counterCoseHex &&
495
+ input.payeeTrust?.[r.claims.payee] !== undefined) {
496
+ warnings.push({
497
+ code: "countersign-missing",
498
+ id: r.claims.nonce,
499
+ detail: `a payee key is pinned for ${r.claims.payee} but receipt nonce=${r.claims.nonce} carries no countersignature from them`,
500
+ severity: "warn",
501
+ });
502
+ }
503
+ }
504
+ const unpinned = countersigned.filter((r) => input.payeeTrust?.[r.claims.payee] === undefined);
505
+ if (unpinned.length > 0) {
506
+ warnings.push({
507
+ code: "unauthenticated-countersigner",
508
+ id: "countersigner",
509
+ detail: `${unpinned.length} receipt(s) carry a countersignature checked only against the key travelling with them; without a verifier-supplied payee key that is not evidence the payee approved anything`,
510
+ severity: "warn",
511
+ });
512
+ }
513
+ return warnings;
282
514
  }
283
515
  function settlementKey(s) {
284
516
  return [s.ref, s.amount, s.currency, s.timestampMs].join("\u0000");
@@ -305,6 +537,19 @@ export function audit(input) {
305
537
  });
306
538
  }
307
539
  const signatureVerifies = verifyRailExtract(input.extract);
540
+ // An extract that declares one window and carries rows from outside it has
541
+ // not reported on the period it claims to cover. This holds whether or not
542
+ // a key was pinned, so it is checked before the trust branch.
543
+ for (const row of input.extract.body.settlements) {
544
+ if (row.timestampMs < input.extract.body.windowStartMs ||
545
+ row.timestampMs >= input.extract.body.windowEndMs) {
546
+ findings.push({
547
+ code: "extract-scope-mismatch",
548
+ id: row.ref,
549
+ detail: `settlement ${row.ref} at ${row.timestampMs} is outside the declared window ${input.extract.body.windowStartMs}..${input.extract.body.windowEndMs}`,
550
+ });
551
+ }
552
+ }
308
553
  if (!input.trust) {
309
554
  warnings.push({
310
555
  code: "unauthenticated-extract",
@@ -322,20 +567,33 @@ export function audit(input) {
322
567
  // already verified would fail open on the worse input.
323
568
  const t = input.trust;
324
569
  const body = input.extract.body;
325
- if (!signatureVerifies) {
570
+ const pinnedDer = toSpkiDer(t.publicKeyPem);
571
+ if (pinnedDer === null) {
572
+ // The verifier's own configuration is broken. Saying "mismatch" here
573
+ // would blame the extract for a key we could not read.
326
574
  findings.push({
327
- code: "extract-key-mismatch",
575
+ code: "trust-key-unreadable",
328
576
  id: "extract",
329
- detail: "a rail key was pinned but the extract signature does not verify against the key it carries",
577
+ detail: "the pinned rail key could not be read as a public key; supply PEM or base64 SPKI",
330
578
  });
331
579
  }
332
- else if (normalizePem(input.extract.publicKeyPem) !== normalizePem(t.publicKeyPem)) {
580
+ else if (!signatureVerifies) {
333
581
  findings.push({
334
582
  code: "extract-key-mismatch",
335
583
  id: "extract",
336
- detail: "rail extract is signed by a key other than the pinned rail key",
584
+ detail: "a rail key was pinned but the extract signature does not verify against the key it carries",
337
585
  });
338
586
  }
587
+ else {
588
+ const carriedDer = toSpkiDer(input.extract.publicKeyPem);
589
+ if (carriedDer === null || !carriedDer.equals(pinnedDer)) {
590
+ findings.push({
591
+ code: "extract-key-mismatch",
592
+ id: "extract",
593
+ detail: "rail extract is signed by a key other than the pinned rail key",
594
+ });
595
+ }
596
+ }
339
597
  if (t.accountId !== undefined && body.accountId !== t.accountId) {
340
598
  findings.push({
341
599
  code: "extract-scope-mismatch",
@@ -364,6 +622,18 @@ export function audit(input) {
364
622
  detail: `rail extract ends at ${body.windowEndMs}, before the expected window end ${t.windowEndMs}`,
365
623
  });
366
624
  }
625
+ if (t.windowStartMs === undefined || t.windowEndMs === undefined) {
626
+ // Without a stated period the extract picks its own scope, and an
627
+ // extract that reports on a millisecond balances as easily as one that
628
+ // reports on a month. Pinning the key says who signed; only a stated
629
+ // window says what the signature had to cover.
630
+ warnings.push({
631
+ code: "unstated-audit-window",
632
+ id: "extract",
633
+ detail: "no audit window was stated, so the extract defines the period it reports on; completeness guarantee is conditional",
634
+ severity: "warn",
635
+ });
636
+ }
367
637
  }
368
638
  }
369
639
  else {
@@ -376,27 +646,182 @@ export function audit(input) {
376
646
  severity: "warn",
377
647
  });
378
648
  }
379
- findings.push(...findSettlementMatches(input.receipts, reconciled));
380
- for (const r of input.receipts) {
381
- if (!r.counterCoseHex) {
382
- continue;
649
+ // The rail pin answers who reported the settlements. It says nothing about who
650
+ // was entitled to issue receipts for them, and a receipt verified against the
651
+ // key it carries only proves it is internally consistent. So the receipts that
652
+ // count as coverage are the ones answering to a second root, stated out of band.
653
+ let attested = input.receipts;
654
+ // Null while no issuer key was stated: there is no attested/unattested split
655
+ // to make, and every check falls back to the whole submitted list.
656
+ let attestsIssuer = null;
657
+ // True only when a pin was supplied and at least one key in it could be read.
658
+ let issuerPinUsable = false;
659
+ if (!input.issuerTrust) {
660
+ // Only worth saying when the audit actually leans on an issued object. An
661
+ // audit with no receipts and no checkpoints rests on the extract alone, and
662
+ // warning about a root it never used would cheapen the warning.
663
+ if (input.receipts.length > 0 || input.checkpoints.length > 0) {
664
+ warnings.push({
665
+ code: "unauthenticated-issuer",
666
+ id: "issuer",
667
+ detail: "no verifier-supplied issuer key; receipt and checkpoint signatures prove internal consistency, not that the named issuer produced them. Without one there is no way to tell a receipt from this issuer apart from any other, so every receipt submitted is weighed as one set and the completeness guarantee is conditional",
668
+ severity: "warn",
669
+ });
383
670
  }
384
- if (!verifyCounterSignature(r)) {
671
+ }
672
+ else {
673
+ const { usable: issuerDers, unreadable } = pinnedKeys(input.issuerTrust.publicKeyPem);
674
+ if (unreadable > 0 || issuerDers.length === 0) {
675
+ // The verifier's own configuration is broken. Calling this a mismatch would
676
+ // blame the receipts for a key we could not read.
385
677
  findings.push({
386
- code: "countersign-bad",
387
- id: r.claims.nonce,
388
- detail: `payee countersignature on nonce=${r.claims.nonce} failed verify`,
678
+ code: "trust-key-unreadable",
679
+ id: "issuer",
680
+ detail: issuerDers.length === 0
681
+ ? "no pinned issuer key could be read as a public key, so nothing is attested; supply PEM or base64 SPKI"
682
+ : `${unreadable} of the pinned issuer keys could not be read as a public key; the rest are still in use`,
389
683
  });
390
684
  }
685
+ {
686
+ const attests = (pem) => {
687
+ if (issuerDers.length === 0) {
688
+ // Withholding trust, not handing it out: a pin nobody could read is
689
+ // the one case where falling back to "accept everything" turns a
690
+ // broken setting into a bypass.
691
+ return false;
692
+ }
693
+ const der = toSpkiDer(pem);
694
+ return der !== null && issuerDers.some((pinned) => pinned.equals(der));
695
+ };
696
+ attestsIssuer = attests;
697
+ issuerPinUsable = issuerDers.length > 0;
698
+ // Naming a mismatch when the pin itself could not be read would blame the
699
+ // receipts for the verifier's own broken setting - and every receipt at
700
+ // once. `trust-key-unreadable` above already says what went wrong; nothing
701
+ // is attested, so the settlements come back uncovered on their own.
702
+ const namesMismatches = issuerDers.length > 0;
703
+ // Reported and then set aside: a receipt from another key is evidence about
704
+ // that key, not coverage of the settlement it names. Leaving it in the
705
+ // reconciliation is exactly how a forged receipt silences a naked row.
706
+ // Receipts are free to mint, so a report that lists one finding per rejected
707
+ // receipt can be buried under volume by anyone. Named individually while
708
+ // there are few enough to act on, counted once past that.
709
+ const rejected = namesMismatches
710
+ ? input.receipts.filter((r) => !attests(r.publicKeyPem))
711
+ : [];
712
+ const NAMED_LIMIT = 10;
713
+ if (rejected.length > NAMED_LIMIT) {
714
+ findings.push({
715
+ code: "issuer-key-mismatch",
716
+ id: "receipts",
717
+ detail: `${rejected.length} receipts are signed by a key other than the pinned issuer key, so none of them is coverage for any settlement; first is nonce=${rejected[0].claims.nonce}`,
718
+ });
719
+ }
720
+ else {
721
+ for (const r of rejected) {
722
+ findings.push({
723
+ code: "issuer-key-mismatch",
724
+ id: r.claims.nonce,
725
+ detail: `receipt nonce=${r.claims.nonce} is signed by a key other than the pinned issuer key, so it is not coverage for ${r.claims.x402PaymentRef ?? "any settlement"}`,
726
+ });
727
+ }
728
+ }
729
+ for (const cp of namesMismatches ? input.checkpoints : []) {
730
+ if (!attests(cp.publicKeyPem)) {
731
+ findings.push({
732
+ code: "issuer-key-mismatch",
733
+ id: `epoch-${cp.claims.epoch}`,
734
+ detail: `checkpoint epoch ${cp.claims.epoch} is signed by a key other than the pinned issuer key`,
735
+ });
736
+ }
737
+ }
738
+ attested = input.receipts.filter((r) => attests(r.publicKeyPem));
739
+ }
740
+ }
741
+ // An extract reports on the period it declares. Matching receipts from
742
+ // outside that period against it would call an honest later spend a
743
+ // completeness failure, so they are out of scope for this extract; auditing
744
+ // a longer period means obtaining extracts that cover it.
745
+ const inScope = input.extract
746
+ ? attested.filter((r) => r.claims.timestampMs >= input.extract.body.windowStartMs &&
747
+ r.claims.timestampMs < input.extract.body.windowEndMs)
748
+ : attested;
749
+ // Self-consistency is a question about the receipts this verifier accepts. Run
750
+ // it over everything submitted and an attacker mints a receipt claiming a rail
751
+ // ref the honest issuer already used, and the duplicate lands on the honest
752
+ // set. Where there is no accepted set - no issuer key, or one nothing could be
753
+ // read from - the submitted set is the only thing there is to be consistent
754
+ // about, and its clashes are worth saying out loud.
755
+ // Two questions with two different subjects. What a receipt says about itself
756
+ // is asked of everything submitted; what two receipts say about each other is
757
+ // asked of the set this verifier accepts, or of everything when there is no
758
+ // accepted set to speak of.
759
+ findings.push(...findReceiptDefects(input.receipts));
760
+ // With an issuer key a clash is between receipts the verifier accepts, so it
761
+ // is a failure. Without one nothing distinguishes a submitted receipt from any
762
+ // other, so the same clash cannot be pinned on anyone - said out loud, but not
763
+ // as a verdict against a set the verifier cannot vouch for.
764
+ for (const clash of findReceiptRefClashes(issuerPinUsable ? attested : input.receipts)) {
765
+ if (issuerPinUsable) {
766
+ findings.push(clash);
767
+ }
768
+ else {
769
+ warnings.push({ ...clash, severity: "warn" });
770
+ }
391
771
  }
392
- const chain = findReceiptChainBreak(input.receipts);
772
+ findings.push(...findSettlementMatches(inScope, reconciled));
773
+ // Every check below reasons about what the issuer published. Walking the whole
774
+ // submitted list instead means one receipt from a key the verifier already
775
+ // rejected writes "the checkpoint lied" and "the chain is broken" against an
776
+ // honest issuer - noise that argues for switching the pin off.
777
+ const attestedCheckpoints = attestsIssuer
778
+ ? input.checkpoints.filter((cp) => attestsIssuer(cp.publicKeyPem))
779
+ : input.checkpoints;
780
+ warnings.push(...findCountersignFindings({ receipts: issuerPinUsable ? attested : input.receipts, payeeTrust: input.payeeTrust }, findings));
781
+ const chain = findReceiptChainBreak(attested);
393
782
  if (chain)
394
783
  findings.push(chain);
395
- findings.push(...findCheckpointTotalMismatches(input.receipts, input.checkpoints));
396
- findings.push(...findWindowCoverage(input.receipts, input.checkpoints));
397
- const equiv = findEquivocationFinding(input.checkpoints);
784
+ findings.push(...findCheckpointTotalMismatches(attested, attestedCheckpoints));
785
+ findings.push(...findWindowCoverage(attested, attestedCheckpoints));
786
+ // A witness only adds evidence once the verifier has named the log. Until then
787
+ // its inclusion receipts are a log anyone could have invented, and letting them
788
+ // reach the epoch pool lets an attacker report the honest issuer for publishing
789
+ // two checkpoints of one epoch. The warning says why they were left out.
790
+ const witnessConfigured = Boolean(input.inclusionReceipts && input.witnessTrust);
791
+ const witnessCheckpoints = witnessConfigured
792
+ ? verifiedWitnessCheckpoints(input.inclusionReceipts, input.witnessTrust.publicKeyPem, attestsIssuer)
793
+ : [];
794
+ const equiv = findEquivocationFinding([...attestedCheckpoints, ...witnessCheckpoints]);
398
795
  if (equiv)
399
796
  findings.push(equiv);
797
+ if (input.inclusionReceipts) {
798
+ if (witnessConfigured) {
799
+ const witness = findTransparencyWitness(attestedCheckpoints, input.inclusionReceipts, input.witnessTrust.publicKeyPem, attestsIssuer);
800
+ findings.push(...witness.findings);
801
+ warnings.push(...witness.warnings);
802
+ }
803
+ else {
804
+ warnings.push({
805
+ code: "unauthenticated-witness",
806
+ id: "witness",
807
+ detail: "no verifier-supplied witness key; an inclusion receipt is checked against the key it carries, so it says a log exists rather than that the named log anchored anything, and it was left out of the comparison",
808
+ severity: "warn",
809
+ });
810
+ }
811
+ }
812
+ // A signed redaction is honest but unverifiable: say so, and drop the claim to
813
+ // conditional. Only a checkpoint that verifies gets to make this claim — an
814
+ // unverifiable one has already been reported above.
815
+ for (const cp of attestedCheckpoints) {
816
+ if (cp.claims.totals === null && verifyCheckpoint(cp)) {
817
+ warnings.push({
818
+ code: "checkpoint-totals-redacted",
819
+ id: `epoch-${cp.claims.epoch}`,
820
+ detail: `checkpoint epoch ${cp.claims.epoch} was signed with its totals withheld; totals comparison skipped`,
821
+ severity: "warn",
822
+ });
823
+ }
824
+ }
400
825
  const hard = findings.filter((f) => f.severity !== "warn");
401
826
  const missing = hard.filter((f) => f.code === "settlement-without-receipt");
402
827
  const summary = hard.length === 0
@@ -404,20 +829,34 @@ export function audit(input) {
404
829
  : missing.length > 0
405
830
  ? `audit: ${missing.length} settlement without receipt → FAIL`
406
831
  : `audit: ${hard.length} finding(s) → FAIL`;
407
- // A finding that says the extract itself cannot be trusted also removes the
832
+ // A finding that says the evidence itself cannot be trusted also removes the
408
833
  // unconditional claim; otherwise a report could name a key mismatch and still
409
834
  // describe its own guarantee as unconditional.
410
- const doubtedExtract = hard.some((f) => f.code === "extract-key-mismatch" ||
835
+ const doubtedEvidence = hard.some((f) => f.code === "extract-key-mismatch" ||
836
+ f.code === "trust-key-unreadable" ||
411
837
  f.code === "extract-scope-mismatch" ||
412
- f.code === "extract-settlement-mismatch");
838
+ f.code === "extract-settlement-mismatch" ||
839
+ f.code === "issuer-key-mismatch" ||
840
+ f.code === "countersign-key-mismatch");
413
841
  return {
414
842
  ok: hard.length === 0,
415
843
  findings: hard,
416
844
  warnings,
417
- guarantee: warnings.length === 0 && !doubtedExtract ? "unconditional" : "conditional",
845
+ guarantee: warnings.length === 0 && !doubtedEvidence ? "unconditional" : "conditional",
418
846
  summary,
419
847
  };
420
848
  }
849
+ export function toFindingObject(report, receiptCount = 0) {
850
+ return {
851
+ findingObjectVersion: FINDING_OBJECT_VERSION,
852
+ ok: report.ok,
853
+ guarantee: report.guarantee,
854
+ summary: report.summary,
855
+ receipts: receiptCount,
856
+ findings: report.findings,
857
+ warnings: report.warnings,
858
+ };
859
+ }
421
860
  export function formatAudit(report, receiptCount = 0) {
422
861
  const lines = report.ok
423
862
  ? [`audit: balanced`, `receipts=${receiptCount}`, "findings=0"]
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cedulon/audit",
3
- "version": "0.1.0",
3
+ "version": "0.3.0",
4
4
  "description": "Reconcile a rail extract against the Cedulon receipt chain.",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
@@ -40,8 +40,9 @@
40
40
  "access": "public"
41
41
  },
42
42
  "dependencies": {
43
- "@cedulon/checkpoint": "^0.1.0",
44
- "@cedulon/receipts": "^0.1.0",
45
- "@cedulon/x402-adapter": "^0.1.0"
43
+ "@cedulon/checkpoint": "^0.3.0",
44
+ "@cedulon/cose": "^0.3.0",
45
+ "@cedulon/receipts": "^0.3.0",
46
+ "@cedulon/x402-adapter": "^0.3.0"
46
47
  }
47
48
  }