@cedulon/audit 0.2.0 → 0.3.1

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" | "trust-key-unreadable" | "unstated-audit-window" | "malformed-amount" | "countersign-bad";
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,6 +16,22 @@ 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
36
  code: FindingCode;
18
37
  detail: string;
@@ -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":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,7 +1,60 @@
1
- import { createPublicKey } from "node:crypto";
2
- 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";
3
3
  import { receiptHash, verifyCounterSignature, verifyReceipt } from "@cedulon/receipts";
4
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
+ }
5
58
  function receiptRef(r) {
6
59
  return r.claims.x402PaymentRef;
7
60
  }
@@ -52,10 +105,23 @@ function pushDuplicateRefs(items, findings) {
52
105
  }
53
106
  return dupes;
54
107
  }
55
- 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) {
56
123
  const findings = [];
57
- const settled = receipts.filter(isSettled);
58
- for (const r of settled) {
124
+ for (const r of receipts.filter(isSettled)) {
59
125
  if (receiptRef(r) === null) {
60
126
  findings.push({
61
127
  code: "settled-without-ref",
@@ -64,6 +130,25 @@ export function findSettlementMatches(receipts, settlements) {
64
130
  });
65
131
  }
66
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);
67
152
  const receiptItems = settled
68
153
  .map((r) => ({ ref: receiptRef(r), id: r.claims.nonce, side: "receipt", receipt: r }))
69
154
  .filter((x) => x.ref !== null);
@@ -73,7 +158,9 @@ export function findSettlementMatches(receipts, settlements) {
73
158
  side: "settlement",
74
159
  settlement: s,
75
160
  }));
76
- 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, []);
77
164
  const dupeSettlement = pushDuplicateRefs(settlementItems, findings);
78
165
  const skip = new Set([...dupeReceipt, ...dupeSettlement]);
79
166
  // A ref that repeats is skipped by the ref-keyed match below, so compare the
@@ -239,7 +326,7 @@ export function findCheckpointTotalMismatches(receipts, checkpoints) {
239
326
  }
240
327
  const inWindow = receiptsInWindow(receipts, cp);
241
328
  const expected = totalsFromReceipts(inWindow);
242
- if (JSON.stringify(expected) !== JSON.stringify(cp.claims.totals)) {
329
+ if (cp.claims.totals !== null && JSON.stringify(expected) !== JSON.stringify(cp.claims.totals)) {
243
330
  findings.push({
244
331
  code: "checkpoint-total-mismatch",
245
332
  id: `epoch-${cp.claims.epoch}`,
@@ -283,34 +370,147 @@ export function findEquivocationFinding(checkpoints) {
283
370
  detail: `epoch ${hit.epoch} has ${hit.hashes.length} distinct checkpoint hashes`,
284
371
  };
285
372
  }
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
+ }
286
381
  /**
287
- * A key is bytes, not text. Compare SPKI DER so the same key still matches
288
- * when a rail publishes it in another envelope, and so an unreadable key is
289
- * distinguishable from one that simply differs.
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.
290
386
  */
291
- function toSpkiDer(key) {
292
- const trimmed = key.trim();
293
- const attempts = trimmed.includes("-----BEGIN")
294
- ? [{ key: trimmed, format: "pem" }]
295
- : [
296
- {
297
- key: Buffer.from(trimmed.replace(/\s+/g, ""), "base64"),
298
- format: "der",
299
- type: "spki",
300
- },
301
- ];
302
- for (const attempt of attempts) {
303
- try {
304
- return createPublicKey(attempt).export({
305
- type: "spki",
306
- format: "der",
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",
307
429
  });
308
430
  }
309
- catch {
310
- // fall through to the next shape
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
+ });
311
452
  }
312
453
  }
313
- return null;
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;
314
514
  }
315
515
  function settlementKey(s) {
316
516
  return [s.ref, s.amount, s.currency, s.timestampMs].join("\u0000");
@@ -446,35 +646,182 @@ export function audit(input) {
446
646
  severity: "warn",
447
647
  });
448
648
  }
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
+ });
670
+ }
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.
677
+ findings.push({
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`,
683
+ });
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
+ }
449
741
  // An extract reports on the period it declares. Matching receipts from
450
742
  // outside that period against it would call an honest later spend a
451
743
  // completeness failure, so they are out of scope for this extract; auditing
452
744
  // a longer period means obtaining extracts that cover it.
453
745
  const inScope = input.extract
454
- ? input.receipts.filter((r) => r.claims.timestampMs >= input.extract.body.windowStartMs &&
746
+ ? attested.filter((r) => r.claims.timestampMs >= input.extract.body.windowStartMs &&
455
747
  r.claims.timestampMs < input.extract.body.windowEndMs)
456
- : input.receipts;
457
- findings.push(...findSettlementMatches(inScope, reconciled));
458
- for (const r of input.receipts) {
459
- if (!r.counterCoseHex) {
460
- continue;
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);
461
767
  }
462
- if (!verifyCounterSignature(r)) {
463
- findings.push({
464
- code: "countersign-bad",
465
- id: r.claims.nonce,
466
- detail: `payee countersignature on nonce=${r.claims.nonce} failed verify`,
467
- });
768
+ else {
769
+ warnings.push({ ...clash, severity: "warn" });
468
770
  }
469
771
  }
470
- 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);
471
782
  if (chain)
472
783
  findings.push(chain);
473
- findings.push(...findCheckpointTotalMismatches(input.receipts, input.checkpoints));
474
- findings.push(...findWindowCoverage(input.receipts, input.checkpoints));
475
- 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]);
476
795
  if (equiv)
477
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
+ }
478
825
  const hard = findings.filter((f) => f.severity !== "warn");
479
826
  const missing = hard.filter((f) => f.code === "settlement-without-receipt");
480
827
  const summary = hard.length === 0
@@ -482,21 +829,34 @@ export function audit(input) {
482
829
  : missing.length > 0
483
830
  ? `audit: ${missing.length} settlement without receipt → FAIL`
484
831
  : `audit: ${hard.length} finding(s) → FAIL`;
485
- // 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
486
833
  // unconditional claim; otherwise a report could name a key mismatch and still
487
834
  // describe its own guarantee as unconditional.
488
- const doubtedExtract = hard.some((f) => f.code === "extract-key-mismatch" ||
835
+ const doubtedEvidence = hard.some((f) => f.code === "extract-key-mismatch" ||
489
836
  f.code === "trust-key-unreadable" ||
490
837
  f.code === "extract-scope-mismatch" ||
491
- f.code === "extract-settlement-mismatch");
838
+ f.code === "extract-settlement-mismatch" ||
839
+ f.code === "issuer-key-mismatch" ||
840
+ f.code === "countersign-key-mismatch");
492
841
  return {
493
842
  ok: hard.length === 0,
494
843
  findings: hard,
495
844
  warnings,
496
- guarantee: warnings.length === 0 && !doubtedExtract ? "unconditional" : "conditional",
845
+ guarantee: warnings.length === 0 && !doubtedEvidence ? "unconditional" : "conditional",
497
846
  summary,
498
847
  };
499
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
+ }
500
860
  export function formatAudit(report, receiptCount = 0) {
501
861
  const lines = report.ok
502
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,47 +1,48 @@
1
- {
2
- "name": "@cedulon/audit",
3
- "version": "0.2.0",
4
- "description": "Reconcile a rail extract against the Cedulon receipt chain.",
5
- "license": "Apache-2.0",
6
- "type": "module",
7
- "engines": {
8
- "node": ">=20"
9
- },
10
- "repository": {
11
- "type": "git",
12
- "url": "git+https://github.com/dogrucanemek-alt/cedulon.git",
13
- "directory": "packages/audit"
14
- },
15
- "homepage": "https://github.com/dogrucanemek-alt/cedulon/tree/master/packages/audit",
16
- "bugs": {
17
- "url": "https://github.com/dogrucanemek-alt/cedulon/issues"
18
- },
19
- "keywords": [
20
- "cedulon",
21
- "audit"
22
- ],
23
- "scripts": {
24
- "build": "tsc -p tsconfig.build.json"
25
- },
26
- "main": "./dist/index.js",
27
- "types": "./dist/index.d.ts",
28
- "exports": {
29
- ".": {
30
- "types": "./dist/index.d.ts",
31
- "import": "./dist/index.js"
32
- }
33
- },
34
- "files": [
35
- "dist",
36
- "README.md",
37
- "LICENSE"
38
- ],
39
- "publishConfig": {
40
- "access": "public"
41
- },
42
- "dependencies": {
43
- "@cedulon/checkpoint": "^0.2.0",
44
- "@cedulon/receipts": "^0.2.0",
45
- "@cedulon/x402-adapter": "^0.2.0"
46
- }
47
- }
1
+ {
2
+ "name": "@cedulon/audit",
3
+ "version": "0.3.1",
4
+ "description": "Reconcile a rail extract against the Cedulon receipt chain.",
5
+ "license": "Apache-2.0",
6
+ "type": "module",
7
+ "engines": {
8
+ "node": ">=20"
9
+ },
10
+ "repository": {
11
+ "type": "git",
12
+ "url": "git+https://github.com/dogrucanemek-alt/cedulon.git",
13
+ "directory": "packages/audit"
14
+ },
15
+ "homepage": "https://github.com/dogrucanemek-alt/cedulon/tree/master/packages/audit",
16
+ "bugs": {
17
+ "url": "https://github.com/dogrucanemek-alt/cedulon/issues"
18
+ },
19
+ "keywords": [
20
+ "cedulon",
21
+ "audit"
22
+ ],
23
+ "scripts": {
24
+ "build": "tsc -p tsconfig.build.json"
25
+ },
26
+ "main": "./dist/index.js",
27
+ "types": "./dist/index.d.ts",
28
+ "exports": {
29
+ ".": {
30
+ "types": "./dist/index.d.ts",
31
+ "import": "./dist/index.js"
32
+ }
33
+ },
34
+ "files": [
35
+ "dist",
36
+ "README.md",
37
+ "LICENSE"
38
+ ],
39
+ "publishConfig": {
40
+ "access": "public"
41
+ },
42
+ "dependencies": {
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"
47
+ }
48
+ }