@xemahq/xema 0.27.0 → 0.28.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/dev/env-defaults.d.ts.map +1 -1
- package/dist/dev/env-defaults.js +0 -1
- package/dist/dev/env-defaults.js.map +1 -1
- package/dist/edition/verify-image-evidence.bundle.mjs +143 -39
- package/dist/edition/verify-image-evidence.bundle.provenance.json +45 -39
- package/edition/README.md +7 -9
- package/edition/edition-artifact.mjs +14 -0
- package/edition/edition-config.mjs +17 -19
- package/edition/edition-contract.json +11 -4
- package/edition/edition-workspace.mjs +12 -1
- package/edition/evidence-checkout.mjs +22 -1
- package/edition/evidence-trust-policy.mjs +116 -78
- package/edition/image-delivery-entitlement-descriptor.mjs +106 -0
- package/edition/image-evidence.mjs +8 -0
- package/edition/lib.mjs +3 -0
- package/edition/oras.mjs +1 -1
- package/edition/produce-image-delivery-entitlement-evidence.mjs +12 -12
- package/edition/release-channel-guard.mjs +11 -1
- package/edition/release-edition-artifact.mjs +2 -3
- package/edition/verify-image-evidence.mjs +40 -12
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env-defaults.d.ts","sourceRoot":"","sources":["../../src/dev/env-defaults.ts"],"names":[],"mappings":"AA6CA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAYrF,eAAO,MAAM,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAmDpD,CAAC;AAwBH,eAAO,MAAM,kBAAkB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAa5D,CAAC;AAuCL,MAAM,WAAW,gBAAgB;IAE/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAMtB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,eAAO,MAAM,kBAAkB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAMtE,CAAC;AAML,eAAO,MAAM,4BAA4B,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAQvE,CAAC;AAeJ,wBAAgB,0BAA0B,IAAI,0BAA0B,EAAE,CAazE;AAoBD,eAAO,MAAM,0BAA0B,QAEtC,CAAC;AAiBF,eAAO,MAAM,iBAAiB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAW3D,CAAC;AAkBL,eAAO,MAAM,iBAAiB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"env-defaults.d.ts","sourceRoot":"","sources":["../../src/dev/env-defaults.ts"],"names":[],"mappings":"AA6CA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAYrF,eAAO,MAAM,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAmDpD,CAAC;AAwBH,eAAO,MAAM,kBAAkB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAa5D,CAAC;AAuCL,MAAM,WAAW,gBAAgB;IAE/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAMtB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,eAAO,MAAM,kBAAkB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAMtE,CAAC;AAML,eAAO,MAAM,4BAA4B,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAQvE,CAAC;AAeJ,wBAAgB,0BAA0B,IAAI,0BAA0B,EAAE,CAazE;AAoBD,eAAO,MAAM,0BAA0B,QAEtC,CAAC;AAiBF,eAAO,MAAM,iBAAiB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAW3D,CAAC;AAkBL,eAAO,MAAM,iBAAiB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAwI3D,CAAC;AAOL,wBAAgB,mBAAmB,CACjC,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,aAAa,CAAC,MAAM,CAAC,CAoEvB"}
|
package/dist/dev/env-defaults.js
CHANGED
|
@@ -136,7 +136,6 @@ exports.MISC_ENV_DEFAULTS = Object.freeze({
|
|
|
136
136
|
GITHUB_APP_FRONTEND_ALLOWLIST: 'http://127.0.0.1:3000',
|
|
137
137
|
SCM_WEBHOOK_SECRET: 'dev-scm-webhook-secret',
|
|
138
138
|
K8S_ALLOWED_IMAGE_REGISTRIES: 'ghcr.io,docker.io,registry.k8s.io,quay.io,127.0.0.1:5000',
|
|
139
|
-
MAILOPS_OAUTH_REDIRECT_URI: 'http://127.0.0.1:3000/mailops/oauth/callback',
|
|
140
139
|
LLM_GATEWAY_API_URL: backingUrl('llm-gateway-api'),
|
|
141
140
|
});
|
|
142
141
|
function applyDevEnvDefaults(env = process.env) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env-defaults.js","sourceRoot":"","sources":["../../src/dev/env-defaults.ts"],"names":[],"mappings":";;;AAsOA,gEAaC;
|
|
1
|
+
{"version":3,"file":"env-defaults.js","sourceRoot":"","sources":["../../src/dev/env-defaults.ts"],"names":[],"mappings":"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"}
|
|
@@ -51116,8 +51116,15 @@ var edition_contract_default = {
|
|
|
51116
51116
|
repositoryPrefix: "xema-edition-",
|
|
51117
51117
|
descriptorFile: "xema-edition.json",
|
|
51118
51118
|
descriptorSchema: "xema.edition/v1",
|
|
51119
|
-
locks: [
|
|
51120
|
-
|
|
51119
|
+
locks: [
|
|
51120
|
+
"distribution.lock.json",
|
|
51121
|
+
"images.lock.json",
|
|
51122
|
+
"authorization.lock.json",
|
|
51123
|
+
"chart-set.lock.json"
|
|
51124
|
+
],
|
|
51125
|
+
offeringLayers: {
|
|
51126
|
+
catalogue: "catalogue.json"
|
|
51127
|
+
},
|
|
51121
51128
|
provenancePins: {
|
|
51122
51129
|
catalogue: "the sha256 digest (sha256:<64 hex>) of the offering artifact a customer edition was resolved against; every other pin is a 40-hex commit"
|
|
51123
51130
|
},
|
|
@@ -51125,11 +51132,11 @@ var edition_contract_default = {
|
|
|
51125
51132
|
evidenceTrust: {
|
|
51126
51133
|
states: {
|
|
51127
51134
|
armed: "the data root declares an evidence trust policy that is pinned and ARMED on the channel of the edition",
|
|
51128
|
-
"not-armed": "a
|
|
51135
|
+
"not-armed": "a develop edition only: its data root declares no policy, or one that is not armed on the develop channel. A release edition never records not-armed"
|
|
51129
51136
|
},
|
|
51130
51137
|
refusal: {
|
|
51131
51138
|
code: "EVIDENCE_TRUST_REQUIRED_UNARMED",
|
|
51132
|
-
when: "
|
|
51139
|
+
when: "a release edition is written while the data root's evidence trust policy is not armed on the release channel (none declared, or declared but UNARMED or PARTIALLY ARMED there): no release descriptor or artifact is written, and no configuration key admits one. Arming is judged per channel: a develop edition admits not-armed"
|
|
51133
51140
|
}
|
|
51134
51141
|
}
|
|
51135
51142
|
};
|
|
@@ -51726,35 +51733,35 @@ function requirePublishers(config) {
|
|
|
51726
51733
|
})
|
|
51727
51734
|
);
|
|
51728
51735
|
}
|
|
51729
|
-
var EVIDENCE_TRUST_POLICY_KEYS = Object.freeze(["pin", "policy"
|
|
51736
|
+
var EVIDENCE_TRUST_POLICY_KEYS = Object.freeze(["pin", "policy"]);
|
|
51730
51737
|
function isDataRootRelativePath(value) {
|
|
51731
51738
|
return typeof value === "string" && DATA_ROOT_RELATIVE_PATH.test(value) && value.split("/").every((segment) => segment !== "." && segment !== "..");
|
|
51732
51739
|
}
|
|
51733
51740
|
function requireEvidenceTrustPolicy(config) {
|
|
51734
51741
|
if (!Object.hasOwn(config, "evidenceTrustPolicy")) {
|
|
51735
51742
|
throw new EditionWorkspaceConfigError(
|
|
51736
|
-
`${EDITION_WORKSPACE_CONFIG_FILE}: "evidenceTrustPolicy" is required: {"
|
|
51743
|
+
`${EDITION_WORKSPACE_CONFIG_FILE}: "evidenceTrustPolicy" is required: {"policy": ..., "pin": ...}, or null to state that this data root declares no policy (no release edition can then be sealed from it)`
|
|
51737
51744
|
);
|
|
51738
51745
|
}
|
|
51739
51746
|
const value = config.evidenceTrustPolicy;
|
|
51740
|
-
|
|
51741
|
-
|
|
51747
|
+
if (value === null) {
|
|
51748
|
+
return Object.freeze({ policy: null, pin: null });
|
|
51749
|
+
}
|
|
51750
|
+
const shapeError = (detail) => new EditionWorkspaceConfigError(
|
|
51751
|
+
`${EDITION_WORKSPACE_CONFIG_FILE}: "evidenceTrustPolicy" is exactly null or {policy, pin} with both paths data-root-relative${detail}`
|
|
51742
51752
|
);
|
|
51743
|
-
if (
|
|
51744
|
-
throw shapeError();
|
|
51753
|
+
if (typeof value !== "object" || Array.isArray(value)) {
|
|
51754
|
+
throw shapeError("");
|
|
51745
51755
|
}
|
|
51746
51756
|
const keys = Object.keys(value).sort();
|
|
51747
|
-
|
|
51748
|
-
|
|
51757
|
+
const unknown = keys.filter((key) => !EVIDENCE_TRUST_POLICY_KEYS.includes(key));
|
|
51758
|
+
if (unknown.length > 0) {
|
|
51759
|
+
throw shapeError(`; unknown key ${unknown.map((key) => `"${key}"`).join(", ")}`);
|
|
51749
51760
|
}
|
|
51750
|
-
|
|
51751
|
-
|
|
51752
|
-
throw shapeError();
|
|
51761
|
+
if (keys.join() !== EVIDENCE_TRUST_POLICY_KEYS.join()) {
|
|
51762
|
+
throw shapeError("");
|
|
51753
51763
|
}
|
|
51754
|
-
|
|
51755
|
-
return Object.freeze({ required: value.required, policy: null, pin: null });
|
|
51756
|
-
}
|
|
51757
|
-
for (const key of ["policy", "pin"]) {
|
|
51764
|
+
for (const key of EVIDENCE_TRUST_POLICY_KEYS) {
|
|
51758
51765
|
if (!isDataRootRelativePath(value[key])) {
|
|
51759
51766
|
throw new EditionWorkspaceConfigError(
|
|
51760
51767
|
`${EDITION_WORKSPACE_CONFIG_FILE}: "evidenceTrustPolicy.${key}" must be a data-root-relative POSIX path without "." or ".." segments; got ${JSON.stringify(value[key])}`
|
|
@@ -51764,7 +51771,7 @@ function requireEvidenceTrustPolicy(config) {
|
|
|
51764
51771
|
if (value.policy === value.pin) {
|
|
51765
51772
|
throw new EditionWorkspaceConfigError(`${EDITION_WORKSPACE_CONFIG_FILE}: "evidenceTrustPolicy.policy" and ".pin" must be different files`);
|
|
51766
51773
|
}
|
|
51767
|
-
return Object.freeze({
|
|
51774
|
+
return Object.freeze({ policy: value.policy, pin: value.pin });
|
|
51768
51775
|
}
|
|
51769
51776
|
function parseEditionWorkspaceConfig(document) {
|
|
51770
51777
|
if (document === null || typeof document !== "object" || Array.isArray(document)) {
|
|
@@ -52015,6 +52022,11 @@ function parseEditionDescriptor(value) {
|
|
|
52015
52022
|
if (!Object.values(EvidenceTrustState).includes(value.evidenceTrustPolicy)) {
|
|
52016
52023
|
throw new Error(`${EDITION_DESCRIPTOR_FILE}: evidenceTrustPolicy must be one of ${Object.values(EvidenceTrustState).join(" | ")}`);
|
|
52017
52024
|
}
|
|
52025
|
+
if (value.provenance.channel === EditionChannel.Release && value.evidenceTrustPolicy !== EvidenceTrustState.Armed) {
|
|
52026
|
+
throw new Error(
|
|
52027
|
+
`${EDITION_DESCRIPTOR_FILE}: a release edition requires an armed evidence trust policy; "${value.distributionId}" records ${JSON.stringify(value.evidenceTrustPolicy)}`
|
|
52028
|
+
);
|
|
52029
|
+
}
|
|
52018
52030
|
exactKeys(value.engine, ["image"], `${EDITION_DESCRIPTOR_FILE} engine`);
|
|
52019
52031
|
assertEngineImage(value.engine.image);
|
|
52020
52032
|
return value;
|
|
@@ -52453,6 +52465,21 @@ function gradeTrustedCheckouts({ grades, trustedGit, expected }) {
|
|
|
52453
52465
|
group.requirements.push({ root: canonicalRoot, label, requiredPaths });
|
|
52454
52466
|
byRepository.set(location.repositoryRoot, group);
|
|
52455
52467
|
}
|
|
52468
|
+
if (expected !== void 0) {
|
|
52469
|
+
const regraded = new Set(
|
|
52470
|
+
[...byRepository.values()].flatMap((group) => group.requirements.map(({ root: root2 }) => root2))
|
|
52471
|
+
);
|
|
52472
|
+
for (const root2 of regraded) {
|
|
52473
|
+
if (typeof expected.get(root2)?.commit !== "string") {
|
|
52474
|
+
throw new Error(`${root2} was not graded first, so its HEAD cannot be held unchanged`);
|
|
52475
|
+
}
|
|
52476
|
+
}
|
|
52477
|
+
for (const root2 of expected.keys()) {
|
|
52478
|
+
if (!regraded.has(root2)) {
|
|
52479
|
+
throw new Error(`${root2} was graded first and is missing from the re-grade`);
|
|
52480
|
+
}
|
|
52481
|
+
}
|
|
52482
|
+
}
|
|
52456
52483
|
const result = /* @__PURE__ */ new Map();
|
|
52457
52484
|
for (const [repositoryRoot, group] of byRepository) {
|
|
52458
52485
|
assertTrustedCheckoutLocation(group.location, group.labels.join(" + "));
|
|
@@ -52460,9 +52487,12 @@ function gradeTrustedCheckouts({ grades, trustedGit, expected }) {
|
|
|
52460
52487
|
repositoryRoot,
|
|
52461
52488
|
requirements: group.requirements,
|
|
52462
52489
|
trustedGit,
|
|
52463
|
-
expectedCommit: expected?.get(group.requirements[0].root)
|
|
52490
|
+
expectedCommit: expected?.get(group.requirements[0].root).commit
|
|
52464
52491
|
});
|
|
52465
52492
|
for (const { root: root2 } of group.requirements) {
|
|
52493
|
+
if (expected !== void 0 && expected.get(root2).commit !== graded.commit) {
|
|
52494
|
+
throw new Error(`${repositoryRoot} HEAD changed during verification`);
|
|
52495
|
+
}
|
|
52466
52496
|
result.set(root2, graded);
|
|
52467
52497
|
}
|
|
52468
52498
|
}
|
|
@@ -53553,6 +53583,59 @@ function assertPinnedVerifier({ pin, actual }) {
|
|
|
53553
53583
|
}
|
|
53554
53584
|
}
|
|
53555
53585
|
|
|
53586
|
+
// edition/image-delivery-entitlement-descriptor.mjs
|
|
53587
|
+
import { dirname as dirname4, join as join6 } from "node:path";
|
|
53588
|
+
var ENTITLEMENT_DESCRIPTOR_FILE = "entitlement.json";
|
|
53589
|
+
var ENTITLEMENT_DESCRIPTOR_SCHEMA_VERSION = 2;
|
|
53590
|
+
var ENTITLEMENT_DESCRIPTOR_KEYS = Object.freeze([
|
|
53591
|
+
"schemaVersion",
|
|
53592
|
+
"distributionId",
|
|
53593
|
+
"customerId",
|
|
53594
|
+
"mode",
|
|
53595
|
+
"targetRegistry",
|
|
53596
|
+
"idempotencyKey",
|
|
53597
|
+
"distributionStatementDigest",
|
|
53598
|
+
"evidence"
|
|
53599
|
+
]);
|
|
53600
|
+
function parseEntitlementDescriptorDocument(raw, schemas2) {
|
|
53601
|
+
if (raw === null || typeof raw !== "object" || Array.isArray(raw)) {
|
|
53602
|
+
throw new Error(`${ENTITLEMENT_DESCRIPTOR_FILE} must be a JSON object`);
|
|
53603
|
+
}
|
|
53604
|
+
if (raw.schemaVersion !== ENTITLEMENT_DESCRIPTOR_SCHEMA_VERSION) {
|
|
53605
|
+
throw new Error(
|
|
53606
|
+
`${ENTITLEMENT_DESCRIPTOR_FILE} has schemaVersion ${JSON.stringify(raw.schemaVersion)}; this verifier reads schemaVersion ${ENTITLEMENT_DESCRIPTOR_SCHEMA_VERSION} only (accept the entitlement again with this CLI)`
|
|
53607
|
+
);
|
|
53608
|
+
}
|
|
53609
|
+
const keys = Object.keys(raw).sort();
|
|
53610
|
+
const expected = [...ENTITLEMENT_DESCRIPTOR_KEYS].sort();
|
|
53611
|
+
if (keys.length !== expected.length || keys.some((key, index) => key !== expected[index])) {
|
|
53612
|
+
throw new Error(
|
|
53613
|
+
`${ENTITLEMENT_DESCRIPTOR_FILE} must hold exactly the keys ${ENTITLEMENT_DESCRIPTOR_KEYS.join(", ")}; it holds ${keys.join(", ")}`
|
|
53614
|
+
);
|
|
53615
|
+
}
|
|
53616
|
+
for (const key of ["distributionId", "customerId", "mode", "idempotencyKey", "distributionStatementDigest"]) {
|
|
53617
|
+
if (typeof raw[key] !== "string" || raw[key] === "") {
|
|
53618
|
+
throw new Error(`${ENTITLEMENT_DESCRIPTOR_FILE} "${key}" must be a non-empty string`);
|
|
53619
|
+
}
|
|
53620
|
+
}
|
|
53621
|
+
if (raw.targetRegistry !== null && (typeof raw.targetRegistry !== "string" || raw.targetRegistry === "")) {
|
|
53622
|
+
throw new Error(`${ENTITLEMENT_DESCRIPTOR_FILE} "targetRegistry" must be null or a non-empty string`);
|
|
53623
|
+
}
|
|
53624
|
+
return { ...raw, evidence: schemas2.SigstoreEvidenceDescriptorSchema.parse(raw.evidence) };
|
|
53625
|
+
}
|
|
53626
|
+
function assertEntitlementDescriptorStates(document, expected) {
|
|
53627
|
+
for (const key of ["distributionId", "customerId", "mode", "targetRegistry", "distributionStatementDigest"]) {
|
|
53628
|
+
if (document[key] !== expected[key]) {
|
|
53629
|
+
throw new Error(
|
|
53630
|
+
`${ENTITLEMENT_DESCRIPTOR_FILE} states ${key} ${JSON.stringify(document[key])}, not the ${JSON.stringify(expected[key])} this verification was asked for`
|
|
53631
|
+
);
|
|
53632
|
+
}
|
|
53633
|
+
}
|
|
53634
|
+
}
|
|
53635
|
+
function entitlementEvidenceRoot(evidenceRoot, entitlementDescriptorPath) {
|
|
53636
|
+
return dirname4(join6(evidenceRoot, entitlementDescriptorPath));
|
|
53637
|
+
}
|
|
53638
|
+
|
|
53556
53639
|
// edition/image-evidence-replay-state.mjs
|
|
53557
53640
|
import { randomUUID } from "node:crypto";
|
|
53558
53641
|
import {
|
|
@@ -53567,7 +53650,7 @@ import {
|
|
|
53567
53650
|
unlinkSync,
|
|
53568
53651
|
writeFileSync as writeFileSync3
|
|
53569
53652
|
} from "node:fs";
|
|
53570
|
-
import { basename as basename3, dirname as
|
|
53653
|
+
import { basename as basename3, dirname as dirname5, isAbsolute as isAbsolute5, join as join7 } from "node:path";
|
|
53571
53654
|
var MAX_REPLAY_STATE_BYTES = 64 * 1024;
|
|
53572
53655
|
function openRegularFileNoFollow(path) {
|
|
53573
53656
|
const descriptor = openSync3(
|
|
@@ -53614,8 +53697,8 @@ function assertTrustedStateDirectory(path) {
|
|
|
53614
53697
|
}
|
|
53615
53698
|
}
|
|
53616
53699
|
function writeDurableReplacement(path, value) {
|
|
53617
|
-
const directory = realpathSync5(
|
|
53618
|
-
const temporaryPath =
|
|
53700
|
+
const directory = realpathSync5(dirname5(path));
|
|
53701
|
+
const temporaryPath = join7(
|
|
53619
53702
|
directory,
|
|
53620
53703
|
`.${basename3(path)}.${randomUUID()}.tmp`
|
|
53621
53704
|
);
|
|
@@ -53663,12 +53746,12 @@ async function verifyAndAdvanceReplayState({
|
|
|
53663
53746
|
if (!isAbsolute5(statePath)) {
|
|
53664
53747
|
throw new Error("replay state path must be absolute");
|
|
53665
53748
|
}
|
|
53666
|
-
const stateDirectory = realpathSync5(
|
|
53667
|
-
if (stateDirectory !==
|
|
53749
|
+
const stateDirectory = realpathSync5(dirname5(statePath));
|
|
53750
|
+
if (stateDirectory !== dirname5(statePath)) {
|
|
53668
53751
|
throw new Error("replay state parent path must be canonical");
|
|
53669
53752
|
}
|
|
53670
53753
|
assertTrustedStateDirectory(stateDirectory);
|
|
53671
|
-
const canonicalStatePath =
|
|
53754
|
+
const canonicalStatePath = join7(stateDirectory, basename3(statePath));
|
|
53672
53755
|
const lockPath = `${canonicalStatePath}.lock`;
|
|
53673
53756
|
let lockDescriptor;
|
|
53674
53757
|
try {
|
|
@@ -53772,7 +53855,7 @@ async function verifyAndAdvanceReplayState({
|
|
|
53772
53855
|
|
|
53773
53856
|
// edition/verifier-binding.mjs
|
|
53774
53857
|
import { readFileSync as readFileSync5, realpathSync as realpathSync6 } from "node:fs";
|
|
53775
|
-
import { dirname as
|
|
53858
|
+
import { dirname as dirname6, join as join8 } from "node:path";
|
|
53776
53859
|
|
|
53777
53860
|
// edition/verifier-files.mjs
|
|
53778
53861
|
var VERIFIER_PROVENANCE_FILE = "verify-image-evidence.bundle.provenance.json";
|
|
@@ -53823,7 +53906,7 @@ function readRunningVerifier(bundlePath) {
|
|
|
53823
53906
|
assertProtectedPathAncestry(realBundle, "the evidence verifier install");
|
|
53824
53907
|
const bundleBytes = readFileSync5(realBundle);
|
|
53825
53908
|
const provenanceBytes = readFileSync5(
|
|
53826
|
-
|
|
53909
|
+
join8(dirname6(realBundle), VERIFIER_PROVENANCE_FILE)
|
|
53827
53910
|
);
|
|
53828
53911
|
parseVerifierProvenance({ provenanceBytes, bundleBytes });
|
|
53829
53912
|
return { bundleBytes, provenanceBytes };
|
|
@@ -53841,11 +53924,12 @@ async function loadVerifierKernelSchemas() {
|
|
|
53841
53924
|
}
|
|
53842
53925
|
|
|
53843
53926
|
// edition/verify-image-evidence.mjs
|
|
53844
|
-
var USAGE = "usage: verify-image-evidence <distributionId> --evidence-root <dir> --descriptor <absolute-path> --state <absolute-path> --cosign <absolute-path> --git <absolute-path> [--evidence-set <relative-path>] [--json] [--entitlement <relative-path> --customer <id> --mode <mode> [--target-registry <registry>]] --data-root <dir> --editions-root <dir> --kernel <dir>";
|
|
53927
|
+
var USAGE = "usage: verify-image-evidence <distributionId> --evidence-root <dir> --descriptor <absolute-path> --state <absolute-path> --cosign <absolute-path> --git <absolute-path> [--evidence-set <relative-path>] [--json] [--entitlement <relative-path> --entitlement-workflow-sha <40-hex git sha> --customer <id> --mode <mode> [--target-registry <registry>]] --data-root <dir> --editions-root <dir> --kernel <dir>";
|
|
53845
53928
|
var EVIDENCE_CHANNEL_OF_EDITION_CHANNEL = Object.freeze({
|
|
53846
53929
|
[EditionChannel.Release]: "release",
|
|
53847
53930
|
[EditionChannel.Develop]: "develop"
|
|
53848
53931
|
});
|
|
53932
|
+
var GIT_COMMIT_SHA = /^[a-f0-9]{40}$/;
|
|
53849
53933
|
var DATA_ROOT_FILES = Object.freeze(["edition-workspace.json", "runtime-image-source-index.json"]);
|
|
53850
53934
|
function requireOptionValue(args, index, flag) {
|
|
53851
53935
|
const value = args[index + 1];
|
|
@@ -53876,6 +53960,7 @@ function parseArgs(args) {
|
|
|
53876
53960
|
cosignBinary: null,
|
|
53877
53961
|
gitBinary: null,
|
|
53878
53962
|
entitlementDescriptorPath: null,
|
|
53963
|
+
entitlementWorkflowSha: null,
|
|
53879
53964
|
customerId: null,
|
|
53880
53965
|
mode: null,
|
|
53881
53966
|
targetRegistry: null
|
|
@@ -53902,6 +53987,8 @@ function parseArgs(args) {
|
|
|
53902
53987
|
options.gitBinary = value;
|
|
53903
53988
|
} else if (flag === "--entitlement") {
|
|
53904
53989
|
options.entitlementDescriptorPath = value;
|
|
53990
|
+
} else if (flag === "--entitlement-workflow-sha") {
|
|
53991
|
+
options.entitlementWorkflowSha = value;
|
|
53905
53992
|
} else if (flag === "--customer") {
|
|
53906
53993
|
options.customerId = value;
|
|
53907
53994
|
} else if (flag === "--mode") {
|
|
@@ -53927,6 +54014,7 @@ function parseArgs(args) {
|
|
|
53927
54014
|
}
|
|
53928
54015
|
const entitlementFlags = [
|
|
53929
54016
|
["--entitlement", options.entitlementDescriptorPath],
|
|
54017
|
+
["--entitlement-workflow-sha", options.entitlementWorkflowSha],
|
|
53930
54018
|
["--customer", options.customerId],
|
|
53931
54019
|
["--mode", options.mode]
|
|
53932
54020
|
];
|
|
@@ -53937,7 +54025,10 @@ function parseArgs(args) {
|
|
|
53937
54025
|
);
|
|
53938
54026
|
}
|
|
53939
54027
|
if (stated.length === 0 && options.targetRegistry !== null) {
|
|
53940
|
-
throw new Error("--target-registry needs --entitlement, --customer and --mode");
|
|
54028
|
+
throw new Error("--target-registry needs --entitlement, --entitlement-workflow-sha, --customer and --mode");
|
|
54029
|
+
}
|
|
54030
|
+
if (options.entitlementWorkflowSha !== null && !GIT_COMMIT_SHA.test(options.entitlementWorkflowSha)) {
|
|
54031
|
+
throw new Error("--entitlement-workflow-sha must be a 40-character lowercase hexadecimal git commit SHA");
|
|
53941
54032
|
}
|
|
53942
54033
|
if (options.entitlementDescriptorPath !== null && isAbsolute6(options.entitlementDescriptorPath)) {
|
|
53943
54034
|
throw new Error("--entitlement must be an evidence-root-relative path");
|
|
@@ -54105,13 +54196,26 @@ async function verifyEvidence({ argv, env, bundlePath }) {
|
|
|
54105
54196
|
cosignBinary: options.cosignBinary,
|
|
54106
54197
|
schemas: schemas2
|
|
54107
54198
|
});
|
|
54108
|
-
const
|
|
54109
|
-
|
|
54110
|
-
|
|
54111
|
-
|
|
54199
|
+
const entitlement = options.entitlementDescriptorPath === null ? null : parseEntitlementDescriptorDocument(
|
|
54200
|
+
readCanonicalJsonFromRoot(
|
|
54201
|
+
evidenceRoot,
|
|
54202
|
+
options.entitlementDescriptorPath,
|
|
54203
|
+
"delivery entitlement descriptor"
|
|
54204
|
+
),
|
|
54205
|
+
schemas2
|
|
54112
54206
|
);
|
|
54207
|
+
if (entitlement !== null) {
|
|
54208
|
+
assertEntitlementDescriptorStates(entitlement, {
|
|
54209
|
+
distributionId: options.distributionId,
|
|
54210
|
+
customerId: options.customerId,
|
|
54211
|
+
mode: options.mode,
|
|
54212
|
+
targetRegistry: options.targetRegistry,
|
|
54213
|
+
distributionStatementDigest: result.completenessStatementDigest
|
|
54214
|
+
});
|
|
54215
|
+
}
|
|
54216
|
+
const entitlementDescriptor = entitlement === null ? null : entitlement.evidence;
|
|
54113
54217
|
const entitlementStatement = entitlementDescriptor === null ? null : await verifyImageDeliveryEntitlement({
|
|
54114
|
-
evidenceRoot,
|
|
54218
|
+
evidenceRoot: entitlementEvidenceRoot(evidenceRoot, options.entitlementDescriptorPath),
|
|
54115
54219
|
descriptor: entitlementDescriptor,
|
|
54116
54220
|
policy: anchors.policy,
|
|
54117
54221
|
policyRoot: dataRoot(),
|
|
@@ -54122,9 +54226,9 @@ async function verifyEvidence({ argv, env, bundlePath }) {
|
|
|
54122
54226
|
mode: options.mode,
|
|
54123
54227
|
targetRegistry: options.targetRegistry,
|
|
54124
54228
|
now: /* @__PURE__ */ new Date(),
|
|
54125
|
-
// The entitlement predicate carries no producer run
|
|
54126
|
-
//
|
|
54127
|
-
expectedWorkflowSha:
|
|
54229
|
+
// The entitlement predicate carries no producer run: the commit
|
|
54230
|
+
// its certificate is held to is the caller's statement.
|
|
54231
|
+
expectedWorkflowSha: options.entitlementWorkflowSha,
|
|
54128
54232
|
// A nonce spent by a producer or completeness statement of
|
|
54129
54233
|
// this release cannot be reused by its entitlement.
|
|
54130
54234
|
consumedNonces: result.verifiedNonces,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
|
-
"artifactSha256": "sha256:
|
|
3
|
+
"artifactSha256": "sha256:a50fae555a6b55791afbec256bf41745d0dc849eb9d964369a41e8a0d4f58a8b",
|
|
4
4
|
"esbuild": {
|
|
5
5
|
"version": "0.28.2"
|
|
6
6
|
},
|
|
@@ -2119,181 +2119,187 @@
|
|
|
2119
2119
|
},
|
|
2120
2120
|
{
|
|
2121
2121
|
"package": "@xemahq/xema",
|
|
2122
|
-
"version": "0.
|
|
2122
|
+
"version": "0.28.0",
|
|
2123
2123
|
"path": "edition/authorization-base.mjs",
|
|
2124
2124
|
"sha256": "sha256:7ded47eadc194ebf11583f77c695bf1708e502c654420564d55be3b599ff770f"
|
|
2125
2125
|
},
|
|
2126
2126
|
{
|
|
2127
2127
|
"package": "@xemahq/xema",
|
|
2128
|
-
"version": "0.
|
|
2128
|
+
"version": "0.28.0",
|
|
2129
2129
|
"path": "edition/connector-source-authority.mjs",
|
|
2130
2130
|
"sha256": "sha256:ea94475f4324737673accd7de1303c44db1cbc4dac61a865a06cd83abe310164"
|
|
2131
2131
|
},
|
|
2132
2132
|
{
|
|
2133
2133
|
"package": "@xemahq/xema",
|
|
2134
|
-
"version": "0.
|
|
2134
|
+
"version": "0.28.0",
|
|
2135
2135
|
"path": "edition/distribution-paths.mjs",
|
|
2136
2136
|
"sha256": "sha256:d78a5c8405bc6c25d36fcec61b0030e1fdacac7d528e698adb96f906f4b70279"
|
|
2137
2137
|
},
|
|
2138
2138
|
{
|
|
2139
2139
|
"package": "@xemahq/xema",
|
|
2140
|
-
"version": "0.
|
|
2140
|
+
"version": "0.28.0",
|
|
2141
2141
|
"path": "edition/edition-artifact.mjs",
|
|
2142
|
-
"sha256": "sha256:
|
|
2142
|
+
"sha256": "sha256:b27a039f3e93c0caadc6562d89fd7b1843140da291e183137ec4eb6966cdf468"
|
|
2143
2143
|
},
|
|
2144
2144
|
{
|
|
2145
2145
|
"package": "@xemahq/xema",
|
|
2146
|
-
"version": "0.
|
|
2146
|
+
"version": "0.28.0",
|
|
2147
2147
|
"path": "edition/edition-channel.mjs",
|
|
2148
2148
|
"sha256": "sha256:9dcd7b09d4fee8c4d43338e4e418619aa3003a612823455310cad6f6c48a19c0"
|
|
2149
2149
|
},
|
|
2150
2150
|
{
|
|
2151
2151
|
"package": "@xemahq/xema",
|
|
2152
|
-
"version": "0.
|
|
2152
|
+
"version": "0.28.0",
|
|
2153
2153
|
"path": "edition/edition-chart-set.mjs",
|
|
2154
2154
|
"sha256": "sha256:382e4eb4dbcf9fe88a01a4bf52480ebf6594a35e6abe235db637892c3cba595c"
|
|
2155
2155
|
},
|
|
2156
2156
|
{
|
|
2157
2157
|
"package": "@xemahq/xema",
|
|
2158
|
-
"version": "0.
|
|
2158
|
+
"version": "0.28.0",
|
|
2159
2159
|
"path": "edition/edition-config.mjs",
|
|
2160
|
-
"sha256": "sha256:
|
|
2160
|
+
"sha256": "sha256:5a9019079b04ffa4394405e05fc18e870171fa9da7405f37e1e608f1456bd43e"
|
|
2161
2161
|
},
|
|
2162
2162
|
{
|
|
2163
2163
|
"package": "@xemahq/xema",
|
|
2164
|
-
"version": "0.
|
|
2164
|
+
"version": "0.28.0",
|
|
2165
2165
|
"path": "edition/edition-constants.mjs",
|
|
2166
2166
|
"sha256": "sha256:e923fac9753d3203b3e27c708f9a9a4f3b2ce1337b2eda03be415ee27796f479"
|
|
2167
2167
|
},
|
|
2168
2168
|
{
|
|
2169
2169
|
"package": "@xemahq/xema",
|
|
2170
|
-
"version": "0.
|
|
2170
|
+
"version": "0.28.0",
|
|
2171
2171
|
"path": "edition/edition-contract.json",
|
|
2172
|
-
"sha256": "sha256:
|
|
2172
|
+
"sha256": "sha256:83e0b986a9a8a2f8d5c1fe06dea852f7893ee1188b51fe75816f2e58cfe8bb15"
|
|
2173
2173
|
},
|
|
2174
2174
|
{
|
|
2175
2175
|
"package": "@xemahq/xema",
|
|
2176
|
-
"version": "0.
|
|
2176
|
+
"version": "0.28.0",
|
|
2177
2177
|
"path": "edition/edition-protocol.mjs",
|
|
2178
2178
|
"sha256": "sha256:3a0d53d18718790ac32c92164e373f7f038675a3e9410e5ef3c139affcf42892"
|
|
2179
2179
|
},
|
|
2180
2180
|
{
|
|
2181
2181
|
"package": "@xemahq/xema",
|
|
2182
|
-
"version": "0.
|
|
2182
|
+
"version": "0.28.0",
|
|
2183
2183
|
"path": "edition/edition-workspace.mjs",
|
|
2184
|
-
"sha256": "sha256:
|
|
2184
|
+
"sha256": "sha256:fdd681e8f7b8da5da53664c45173cd042606d3dfc36567398909fd8d24a10eea"
|
|
2185
2185
|
},
|
|
2186
2186
|
{
|
|
2187
2187
|
"package": "@xemahq/xema",
|
|
2188
|
-
"version": "0.
|
|
2188
|
+
"version": "0.28.0",
|
|
2189
2189
|
"path": "edition/evidence-checkout.mjs",
|
|
2190
|
-
"sha256": "sha256:
|
|
2190
|
+
"sha256": "sha256:31fb669769b31de4c6f2b2501bb96959548172ef166e7568edbbfed7f5079a11"
|
|
2191
2191
|
},
|
|
2192
2192
|
{
|
|
2193
2193
|
"package": "@xemahq/xema",
|
|
2194
|
-
"version": "0.
|
|
2194
|
+
"version": "0.28.0",
|
|
2195
2195
|
"path": "edition/evidence-grammars.mjs",
|
|
2196
2196
|
"sha256": "sha256:4dae22b61ade99219a482b971c9780d68a3d37d021e39cdfe860b245364b8b9f"
|
|
2197
2197
|
},
|
|
2198
2198
|
{
|
|
2199
2199
|
"package": "@xemahq/xema",
|
|
2200
|
-
"version": "0.
|
|
2200
|
+
"version": "0.28.0",
|
|
2201
2201
|
"path": "edition/evidence-trust-pin.mjs",
|
|
2202
2202
|
"sha256": "sha256:b9dd5c01903394436530783614efb0cd357d982ed2befd844a39328479773cbc"
|
|
2203
2203
|
},
|
|
2204
2204
|
{
|
|
2205
2205
|
"package": "@xemahq/xema",
|
|
2206
|
-
"version": "0.
|
|
2206
|
+
"version": "0.28.0",
|
|
2207
|
+
"path": "edition/image-delivery-entitlement-descriptor.mjs",
|
|
2208
|
+
"sha256": "sha256:4726b66116f01bf2523fafe2b7a356591eca8fb5ca6bd8b154dd4821873e921b"
|
|
2209
|
+
},
|
|
2210
|
+
{
|
|
2211
|
+
"package": "@xemahq/xema",
|
|
2212
|
+
"version": "0.28.0",
|
|
2207
2213
|
"path": "edition/image-evidence-replay-state.mjs",
|
|
2208
2214
|
"sha256": "sha256:eba0cf1d38af0ab2f00c5099fa8bc2edc543136ce92f895544d4d284b3d6af0f"
|
|
2209
2215
|
},
|
|
2210
2216
|
{
|
|
2211
2217
|
"package": "@xemahq/xema",
|
|
2212
|
-
"version": "0.
|
|
2218
|
+
"version": "0.28.0",
|
|
2213
2219
|
"path": "edition/image-evidence.mjs",
|
|
2214
|
-
"sha256": "sha256:
|
|
2220
|
+
"sha256": "sha256:342e8209c5c0ead5dbfbea573afdfab9e53bbf181eb7918b85d2982fb4942992"
|
|
2215
2221
|
},
|
|
2216
2222
|
{
|
|
2217
2223
|
"package": "@xemahq/xema",
|
|
2218
|
-
"version": "0.
|
|
2224
|
+
"version": "0.28.0",
|
|
2219
2225
|
"path": "edition/kernel-contract-authority.mjs",
|
|
2220
2226
|
"sha256": "sha256:d486db676ff029706d5e53d07c76c2e61d1010b8a45a39d75cd10aaa8c429855"
|
|
2221
2227
|
},
|
|
2222
2228
|
{
|
|
2223
2229
|
"package": "@xemahq/xema",
|
|
2224
|
-
"version": "0.
|
|
2230
|
+
"version": "0.28.0",
|
|
2225
2231
|
"path": "edition/lib.mjs",
|
|
2226
|
-
"sha256": "sha256:
|
|
2232
|
+
"sha256": "sha256:5b668b4495f31cb884b25dd5edad6a1205bb7f0ff4155bd4a708815fa60bef97"
|
|
2227
2233
|
},
|
|
2228
2234
|
{
|
|
2229
2235
|
"package": "@xemahq/xema",
|
|
2230
|
-
"version": "0.
|
|
2236
|
+
"version": "0.28.0",
|
|
2231
2237
|
"path": "edition/no-follow-file.mjs",
|
|
2232
2238
|
"sha256": "sha256:c17bdf5e441f3c079aa06d4b48bbed05cad087855b9ad2a5e6dc43d5ee2b17c3"
|
|
2233
2239
|
},
|
|
2234
2240
|
{
|
|
2235
2241
|
"package": "@xemahq/xema",
|
|
2236
|
-
"version": "0.
|
|
2242
|
+
"version": "0.28.0",
|
|
2237
2243
|
"path": "edition/pin-source.mjs",
|
|
2238
2244
|
"sha256": "sha256:f55b290fd45a8c2612d9dcbc02244d8db3142af0345459df015de194d45611d8"
|
|
2239
2245
|
},
|
|
2240
2246
|
{
|
|
2241
2247
|
"package": "@xemahq/xema",
|
|
2242
|
-
"version": "0.
|
|
2248
|
+
"version": "0.28.0",
|
|
2243
2249
|
"path": "edition/source-authority.mjs",
|
|
2244
2250
|
"sha256": "sha256:2351d47a32ee865720a675f1ecd336b00cdce4aa34713219a1aa23920ac7b60f"
|
|
2245
2251
|
},
|
|
2246
2252
|
{
|
|
2247
2253
|
"package": "@xemahq/xema",
|
|
2248
|
-
"version": "0.
|
|
2254
|
+
"version": "0.28.0",
|
|
2249
2255
|
"path": "edition/strict-json.mjs",
|
|
2250
2256
|
"sha256": "sha256:f95778396df7f38b086f55d2ec4f3b6644a8aeff2b32282a62829145fb544562"
|
|
2251
2257
|
},
|
|
2252
2258
|
{
|
|
2253
2259
|
"package": "@xemahq/xema",
|
|
2254
|
-
"version": "0.
|
|
2260
|
+
"version": "0.28.0",
|
|
2255
2261
|
"path": "edition/string-order.mjs",
|
|
2256
2262
|
"sha256": "sha256:b3210cd273e4b2e01fb8b1a91e28734cd211d4010c080d0ce95f5e5ff631cffb"
|
|
2257
2263
|
},
|
|
2258
2264
|
{
|
|
2259
2265
|
"package": "@xemahq/xema",
|
|
2260
|
-
"version": "0.
|
|
2266
|
+
"version": "0.28.0",
|
|
2261
2267
|
"path": "edition/trusted-executable.mjs",
|
|
2262
2268
|
"sha256": "sha256:37d46cdbc999ddd55d4ea8aeed4850ddd1efde89ed7b532f5a2ddec87105d796"
|
|
2263
2269
|
},
|
|
2264
2270
|
{
|
|
2265
2271
|
"package": "@xemahq/xema",
|
|
2266
|
-
"version": "0.
|
|
2272
|
+
"version": "0.28.0",
|
|
2267
2273
|
"path": "edition/verifier-binding.mjs",
|
|
2268
2274
|
"sha256": "sha256:80732658617f5255258c538eeb2383331ec8553b44b58d552b567845a7b916aa"
|
|
2269
2275
|
},
|
|
2270
2276
|
{
|
|
2271
2277
|
"package": "@xemahq/xema",
|
|
2272
|
-
"version": "0.
|
|
2278
|
+
"version": "0.28.0",
|
|
2273
2279
|
"path": "edition/verifier-files.mjs",
|
|
2274
2280
|
"sha256": "sha256:cdd14a20a63f0f194a8abb55680a5a7e3ced1f09f8b210a90d349e655f6de0c0"
|
|
2275
2281
|
},
|
|
2276
2282
|
{
|
|
2277
2283
|
"package": "@xemahq/xema",
|
|
2278
|
-
"version": "0.
|
|
2284
|
+
"version": "0.28.0",
|
|
2279
2285
|
"path": "edition/verifier-provenance.mjs",
|
|
2280
2286
|
"sha256": "sha256:3e2fb8e07cf1f66b8ad6c7ac2555fe3af64ec7abeb07cecbaf1939a18c2b3663"
|
|
2281
2287
|
},
|
|
2282
2288
|
{
|
|
2283
2289
|
"package": "@xemahq/xema",
|
|
2284
|
-
"version": "0.
|
|
2290
|
+
"version": "0.28.0",
|
|
2285
2291
|
"path": "edition/verify-image-evidence.mjs",
|
|
2286
|
-
"sha256": "sha256:
|
|
2292
|
+
"sha256": "sha256:b7412ea4609c32cecf8992a4d2db4bf27fbad95b2d26ab1eee10ddbf044d1a0e"
|
|
2287
2293
|
},
|
|
2288
2294
|
{
|
|
2289
2295
|
"package": "@xemahq/xema",
|
|
2290
|
-
"version": "0.
|
|
2296
|
+
"version": "0.28.0",
|
|
2291
2297
|
"path": "edition/workspace-sections.mjs",
|
|
2292
2298
|
"sha256": "sha256:058c849767434e9ba911d9310092bede42e3ef959c75bbd35ff8879dc21ce3ff"
|
|
2293
2299
|
},
|
|
2294
2300
|
{
|
|
2295
2301
|
"package": "@xemahq/xema",
|
|
2296
|
-
"version": "0.
|
|
2302
|
+
"version": "0.28.0",
|
|
2297
2303
|
"path": "scripts/build-evidence-verifier.mjs",
|
|
2298
2304
|
"sha256": "sha256:decfa7ca6c340e51ddc06f4d30caac8e8e3c060c843c211586efc313dd9ace8e"
|
|
2299
2305
|
},
|