@openauditmodel/cli 0.2.1 → 0.4.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/README.md +75 -9
- package/dist/conformance/src/cli.js +149 -10
- package/dist/conformance/src/cli.js.map +1 -1
- package/dist/conformance/src/integrity/canonicalize.d.ts +6 -2
- package/dist/conformance/src/integrity/canonicalize.js +7 -2
- package/dist/conformance/src/integrity/canonicalize.js.map +1 -1
- package/dist/conformance/src/integrity/verify-event.d.ts +4 -3
- package/dist/conformance/src/integrity/verify-event.js +25 -6
- package/dist/conformance/src/integrity/verify-event.js.map +1 -1
- package/dist/conformance/src/privacy/size-analysis.js +3 -1
- package/dist/conformance/src/privacy/size-analysis.js.map +1 -1
- package/dist/conformance/src/privacy/token-patterns.js +17 -2
- package/dist/conformance/src/privacy/token-patterns.js.map +1 -1
- package/dist/conformance/src/privacy/types.d.ts +19 -0
- package/dist/conformance/src/privacy/types.js +8 -0
- package/dist/conformance/src/privacy/types.js.map +1 -1
- package/dist/conformance/src/profiles/coverage.d.ts +62 -0
- package/dist/conformance/src/profiles/coverage.js +114 -0
- package/dist/conformance/src/profiles/coverage.js.map +1 -0
- package/package.json +15 -2
- package/profiles/README.md +42 -0
- package/profiles/api-and-integration-management/0.1/profile.json +258 -0
- package/profiles/backup-and-recovery/0.1/profile.json +178 -0
- package/profiles/customer-and-account-management/0.1/profile.json +237 -0
- package/profiles/deployment-and-change-management/0.1/profile.json +298 -0
- package/profiles/document-management/0.1/profile.json +170 -0
- package/profiles/financial-transaction-management/0.1/profile.json +247 -0
- package/profiles/identity-and-access-management/0.1/profile.json +120 -0
- package/profiles/incident-management/0.1/profile.json +256 -0
- package/profiles/incident-management/0.2/profile.json +287 -0
- package/profiles/incident-management/README.md +39 -21
- package/profiles/incident-management/profile.json +37 -6
- package/profiles/message-broker-management/0.1/profile.json +399 -0
- package/profiles/secrets-and-key-management/0.1/profile.json +219 -0
- package/semantic-conventions/README.md +15 -10
- package/semantic-conventions/backup-and-recovery.md +124 -0
- package/semantic-conventions/customer-and-account.md +133 -0
- package/semantic-conventions/financial-transactions.md +128 -0
- package/semantic-conventions/message-brokers.md +128 -0
- package/semantic-conventions/secrets-and-keys.md +132 -0
- package/specification/integrity.md +8 -3
package/README.md
CHANGED
|
@@ -12,15 +12,19 @@
|
|
|
12
12
|
| | |
|
|
13
13
|
| ------------------------- | ---------------------------------------------------------------- |
|
|
14
14
|
| **Specification version** | 0.1 |
|
|
15
|
+
| **Tooling release** | 0.4.0 — the CLI and MCP server, versioned in `package.json` |
|
|
15
16
|
| **Project status** | **Experimental** |
|
|
16
17
|
| **Production readiness** | **Not production-ready** |
|
|
17
18
|
| **Compliance** | **No compliance guarantee** |
|
|
18
19
|
| **Canonical schema** | `https://openauditmodel.org/schemas/audit-event/0.1/schema.json` |
|
|
19
20
|
| **License** | Apache License 2.0 |
|
|
20
21
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
22
|
+
The two versions move independently: tooling releases ship fixes and commands without touching the
|
|
23
|
+
model, and the specification version changes only when the schema or a normative document changes
|
|
24
|
+
meaning. Every release note states both. Version 0.1 is an experimental specification. Field names,
|
|
25
|
+
constraints, vocabularies and the compatibility strategy may all change. Nothing here constitutes
|
|
26
|
+
legal advice, and conformance to this specification is not compliance with any law, regulation,
|
|
27
|
+
standard or contract.
|
|
24
28
|
|
|
25
29
|
---
|
|
26
30
|
|
|
@@ -99,6 +103,10 @@ The same contract across every command, so a CI job can branch on it:
|
|
|
99
103
|
The linter reads the locations the specification defines on an audit event; point it at an
|
|
100
104
|
arbitrary application log and it has nowhere to look. It reports that plainly rather than
|
|
101
105
|
reporting `clean`.
|
|
106
|
+
- `verify-chain` returns it when **no event could be assigned to a chain**, so no chain was
|
|
107
|
+
checked. The per-event findings name why — most commonly a missing `integrity.chainId`,
|
|
108
|
+
`integrity.hash` or `sequence`, or a schema-invalid event. A set of events with no verifiable
|
|
109
|
+
chain is not a broken chain; it is a set nothing was proven about.
|
|
102
110
|
|
|
103
111
|
```bash
|
|
104
112
|
# conforming → 0 the profile's rules were checked and passed
|
|
@@ -316,6 +324,7 @@ examples/integrity/ generated tamper-evidence fixtures, valid and invalid
|
|
|
316
324
|
examples/privacy/ clean and finding fixtures for the privacy linter
|
|
317
325
|
examples/profiles/ conforming, violating and out-of-scope profile fixtures
|
|
318
326
|
conformance/ the `auditmodel` CLI and its test suite
|
|
327
|
+
conformance-kit/ every fixture's expected verdict, as data, for any language
|
|
319
328
|
mcp/ the remote MCP server, distributed as a container image
|
|
320
329
|
deploy/ Docker Compose and reverse-proxy examples
|
|
321
330
|
decisions/ 12 architecture decision records
|
|
@@ -341,7 +350,6 @@ All of it. Specifically, expect these to change:
|
|
|
341
350
|
ones.
|
|
342
351
|
- **Profiles.** Ten are implemented and enforceable, but none has production adoption evidence yet:
|
|
343
352
|
their requirements are reasoned, not validated against real deployments.
|
|
344
|
-
- **Planned commands.** `check-coverage` is documented as future work and does not exist.
|
|
345
353
|
- **The profile rule vocabulary.** Six capabilities and one conditional operator. Profile inheritance,
|
|
346
354
|
composition and multi-profile checking are not implemented.
|
|
347
355
|
- **Privacy rule thresholds and vocabularies.** Hard-coded in v0.1, with no configuration and no
|
|
@@ -462,9 +470,11 @@ is not support, and an event declaring anything else is reported as unverifiable
|
|
|
462
470
|
<path>`, a PEM-encoded Ed25519 public key — `ECDSA-P256-SHA256` and `RSA-PSS-SHA256` are
|
|
463
471
|
schema-recommended but not yet implemented. It verifies over the same digest input as the hash, so a
|
|
464
472
|
signed chain is exactly as tamper-evident as a hashed one. Without the flag, a declared signature is
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
473
|
+
reported as present but not checked — never silently passed over — and an algorithm this verifier
|
|
474
|
+
does not implement fails verification whether or not a key is supplied. A signature currently
|
|
475
|
+
requires an accompanying `hash` to be checked at all. There is no key registry: `keyId` is never
|
|
476
|
+
dereferenced, and a verifying party supplies the key it already trusts. See
|
|
477
|
+
[ADR 0012](decisions/0012-ed25519-signature-verification.md).
|
|
468
478
|
|
|
469
479
|
```bash
|
|
470
480
|
auditmodel verify-integrity examples/integrity/valid/signed-event-ed25519.json \
|
|
@@ -530,8 +540,9 @@ instrumentation can validate, privacy-lint and profile-check an event without cl
|
|
|
530
540
|
claude mcp add --transport http openauditmodel https://mcp.openauditmodel.org/mcp
|
|
531
541
|
```
|
|
532
542
|
|
|
533
|
-
|
|
534
|
-
`check_profile`, `generate_event_template`, `get_event_guidance` — three prompts,
|
|
543
|
+
Eight tools — `validate_event`, `verify_integrity`, `verify_chain`, `lint_privacy`,
|
|
544
|
+
`check_profile`, `check_coverage`, `generate_event_template`, `get_event_guidance` — three prompts,
|
|
545
|
+
and thirty-four
|
|
535
546
|
read-only resources covering the specification, both schemas, the semantic conventions and the IAM
|
|
536
547
|
profile.
|
|
537
548
|
|
|
@@ -648,6 +659,61 @@ required by test to pass both.
|
|
|
648
659
|
See [profiles/README.md](profiles/README.md), [ADR 0005](decisions/0005-core-and-profile-separation.md)
|
|
649
660
|
and [ADR 0008](decisions/0008-declarative-profile-conformance.md).
|
|
650
661
|
|
|
662
|
+
### Checking an implementation in another language
|
|
663
|
+
|
|
664
|
+
[ADR 0001](decisions/0001-specification-first.md) promises that "an implementation in any language can
|
|
665
|
+
be checked against the same fixtures". [conformance-kit/manifest.json](conformance-kit/manifest.json)
|
|
666
|
+
is what makes that actionable: for all 320 published fixtures and 5 chains it records the verdict each
|
|
667
|
+
engine returns — rule identifiers, JSON Pointers, statuses, severities and finding kinds.
|
|
668
|
+
|
|
669
|
+
Human-readable messages are deliberately absent. An implementation that words an error differently is
|
|
670
|
+
not wrong, and a kit that compared prose would fail every translation.
|
|
671
|
+
|
|
672
|
+
**The kit confers nothing.** No badge, no "compatible" status, no listing. An implementation that
|
|
673
|
+
reproduces every verdict has demonstrated that it answers the same as the reference implementation on
|
|
674
|
+
the cases this project chose to publish — which is worth having, and is not a claim about the
|
|
675
|
+
implementation in general. See [conformance-kit/README.md](conformance-kit/README.md).
|
|
676
|
+
|
|
677
|
+
### How much of a profile is my instrumentation reaching?
|
|
678
|
+
|
|
679
|
+
`check-profile` answers "does this event conform?". That is the second question. The first is whether
|
|
680
|
+
the profile reaches your events at all, and a summary line that counts only failures cannot tell you:
|
|
681
|
+
an export with no violations and an export the profile never governed look identical.
|
|
682
|
+
|
|
683
|
+
```bash
|
|
684
|
+
auditmodel check-coverage ./audit-export.jsonl --profile incident-management
|
|
685
|
+
```
|
|
686
|
+
|
|
687
|
+
```text
|
|
688
|
+
204 events checked: 0 conforming, 15 with violations, 189 not applicable, 0 core-invalid
|
|
689
|
+
|
|
690
|
+
rules: 15 in the profile, 6 selected, 6 applied
|
|
691
|
+
INC-CORE-001 error selected 15 applied 15 failed 15
|
|
692
|
+
...
|
|
693
|
+
never selected (9): INC-STATE-002, INC-ASSIGN-001, INC-CLOSE-001, ...
|
|
694
|
+
|
|
695
|
+
event names: 30 distinct, 2 governed, 28 ungoverned
|
|
696
|
+
```
|
|
697
|
+
|
|
698
|
+
**It counts events, not obligations.** "6 of 15 rules selected" describes this event set. It is not a
|
|
699
|
+
percentage of conformance, a maturity score or a grade, and a low number is the normal state of a
|
|
700
|
+
narrow export rather than a defect. There is no threshold and no target, because a threshold would be
|
|
701
|
+
policy and this is a measurement.
|
|
702
|
+
|
|
703
|
+
Two lines in that report carry most of its value:
|
|
704
|
+
|
|
705
|
+
- **The ungoverned names.** They are what tell a producer that its vocabulary and the profile's have
|
|
706
|
+
not met. No per-event verdict shows this, because every one of those events is individually
|
|
707
|
+
`not-applicable` and individually unremarkable.
|
|
708
|
+
- **Selected but never applied.** A rule with a condition is selected by an event's name and then
|
|
709
|
+
contributes nothing, because the condition did not hold. A profile requiring an approval _when the
|
|
710
|
+
producer marks the closure as needing one_ is selected on every closure and applied on none against
|
|
711
|
+
a producer that never writes the flag. Nothing fails and nothing is checked; only this line says so.
|
|
712
|
+
|
|
713
|
+
**It never exits `1`.** Coverage makes no pass or fail claim — `check-profile` is the command that
|
|
714
|
+
judges. It exits `0` when the profile governed at least one event, `3` when it governed none, and `2`
|
|
715
|
+
when it could not run.
|
|
716
|
+
|
|
651
717
|
## Legal and compliance limitations
|
|
652
718
|
|
|
653
719
|
Read this section before citing OpenAuditModel in any compliance context.
|
|
@@ -14,6 +14,7 @@ import { summarise } from "./privacy/types.js";
|
|
|
14
14
|
import { availableProfiles, loadProfile } from "./profiles/load-profile.js";
|
|
15
15
|
import { checkProfile } from "./profiles/check-profile.js";
|
|
16
16
|
import { summariseProfileResults } from "./profiles/types.js";
|
|
17
|
+
import { summariseCoverage } from "./profiles/coverage.js";
|
|
17
18
|
export const EXIT_OK = 0;
|
|
18
19
|
export const EXIT_INVALID = 1;
|
|
19
20
|
export const EXIT_ERROR = 2;
|
|
@@ -33,8 +34,19 @@ export const EXIT_NO_VERDICT = 3;
|
|
|
33
34
|
/** Retained name for the `check-profile` reading of {@link EXIT_NO_VERDICT}. */
|
|
34
35
|
export const EXIT_NOT_APPLICABLE = EXIT_NO_VERDICT;
|
|
35
36
|
/** Commands that are specified as future work and deliberately not implemented in v0.1. */
|
|
36
|
-
const PLANNED_COMMANDS = new Set([
|
|
37
|
+
const PLANNED_COMMANDS = new Set([]);
|
|
37
38
|
const OUTPUT_FORMATS = new Set(["text", "json"]);
|
|
39
|
+
/** Every implemented command, for diagnosing flags before dispatch. */
|
|
40
|
+
const IMPLEMENTED_COMMANDS = new Set([
|
|
41
|
+
"validate",
|
|
42
|
+
"verify-integrity",
|
|
43
|
+
"verify-chain",
|
|
44
|
+
"lint-privacy",
|
|
45
|
+
"check-profile",
|
|
46
|
+
"check-coverage",
|
|
47
|
+
]);
|
|
48
|
+
/** The commands --format applies to; every other implemented command refuses the flag. */
|
|
49
|
+
const FORMAT_COMMANDS = new Set(["lint-privacy", "check-profile", "check-coverage"]);
|
|
38
50
|
const USAGE = `auditmodel — OpenAuditModel conformance tooling (specification ${SPEC_VERSION}, experimental)
|
|
39
51
|
|
|
40
52
|
Usage:
|
|
@@ -43,6 +55,7 @@ Usage:
|
|
|
43
55
|
auditmodel verify-chain <path...> Verify previous-hash chains across a set of events
|
|
44
56
|
auditmodel lint-privacy <path...> Report suspected privacy and secret-exposure risks
|
|
45
57
|
auditmodel check-profile <path...> Check events against a domain profile
|
|
58
|
+
auditmodel check-coverage <path...> Report how much of a profile a set of events reaches
|
|
46
59
|
auditmodel --help Show this help
|
|
47
60
|
auditmodel --version Show the tool version
|
|
48
61
|
|
|
@@ -52,11 +65,15 @@ those files.
|
|
|
52
65
|
|
|
53
66
|
Options:
|
|
54
67
|
-q, --quiet Only report failures
|
|
55
|
-
--format <text|json> Output format for lint-privacy
|
|
56
|
-
|
|
68
|
+
--format <text|json> Output format for lint-privacy, check-profile and
|
|
69
|
+
check-coverage
|
|
70
|
+
--profile <name> Profile to check against (check-profile,
|
|
71
|
+
check-coverage)
|
|
57
72
|
--public-key <path> PEM public key to verify integrity.signature against
|
|
58
73
|
(verify-integrity, verify-chain). Ed25519 only in v0.1.
|
|
59
|
-
Without it, a declared signature is not
|
|
74
|
+
Without it, a declared signature is reported but not
|
|
75
|
+
checked; an algorithm this verifier does not implement
|
|
76
|
+
fails verification either way.
|
|
60
77
|
|
|
61
78
|
Exit codes:
|
|
62
79
|
0 a verdict was produced and it passed
|
|
@@ -66,6 +83,14 @@ Exit codes:
|
|
|
66
83
|
3 no verdict was produced, so nothing was approved:
|
|
67
84
|
check-profile no checked event is governed by the profile
|
|
68
85
|
lint-privacy the input is not an audit event and was NOT scanned
|
|
86
|
+
verify-chain no event could be assigned to a chain, so no chain
|
|
87
|
+
was checked
|
|
88
|
+
check-coverage no event in the set is governed by the profile, so the
|
|
89
|
+
profile reached nothing
|
|
90
|
+
|
|
91
|
+
check-coverage never exits 1. It reports what a profile reached; it makes no
|
|
92
|
+
pass or fail claim, and it counts events rather than obligations. "4 of 15 rules
|
|
93
|
+
selected" describes this event set, and is not a score, a percentage or a grade.
|
|
69
94
|
|
|
70
95
|
Verification is tamper-evident, not tamper-proof: it detects modification of the
|
|
71
96
|
events supplied to it. It cannot prove that events were never deleted, and it
|
|
@@ -80,8 +105,6 @@ A profile only ever adds requirements to the core model. Profile conformance is
|
|
|
80
105
|
not regulatory or legal compliance, and an event the profile does not govern is
|
|
81
106
|
reported as not-applicable rather than as conforming.
|
|
82
107
|
|
|
83
|
-
Planned commands (not implemented in v0.1):
|
|
84
|
-
check-coverage
|
|
85
108
|
`;
|
|
86
109
|
function toolVersion(schemaPath) {
|
|
87
110
|
// <root>/schemas/v0.1/audit-event.schema.json -> <root>/package.json
|
|
@@ -285,9 +308,14 @@ function runVerifyChain(inputs, quiet, publicKey) {
|
|
|
285
308
|
if (loaded.failures.length > 0) {
|
|
286
309
|
return EXIT_ERROR;
|
|
287
310
|
}
|
|
288
|
-
if (report.chains.length === 0
|
|
289
|
-
|
|
290
|
-
|
|
311
|
+
if (report.chains.length === 0) {
|
|
312
|
+
// No chain was evaluated, so there is nothing to pass or fail. Reporting
|
|
313
|
+
// this as a failed verdict would make "nothing was checked" indistinguishable
|
|
314
|
+
// from "a chain was checked and is broken". The per-event findings above
|
|
315
|
+
// name why each event could not join a chain — a missing chainId, a missing
|
|
316
|
+
// sequence, or a schema-invalid event.
|
|
317
|
+
process.stderr.write("auditmodel: no chain was verified: no event could be assigned to a chain (the findings above name why)\n");
|
|
318
|
+
return EXIT_NO_VERDICT;
|
|
291
319
|
}
|
|
292
320
|
return report.intact ? EXIT_OK : EXIT_INVALID;
|
|
293
321
|
}
|
|
@@ -358,6 +386,15 @@ function runLintPrivacy(inputs, quiet, format) {
|
|
|
358
386
|
const { critical, high, medium, low, info } = summary.bySeverity;
|
|
359
387
|
const findingNoun = summary.findings === 1 ? "finding" : "findings";
|
|
360
388
|
write(`${summary.findings} privacy ${findingNoun}: ${critical} critical, ${high} high, ${medium} medium, ${low} low, ${info} info\n`);
|
|
389
|
+
// Severity says how bad one finding would be. Category says what kind of
|
|
390
|
+
// mistake produced it, which is what an instrumentation fix is organised
|
|
391
|
+
// around — and fifty findings in one category is a different afternoon from
|
|
392
|
+
// fifty spread across nine.
|
|
393
|
+
if (!quiet && summary.byCategory.length > 0) {
|
|
394
|
+
write(`by category: ${summary.byCategory
|
|
395
|
+
.map((entry) => `${entry.category} ${entry.findings}`)
|
|
396
|
+
.join(", ")}\n`);
|
|
397
|
+
}
|
|
361
398
|
if (summary.schemaInvalid > 0) {
|
|
362
399
|
const noun = summary.schemaInvalid === 1 ? "input" : "inputs";
|
|
363
400
|
write(`\nPrivacy evaluation was not completed for ${summary.schemaInvalid} ${noun}: not a valid OpenAuditModel event. Those inputs were NOT scanned, and are not reported as clean.\n`);
|
|
@@ -458,6 +495,92 @@ function runCheckProfile(inputs, quiet, format, profileName) {
|
|
|
458
495
|
// not-applicable events is a pass.
|
|
459
496
|
return summary.conforming === 0 && summary.notApplicable > 0 ? EXIT_NOT_APPLICABLE : EXIT_OK;
|
|
460
497
|
}
|
|
498
|
+
/** Longest ungoverned-name list printed in text mode before it is summarised. */
|
|
499
|
+
const COVERAGE_NAME_LIMIT = 20;
|
|
500
|
+
function runCheckCoverage(inputs, quiet, format, profileName) {
|
|
501
|
+
if (profileName === undefined || profileName === "") {
|
|
502
|
+
process.stderr.write(`auditmodel: check-coverage requires --profile <name>; available profiles: ${availableProfiles().join(", ")}\n`);
|
|
503
|
+
return EXIT_ERROR;
|
|
504
|
+
}
|
|
505
|
+
const loaded = loadProfile(profileName);
|
|
506
|
+
if (!loaded.ok) {
|
|
507
|
+
process.stderr.write(`auditmodel: ${loaded.error}\n`);
|
|
508
|
+
for (const issue of loaded.issues ?? []) {
|
|
509
|
+
process.stderr.write(` ${issue}\n`);
|
|
510
|
+
}
|
|
511
|
+
return EXIT_ERROR;
|
|
512
|
+
}
|
|
513
|
+
const input = loadInput(inputs, "check-coverage", quiet || format === "json");
|
|
514
|
+
if (typeof input === "number") {
|
|
515
|
+
return input;
|
|
516
|
+
}
|
|
517
|
+
const { profile } = loaded;
|
|
518
|
+
const events = input.documents.map((document) => document.event);
|
|
519
|
+
const results = input.documents.map((document) => checkProfile(document.event, displayLabel(document), profile, input.validator));
|
|
520
|
+
const coverage = summariseCoverage(events, results, profile);
|
|
521
|
+
if (format === "json") {
|
|
522
|
+
write(`${JSON.stringify({
|
|
523
|
+
tool: "auditmodel check-coverage",
|
|
524
|
+
specVersion: SPEC_VERSION,
|
|
525
|
+
schemaId: input.validator.schemaId,
|
|
526
|
+
coverage,
|
|
527
|
+
unreadable: input.failures.map((failure) => ({
|
|
528
|
+
file: displayPath(failure.file),
|
|
529
|
+
error: failure.error,
|
|
530
|
+
})),
|
|
531
|
+
}, null, 2)}\n`);
|
|
532
|
+
}
|
|
533
|
+
else {
|
|
534
|
+
reportLoadFailures(input.failures);
|
|
535
|
+
write(`profile: ${profile.name} ${profile.version} (${profile.status})\n\n`);
|
|
536
|
+
const summary = coverage.events;
|
|
537
|
+
const noun = summary.events === 1 ? "event" : "events";
|
|
538
|
+
write(`${summary.events} ${noun} checked: ${summary.conforming} conforming, ${summary.violations} with violations, ${summary.notApplicable} not applicable, ${summary.coreInvalid} core-invalid, ${input.failures.length} unreadable\n\n`);
|
|
539
|
+
write(`rules: ${coverage.rules.total} in the profile, ${coverage.rules.selected} selected, ${coverage.rules.applied} applied\n`);
|
|
540
|
+
if (!quiet) {
|
|
541
|
+
for (const rule of coverage.perRule) {
|
|
542
|
+
if (rule.selected === 0) {
|
|
543
|
+
continue;
|
|
544
|
+
}
|
|
545
|
+
write(` ${rule.ruleId.padEnd(18)}${rule.severity.padEnd(9)}selected ${String(rule.selected).padStart(5)} applied ${String(rule.applied).padStart(5)} failed ${String(rule.failed).padStart(5)}\n`);
|
|
546
|
+
}
|
|
547
|
+
if (coverage.rules.neverSelected.length > 0) {
|
|
548
|
+
write(` never selected (${coverage.rules.neverSelected.length}): ${coverage.rules.neverSelected.join(", ")}\n`);
|
|
549
|
+
}
|
|
550
|
+
}
|
|
551
|
+
// The quiet half of the report, and the half worth reading: a rule that was
|
|
552
|
+
// selected and never applied looked enforced and enforced nothing.
|
|
553
|
+
if (coverage.rules.selectedButNeverApplied.length > 0) {
|
|
554
|
+
write(` selected but never applied (${coverage.rules.selectedButNeverApplied.length}): ${coverage.rules.selectedButNeverApplied.join(", ")}\n`);
|
|
555
|
+
write(" a condition on these rules never held, so they contributed no requirement\n");
|
|
556
|
+
}
|
|
557
|
+
write(`\nevent names: ${coverage.nameTotals.distinct} distinct, ${coverage.nameTotals.governed} governed, ${coverage.nameTotals.ungoverned} ungoverned\n`);
|
|
558
|
+
if (!quiet) {
|
|
559
|
+
for (const kind of ["governed", "ungoverned"]) {
|
|
560
|
+
const entries = coverage.names.filter((entry) => entry.governed === (kind === "governed"));
|
|
561
|
+
if (entries.length === 0) {
|
|
562
|
+
continue;
|
|
563
|
+
}
|
|
564
|
+
write(` ${kind}\n`);
|
|
565
|
+
for (const entry of entries.slice(0, COVERAGE_NAME_LIMIT)) {
|
|
566
|
+
write(` ${String(entry.events).padStart(7)} ${entry.name}\n`);
|
|
567
|
+
}
|
|
568
|
+
if (entries.length > COVERAGE_NAME_LIMIT) {
|
|
569
|
+
write(` and ${entries.length - COVERAGE_NAME_LIMIT} more\n`);
|
|
570
|
+
}
|
|
571
|
+
}
|
|
572
|
+
}
|
|
573
|
+
if (coverage.nameTotals.governed === 0) {
|
|
574
|
+
write("\nthis profile governs no event in this set, so it checked nothing\n");
|
|
575
|
+
}
|
|
576
|
+
}
|
|
577
|
+
if (input.failures.length > 0) {
|
|
578
|
+
return EXIT_ERROR;
|
|
579
|
+
}
|
|
580
|
+
// Never EXIT_INVALID: coverage reports reach, and makes no pass or fail claim.
|
|
581
|
+
// `check-profile` is the command that judges.
|
|
582
|
+
return coverage.nameTotals.governed === 0 ? EXIT_NO_VERDICT : EXIT_OK;
|
|
583
|
+
}
|
|
461
584
|
export function run(argv) {
|
|
462
585
|
let parsed;
|
|
463
586
|
try {
|
|
@@ -469,7 +592,10 @@ export function run(argv) {
|
|
|
469
592
|
help: { type: "boolean", short: "h", default: false },
|
|
470
593
|
version: { type: "boolean", default: false },
|
|
471
594
|
quiet: { type: "boolean", short: "q", default: false },
|
|
472
|
-
|
|
595
|
+
// No default here: "was --format passed at all" must stay observable,
|
|
596
|
+
// because commands that do not support it refuse it. The textual
|
|
597
|
+
// default is applied where the value is read.
|
|
598
|
+
format: { type: "string" },
|
|
473
599
|
profile: { type: "string" },
|
|
474
600
|
"public-key": { type: "string" },
|
|
475
601
|
},
|
|
@@ -498,6 +624,16 @@ export function run(argv) {
|
|
|
498
624
|
process.stderr.write(`auditmodel: unknown output format "${format}"; expected ${[...OUTPUT_FORMATS].join(" or ")}\n`);
|
|
499
625
|
return EXIT_ERROR;
|
|
500
626
|
}
|
|
627
|
+
// --format is honest: a command that would ignore it refuses it instead.
|
|
628
|
+
// Accepting the flag and silently emitting text taught a CI author that
|
|
629
|
+
// their pipeline was consuming JSON when it never was. Unknown and planned
|
|
630
|
+
// commands fall through to their own diagnosis, which is the useful one.
|
|
631
|
+
if (typeof values.format === "string" &&
|
|
632
|
+
IMPLEMENTED_COMMANDS.has(command) &&
|
|
633
|
+
!FORMAT_COMMANDS.has(command)) {
|
|
634
|
+
process.stderr.write(`auditmodel: --format is not supported by "${command}"; it applies to ${[...FORMAT_COMMANDS].join(" and ")}\n`);
|
|
635
|
+
return EXIT_ERROR;
|
|
636
|
+
}
|
|
501
637
|
let publicKey;
|
|
502
638
|
if (typeof values["public-key"] === "string" &&
|
|
503
639
|
(command === "verify-integrity" || command === "verify-chain")) {
|
|
@@ -533,6 +669,9 @@ export function run(argv) {
|
|
|
533
669
|
if (command === "check-profile") {
|
|
534
670
|
return runCheckProfile(rest, quiet, format, typeof values.profile === "string" ? values.profile : undefined);
|
|
535
671
|
}
|
|
672
|
+
if (command === "check-coverage") {
|
|
673
|
+
return runCheckCoverage(rest, quiet, format, typeof values.profile === "string" ? values.profile : undefined);
|
|
674
|
+
}
|
|
536
675
|
if (PLANNED_COMMANDS.has(command)) {
|
|
537
676
|
process.stderr.write(`auditmodel: "${command}" is planned for a future specification version and is not implemented in v${SPEC_VERSION}\n`);
|
|
538
677
|
return EXIT_ERROR;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../../conformance/src/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../../conformance/src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,8 +18,12 @@ export declare class CanonicalizationError extends Error {
|
|
|
18
18
|
export declare function assertJsonValue(value: unknown, pointer?: string, depth?: number): void;
|
|
19
19
|
/** Returns the RFC 8785 canonical form of a JSON value. */
|
|
20
20
|
export declare function canonicalize(value: unknown): string;
|
|
21
|
-
/**
|
|
22
|
-
|
|
21
|
+
/**
|
|
22
|
+
* Returns the UTF-8 encoding of the RFC 8785 canonical form. `Uint8Array`
|
|
23
|
+
* rather than Node's `Buffer`, so the module runs identically in a browser
|
|
24
|
+
* bundle; every Node crypto API this project feeds it to accepts either.
|
|
25
|
+
*/
|
|
26
|
+
export declare function canonicalBytes(value: unknown): Uint8Array;
|
|
23
27
|
/** True when this verifier implements the declared canonicalization. */
|
|
24
28
|
export declare function isSupportedCanonicalization(identifier: string): boolean;
|
|
25
29
|
export { CANONICALIZATION_RFC8785 };
|
|
@@ -88,9 +88,14 @@ export function canonicalize(value) {
|
|
|
88
88
|
}
|
|
89
89
|
return canonical;
|
|
90
90
|
}
|
|
91
|
-
|
|
91
|
+
const encoder = new TextEncoder();
|
|
92
|
+
/**
|
|
93
|
+
* Returns the UTF-8 encoding of the RFC 8785 canonical form. `Uint8Array`
|
|
94
|
+
* rather than Node's `Buffer`, so the module runs identically in a browser
|
|
95
|
+
* bundle; every Node crypto API this project feeds it to accepts either.
|
|
96
|
+
*/
|
|
92
97
|
export function canonicalBytes(value) {
|
|
93
|
-
return
|
|
98
|
+
return encoder.encode(canonicalize(value));
|
|
94
99
|
}
|
|
95
100
|
/** True when this verifier implements the declared canonicalization. */
|
|
96
101
|
export function isSupportedCanonicalization(identifier) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"canonicalize.js","sourceRoot":"","sources":["../../../../conformance/src/integrity/canonicalize.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"canonicalize.js","sourceRoot":"","sources":["../../../../conformance/src/integrity/canonicalize.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,9 +13,10 @@ export interface VerifyEventOptions {
|
|
|
13
13
|
readonly validateSchema?: boolean;
|
|
14
14
|
/**
|
|
15
15
|
* Key to verify `integrity.signature` against, when present. Without it, a
|
|
16
|
-
* declared signature
|
|
17
|
-
*
|
|
18
|
-
*
|
|
16
|
+
* declared signature in an implemented algorithm is reported as declared
|
|
17
|
+
* but not checked — the verdict rests on the hash alone — and a declared
|
|
18
|
+
* signature in an unimplemented algorithm fails verification either way.
|
|
19
|
+
* v0.1 defines no key registry, so there is no key to try by default.
|
|
19
20
|
*/
|
|
20
21
|
readonly publicKey?: KeyObject | undefined;
|
|
21
22
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { CanonicalizationError, isSupportedCanonicalization } from "./canonicalize.js";
|
|
2
2
|
import { calculateDigest, digestByteLength, digestsEqual, isHexDigest, isSupportedHashAlgorithm, } from "./digest.js";
|
|
3
|
-
import { verifyEventSignature } from "./signature.js";
|
|
3
|
+
import { isSupportedSignatureAlgorithm, verifyEventSignature } from "./signature.js";
|
|
4
4
|
import { SUPPORTED_CANONICALIZATIONS, SUPPORTED_HASH_ALGORITHMS, } from "./types.js";
|
|
5
5
|
/** `integrity.signature`, once it is known to be an object. Schema validation
|
|
6
6
|
* (when not bypassed) already guarantees `algorithm` and `value` are strings;
|
|
@@ -173,16 +173,35 @@ export function verifyEventIntegrity(event, label, validator, options = {}) {
|
|
|
173
173
|
};
|
|
174
174
|
}
|
|
175
175
|
/**
|
|
176
|
-
* Checks `integrity.signature` when
|
|
177
|
-
*
|
|
178
|
-
*
|
|
179
|
-
*
|
|
176
|
+
* Checks `integrity.signature`. Returns `undefined` only when no signature is
|
|
177
|
+
* declared. A declared signature is always reported on, one of three ways:
|
|
178
|
+
*
|
|
179
|
+
* - An algorithm this verifier does not implement fails verification with or
|
|
180
|
+
* without a key: a signature that can never be checked here must not read as
|
|
181
|
+
* verified (specification/integrity.md §6.1).
|
|
182
|
+
* - An implemented algorithm with no key supplied is reported as declared but
|
|
183
|
+
* not checked, so silence never stands in for a check. The verdict is
|
|
184
|
+
* unchanged: the hash was verified, the signature was not claimed to be.
|
|
185
|
+
* - An implemented algorithm with a key is verified.
|
|
180
186
|
*/
|
|
181
187
|
function checkSignature(event, signature, publicKey) {
|
|
182
188
|
const declared = readSignature(signature);
|
|
183
|
-
if (declared === undefined
|
|
189
|
+
if (declared === undefined) {
|
|
184
190
|
return undefined;
|
|
185
191
|
}
|
|
192
|
+
if (!isSupportedSignatureAlgorithm(declared.algorithm)) {
|
|
193
|
+
return {
|
|
194
|
+
ok: false,
|
|
195
|
+
kind: "unsupported-signature-algorithm",
|
|
196
|
+
message: `signature algorithm "${declared.algorithm}" is not implemented by this verifier`,
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
if (publicKey === undefined) {
|
|
200
|
+
return {
|
|
201
|
+
ok: true,
|
|
202
|
+
message: `signature declared (${declared.algorithm}), not checked: no public key was supplied`,
|
|
203
|
+
};
|
|
204
|
+
}
|
|
186
205
|
const result = verifyEventSignature(event, declared.algorithm, declared.value, publicKey);
|
|
187
206
|
if (result.ok) {
|
|
188
207
|
return { ok: true, message: `signature valid (${declared.algorithm})` };
|