@xemahq/biome-supply-chain 0.4.0 → 0.5.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/README.md CHANGED
@@ -1,79 +1,43 @@
1
1
  # @xemahq/biome-supply-chain
2
2
 
3
- This package belongs to Layer 1 — a framework-free runtime SDK utility.
3
+ Cosign signature and attestation verification for biome artifacts. It wraps the `cosign` CLI and exports the verdict and trust-anchor vocabulary. Node built-ins only, no framework.
4
4
 
5
- Shared cosign supply-chain verification for Xema biomes. It centralizes the two
6
- things that were previously copy-pasted between `biome-fetcher-api` (OCI bundle
7
- verification) and `xema-store-api`:
5
+ ## When to use it
8
6
 
9
- - the single cosign CLI invocation (`ensureCosignAvailable`,
10
- `verifyCosignSignature`, `verifyCosignAttestation`, `verifyCosignBlob`), and
11
- - the signature / provenance verdict vocabulary (`SignatureVerdict`,
12
- `ProvenanceVerdict`, `CosignErrorCode`, `CosignVerifyOutcome`).
7
+ Use it to verify a biome OCI reference or a detached blob against trusted identities or public keys. Fetching the artifact stays with the caller. Needs the `cosign` binary on the path.
13
8
 
14
- It shells out to the `cosign` binary and uses only Node built-ins — no NestJS,
15
- no framework, no external runtime dependencies — so it is safe to import from a
16
- service runtime image and from a build-time CLI alike.
9
+ ## Installation
10
+
11
+ ```bash
12
+ pnpm add @xemahq/biome-supply-chain
13
+ ```
17
14
 
18
15
  ## Usage
19
16
 
20
17
  ```ts
21
18
  import {
22
19
  ensureCosignAvailable,
23
- verifyCosignSignature,
24
20
  verifyCosignBlob,
25
21
  CosignTrustAnchorKind,
26
- SignatureVerdict,
27
22
  CosignVerifyOutcome,
28
23
  } from '@xemahq/biome-supply-chain';
29
24
 
30
25
  await ensureCosignAvailable();
31
26
 
32
- // OCI ref (keyless identity allowlist)
33
- await verifyCosignSignature({
34
- ociRef: 'oci://registry/biome:1.2.0',
35
- trustedIdentities: ['https://github.com/xema-dev/...'],
36
- oidcIssuer: 'https://token.actions.githubusercontent.com',
37
- });
38
-
39
- // Detached blob (caller owns artifact/bundle/public-key files on disk).
40
- // A trust anchor is EITHER a keyless certificate-identity pattern OR a NAMED
41
- // public key; both kinds share one list and one result shape, and the anchors
42
- // are tried in order until one verifies.
43
27
  const { outcome, matchedAnchor } = await verifyCosignBlob({
44
- artifactPath: '/tmp/remoteEntry.js',
45
- bundlePath: '/tmp/remoteEntry.js.bundle',
28
+ artifactPath: './remoteEntry.js',
29
+ bundlePath: './remoteEntry.js.bundle',
46
30
  anchors: [
47
- {
48
- kind: CosignTrustAnchorKind.KeylessIdentity,
49
- name: '^https://github.com/xema-dev/.*$', // the name IS the regexp
50
- },
51
- {
52
- kind: CosignTrustAnchorKind.PublicKey,
53
- name: 'release-2026',
54
- publicKeyPath: '/etc/cosign/release.pub',
55
- },
31
+ { kind: CosignTrustAnchorKind.PublicKey, name: 'release-key', publicKeyPath: './release.pub' },
56
32
  ],
57
- // Optional: pin the Sigstore trusted root so KEYLESS anchors verify with
58
- // `--offline --trusted-root` (air-gap capable). A missing, unreadable or
59
- // digest-mismatched root THROWS `CosignTrustedRootError` before cosign is
60
- // spawned — it never falls back to cosign's online default.
61
- trustedRoot: { path: '/etc/sigstore/trusted-root.json', sha256: '<64 hex>' },
62
33
  });
63
34
  if (outcome === CosignVerifyOutcome.Verified) {
64
- // matchedAnchor is { kind, name } — WHICH anchor vouched for the bytes
35
+ // matchedAnchor names the anchor that vouched for the bytes
65
36
  }
66
37
  ```
67
38
 
68
- An empty `anchors` list resolves to `Failed` without spawning cosign, and a
69
- failed verification is a neutral outcome rather than a throw.
70
-
71
- Artifact resolution (resolving an OCI ref, or fetching + writing a blob to a
72
- temp file) stays with each consumer; this package owns only the cosign exec,
73
- the trust-anchor vocabulary and the verdict enums.
39
+ Other exports: `verifyCosignSignature`, `verifyCosignAttestation`, `SignatureVerdict`, `ProvenanceVerdict`, `CosignErrorCode`. A failed verification returns an outcome; an empty `anchors` list returns `Failed`. A pinned `trustedRoot` that is missing or has the wrong digest throws `CosignTrustedRootError`.
74
40
 
75
41
  ## License
76
42
 
77
- Business Source License 1.1 (BSL-1.1) — source-available; converts to MPL-2.0
78
- four years after each release. &copy; Xema — [xema.dev](https://xema.dev). See
79
- the [repository LICENSE](../../../LICENSE).
43
+ LicenseRef-Xema-BSL-1.1 &copy; Xema — [xema.dev](https://xema.dev)
package/dist/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  export * from './lib/verdicts';
2
2
  export * from './lib/trust-anchors';
3
+ export * from './lib/registry-auth';
3
4
  export * from './lib/cosign-exec';
4
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC"}
package/dist/index.js CHANGED
@@ -16,5 +16,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./lib/verdicts"), exports);
18
18
  __exportStar(require("./lib/trust-anchors"), exports);
19
+ __exportStar(require("./lib/registry-auth"), exports);
19
20
  __exportStar(require("./lib/cosign-exec"), exports);
20
21
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iDAA+B;AAC/B,sDAAoC;AACpC,oDAAkC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iDAA+B;AAC/B,sDAAoC;AACpC,sDAAoC;AACpC,oDAAkC"}
@@ -1,5 +1,24 @@
1
+ import { type RegistryCredential } from './registry-auth';
1
2
  import { type CosignBlobTrustAnchor, type CosignMatchedAnchor, type CosignPinnedTrustedRoot } from './trust-anchors';
2
- import { CosignVerifyOutcome } from './verdicts';
3
+ import { CosignFailureKind, CosignVerifyOutcome } from './verdicts';
4
+ interface CosignRunResult {
5
+ readonly code: number;
6
+ readonly stderr: string;
7
+ }
8
+ export declare function stderrTail(stderr: string, limits?: {
9
+ readonly maxLines?: number;
10
+ readonly maxChars?: number;
11
+ }): string;
12
+ export declare const REGISTRY_AUTH_FAILURE_PATTERNS: readonly RegExp[];
13
+ export declare function classifyCosignFailure(stderr: string): CosignFailureKind;
14
+ export declare class CosignCommandError extends Error {
15
+ readonly command: string;
16
+ readonly exitCode: number;
17
+ readonly kind: CosignFailureKind;
18
+ readonly stderrTail: string;
19
+ constructor(command: string, exitCode: number, kind: CosignFailureKind, stderrTail: string);
20
+ static fromRun(command: string, run: CosignRunResult): CosignCommandError;
21
+ }
3
22
  export declare function ensureCosignAvailable(bin?: string): Promise<void>;
4
23
  export interface VerifyCosignSignatureInput {
5
24
  readonly ociRef: string;
@@ -7,6 +26,7 @@ export interface VerifyCosignSignatureInput {
7
26
  readonly oidcIssuer?: string | undefined;
8
27
  readonly keyPath?: string | undefined;
9
28
  readonly trustedRoot?: CosignPinnedTrustedRoot | undefined;
29
+ readonly registryCredential?: RegistryCredential | undefined;
10
30
  readonly bin?: string | undefined;
11
31
  }
12
32
  export declare function verifyCosignSignature(input: VerifyCosignSignatureInput): Promise<void>;
@@ -17,6 +37,7 @@ export interface VerifyCosignAttestationInput {
17
37
  readonly oidcIssuer?: string | undefined;
18
38
  readonly keyPath?: string | undefined;
19
39
  readonly trustedRoot?: CosignPinnedTrustedRoot | undefined;
40
+ readonly registryCredential?: RegistryCredential | undefined;
20
41
  readonly bin?: string | undefined;
21
42
  }
22
43
  export declare function verifyCosignAttestation(input: VerifyCosignAttestationInput): Promise<void>;
@@ -33,4 +54,5 @@ export interface VerifyCosignBlobResult {
33
54
  readonly matchedAnchor?: CosignMatchedAnchor | undefined;
34
55
  }
35
56
  export declare function verifyCosignBlob(input: VerifyCosignBlobInput): Promise<VerifyCosignBlobResult>;
57
+ export {};
36
58
  //# sourceMappingURL=cosign-exec.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cosign-exec.d.ts","sourceRoot":"","sources":["../../src/lib/cosign-exec.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,EACxB,KAAK,uBAAuB,EAC7B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAoCjD,wBAAsB,qBAAqB,CACzC,GAAG,GAAE,MAA2B,GAC/B,OAAO,CAAC,IAAI,CAAC,CAYf;AAqDD,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAExB,QAAQ,CAAC,iBAAiB,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9C,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAEzC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAOtC,QAAQ,CAAC,WAAW,CAAC,EAAE,uBAAuB,GAAG,SAAS,CAAC;IAC3D,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACnC;AAOD,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,0BAA0B,GAChC,OAAO,CAAC,IAAI,CAAC,CA8Bf;AAED,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,iBAAiB,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9C,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAEtC,QAAQ,CAAC,WAAW,CAAC,EAAE,uBAAuB,GAAG,SAAS,CAAC;IAC3D,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACnC;AAMD,wBAAsB,uBAAuB,CAC3C,KAAK,EAAE,4BAA4B,GAClC,OAAO,CAAC,IAAI,CAAC,CA6Bf;AAED,MAAM,WAAW,qBAAqB;IAEpC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAE9B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAO5B,QAAQ,CAAC,OAAO,EAAE,SAAS,qBAAqB,EAAE,CAAC;IAKnD,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAWzC,QAAQ,CAAC,WAAW,CAAC,EAAE,uBAAuB,GAAG,SAAS,CAAC;IAC3D,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACnC;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,OAAO,EAAE,mBAAmB,CAAC;IAOtC,QAAQ,CAAC,aAAa,CAAC,EAAE,mBAAmB,GAAG,SAAS,CAAC;CAC1D;AA8DD,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,qBAAqB,GAC3B,OAAO,CAAC,sBAAsB,CAAC,CAoBjC"}
1
+ {"version":3,"file":"cosign-exec.d.ts","sourceRoot":"","sources":["../../src/lib/cosign-exec.ts"],"names":[],"mappings":"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"}
@@ -1,17 +1,22 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CosignCommandError = exports.REGISTRY_AUTH_FAILURE_PATTERNS = void 0;
4
+ exports.stderrTail = stderrTail;
5
+ exports.classifyCosignFailure = classifyCosignFailure;
3
6
  exports.ensureCosignAvailable = ensureCosignAvailable;
4
7
  exports.verifyCosignSignature = verifyCosignSignature;
5
8
  exports.verifyCosignAttestation = verifyCosignAttestation;
6
9
  exports.verifyCosignBlob = verifyCosignBlob;
7
10
  const node_child_process_1 = require("node:child_process");
11
+ const registry_auth_1 = require("./registry-auth");
8
12
  const trust_anchors_1 = require("./trust-anchors");
9
13
  const verdicts_1 = require("./verdicts");
10
14
  const DEFAULT_COSIGN_BIN = 'cosign';
11
- function runCosign(bin, args) {
15
+ function runCosign(bin, args, env = {}) {
12
16
  return new Promise((resolve, reject) => {
13
17
  const child = (0, node_child_process_1.spawn)(bin, [...args], {
14
18
  stdio: ['ignore', 'pipe', 'pipe'],
19
+ env: { ...process.env, ...env },
15
20
  });
16
21
  let stderr = '';
17
22
  child.stderr?.on('data', (chunk) => {
@@ -23,11 +28,59 @@ function runCosign(bin, args) {
23
28
  });
24
29
  });
25
30
  }
31
+ function runCosignAgainstRegistry(bin, args, credential) {
32
+ return (0, registry_auth_1.withRegistryAuth)(credential, (env) => runCosign(bin, args, env));
33
+ }
34
+ const STDERR_TAIL_MAX_LINES = 4;
35
+ const STDERR_TAIL_MAX_CHARS = 2048;
36
+ function stderrTail(stderr, limits = {}) {
37
+ const maxLines = limits.maxLines ?? STDERR_TAIL_MAX_LINES;
38
+ const maxChars = limits.maxChars ?? STDERR_TAIL_MAX_CHARS;
39
+ const lines = stderr
40
+ .split(/\r?\n/u)
41
+ .map((line) => line.trim())
42
+ .filter((line) => line.length > 0);
43
+ const tail = lines.slice(-maxLines).join(' | ');
44
+ if (tail.length <= maxChars) {
45
+ return tail;
46
+ }
47
+ return `${tail.slice(0, maxChars)}… [+${tail.length - maxChars} chars]`;
48
+ }
49
+ exports.REGISTRY_AUTH_FAILURE_PATTERNS = [
50
+ /\bUNAUTHORIZED\b/iu,
51
+ /\bDENIED\b/iu,
52
+ /\bauthentication required\b/iu,
53
+ /\bstatus code 40[13]\b/iu,
54
+ /\b40[13] (?:unauthorized|forbidden)\b/iu,
55
+ ];
56
+ function classifyCosignFailure(stderr) {
57
+ return exports.REGISTRY_AUTH_FAILURE_PATTERNS.some((pattern) => pattern.test(stderr))
58
+ ? verdicts_1.CosignFailureKind.RegistryUnauthenticated
59
+ : verdicts_1.CosignFailureKind.Rejected;
60
+ }
61
+ class CosignCommandError extends Error {
62
+ command;
63
+ exitCode;
64
+ kind;
65
+ stderrTail;
66
+ constructor(command, exitCode, kind, stderrTail) {
67
+ super(`${command} failed (code=${exitCode}, kind=${kind}): ${stderrTail}`);
68
+ this.command = command;
69
+ this.exitCode = exitCode;
70
+ this.kind = kind;
71
+ this.stderrTail = stderrTail;
72
+ this.name = 'CosignCommandError';
73
+ }
74
+ static fromRun(command, run) {
75
+ return new CosignCommandError(command, run.code, classifyCosignFailure(run.stderr), stderrTail(run.stderr));
76
+ }
77
+ }
78
+ exports.CosignCommandError = CosignCommandError;
26
79
  async function ensureCosignAvailable(bin = DEFAULT_COSIGN_BIN) {
27
80
  try {
28
81
  const { code, stderr } = await runCosign(bin, ['version']);
29
82
  if (code !== 0) {
30
- throw new Error(`\`${bin} version\` exited ${code}: ${stderr.slice(-200)}`);
83
+ throw new Error(`\`${bin} version\` exited ${code}: ${stderrTail(stderr)}`);
31
84
  }
32
85
  }
33
86
  catch (cause) {
@@ -65,9 +118,9 @@ async function verifyCosignSignature(input) {
65
118
  }
66
119
  args.push(...pinnedOciFlags(input.trustedRoot, Boolean(input.keyPath)));
67
120
  args.push(input.ociRef);
68
- const { code, stderr } = await runCosign(bin, args);
69
- if (code !== 0) {
70
- throw new Error(`${bin} verify failed (code=${code}): ${stderr.slice(-200)}`);
121
+ const run = await runCosignAgainstRegistry(bin, args, input.registryCredential);
122
+ if (run.code !== 0) {
123
+ throw CosignCommandError.fromRun(`${bin} verify`, run);
71
124
  }
72
125
  }
73
126
  async function verifyCosignAttestation(input) {
@@ -92,9 +145,9 @@ async function verifyCosignAttestation(input) {
92
145
  }
93
146
  args.push(...pinnedOciFlags(input.trustedRoot, Boolean(input.keyPath)));
94
147
  args.push(input.ociRef);
95
- const { code, stderr } = await runCosign(bin, args);
96
- if (code !== 0) {
97
- throw new Error(`${bin} verify-attestation failed (code=${code}): ${stderr.slice(-200)}`);
148
+ const run = await runCosignAgainstRegistry(bin, args, input.registryCredential);
149
+ if (run.code !== 0) {
150
+ throw CosignCommandError.fromRun(`${bin} verify-attestation`, run);
98
151
  }
99
152
  }
100
153
  function buildBlobVerifyArgs(anchor, input) {
@@ -1 +1 @@
1
- {"version":3,"file":"cosign-exec.js","sourceRoot":"","sources":["../../src/lib/cosign-exec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cosign-exec.js","sourceRoot":"","sources":["../../src/lib/cosign-exec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ export interface RegistryCredential {
2
+ readonly registry: string;
3
+ readonly auth: string;
4
+ }
5
+ export declare class RegistryCredentialError extends Error {
6
+ constructor(message: string);
7
+ }
8
+ export declare function normalizeRegistryAuthority(raw: string): string;
9
+ export declare function registryAuthorityOf(ociRef: string): string;
10
+ export declare function parseDockerConfigCredentials(documentText: string, source: string): ReadonlyMap<string, RegistryCredential>;
11
+ export declare function selectRegistryCredential(ociRef: string, credentials: ReadonlyMap<string, RegistryCredential>): RegistryCredential | undefined;
12
+ export interface RegistryAuthEnv {
13
+ readonly DOCKER_CONFIG: string;
14
+ }
15
+ export declare function withRegistryAuth<T>(credential: RegistryCredential | undefined, fn: (env: Partial<RegistryAuthEnv>) => Promise<T>): Promise<T>;
16
+ //# sourceMappingURL=registry-auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry-auth.d.ts","sourceRoot":"","sources":["../../src/lib/registry-auth.ts"],"names":[],"mappings":"AA4CA,MAAM,WAAW,kBAAkB;IAEjC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAE1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAGD,qBAAa,uBAAwB,SAAQ,KAAK;gBACpC,OAAO,EAAE,MAAM;CAI5B;AAoBD,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAO9D;AASD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAa1D;AAuBD,wBAAgB,4BAA4B,CAC1C,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,GACb,WAAW,CAAC,MAAM,EAAE,kBAAkB,CAAC,CA2CzC;AA0BD,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,WAAW,CAAC,MAAM,EAAE,kBAAkB,CAAC,GACnD,kBAAkB,GAAG,SAAS,CAEhC;AAGD,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAChC;AAcD,wBAAsB,gBAAgB,CAAC,CAAC,EACtC,UAAU,EAAE,kBAAkB,GAAG,SAAS,EAC1C,EAAE,EAAE,CAAC,GAAG,EAAE,OAAO,CAAC,eAAe,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,GAChD,OAAO,CAAC,CAAC,CAAC,CAgBZ"}
@@ -0,0 +1,113 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RegistryCredentialError = void 0;
4
+ exports.normalizeRegistryAuthority = normalizeRegistryAuthority;
5
+ exports.registryAuthorityOf = registryAuthorityOf;
6
+ exports.parseDockerConfigCredentials = parseDockerConfigCredentials;
7
+ exports.selectRegistryCredential = selectRegistryCredential;
8
+ exports.withRegistryAuth = withRegistryAuth;
9
+ const node_fs_1 = require("node:fs");
10
+ const node_os_1 = require("node:os");
11
+ const node_path_1 = require("node:path");
12
+ class RegistryCredentialError extends Error {
13
+ constructor(message) {
14
+ super(message);
15
+ this.name = 'RegistryCredentialError';
16
+ }
17
+ }
18
+ exports.RegistryCredentialError = RegistryCredentialError;
19
+ const DOCKER_HUB_AUTHORITY = 'docker.io';
20
+ const DOCKER_HUB_CONFIG_ALIASES = new Set([
21
+ 'index.docker.io',
22
+ 'index.docker.io/v1',
23
+ 'registry-1.docker.io',
24
+ ]);
25
+ function normalizeRegistryAuthority(raw) {
26
+ const stripped = raw
27
+ .trim()
28
+ .toLowerCase()
29
+ .replace(/^https?:\/\//u, '')
30
+ .replace(/\/+$/u, '');
31
+ return DOCKER_HUB_CONFIG_ALIASES.has(stripped) ? DOCKER_HUB_AUTHORITY : stripped;
32
+ }
33
+ function registryAuthorityOf(ociRef) {
34
+ const ref = ociRef.trim();
35
+ if (ref.length === 0) {
36
+ throw new RegistryCredentialError('registryAuthorityOf: empty OCI reference');
37
+ }
38
+ const slash = ref.indexOf('/');
39
+ if (slash === -1) {
40
+ return DOCKER_HUB_AUTHORITY;
41
+ }
42
+ const first = ref.slice(0, slash);
43
+ const looksLikeRegistry = first.includes('.') || first.includes(':') || first === 'localhost';
44
+ return looksLikeRegistry ? normalizeRegistryAuthority(first) : DOCKER_HUB_AUTHORITY;
45
+ }
46
+ function isRecord(value) {
47
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
48
+ }
49
+ function parseDockerConfigCredentials(documentText, source) {
50
+ let parsed;
51
+ try {
52
+ parsed = JSON.parse(documentText);
53
+ }
54
+ catch (cause) {
55
+ throw new RegistryCredentialError(`${source} is not a JSON document (${cause instanceof Error ? cause.message : String(cause)}); ` +
56
+ 'expected a Docker config.json of the shape {"auths":{"<registry>":{"auth":"<base64 user:secret>"}}}');
57
+ }
58
+ if (!isRecord(parsed) || !isRecord(parsed['auths'])) {
59
+ throw new RegistryCredentialError(`${source} carries no "auths" object; expected a Docker config.json of the shape ` +
60
+ '{"auths":{"<registry>":{"auth":"<base64 user:secret>"}}}');
61
+ }
62
+ const credentials = new Map();
63
+ for (const [rawRegistry, rawEntry] of Object.entries(parsed['auths'])) {
64
+ const registry = normalizeRegistryAuthority(rawRegistry);
65
+ if (registry.length === 0) {
66
+ throw new RegistryCredentialError(`${source}: "auths" has an empty registry key`);
67
+ }
68
+ if (!isRecord(rawEntry)) {
69
+ throw new RegistryCredentialError(`${source}: auths["${rawRegistry}"] is not an object`);
70
+ }
71
+ const entry = rawEntry;
72
+ const auth = credentialAuthOf(entry, `${source}: auths["${rawRegistry}"]`);
73
+ if (credentials.has(registry)) {
74
+ throw new RegistryCredentialError(`${source}: registry "${registry}" is declared twice (one of the spellings is "${rawRegistry}")`);
75
+ }
76
+ credentials.set(registry, { registry, auth });
77
+ }
78
+ if (credentials.size === 0) {
79
+ throw new RegistryCredentialError(`${source} declares an "auths" object with no registry in it — unset the variable ` +
80
+ 'to declare no credential, or declare at least one registry');
81
+ }
82
+ return credentials;
83
+ }
84
+ function credentialAuthOf(entry, where) {
85
+ if (typeof entry.auth === 'string' && entry.auth.length > 0) {
86
+ return entry.auth;
87
+ }
88
+ if (typeof entry.username === 'string' &&
89
+ entry.username.length > 0 &&
90
+ typeof entry.password === 'string' &&
91
+ entry.password.length > 0) {
92
+ return Buffer.from(`${entry.username}:${entry.password}`, 'utf8').toString('base64');
93
+ }
94
+ throw new RegistryCredentialError(`${where} carries neither a non-empty "auth" nor a "username"+"password" pair`);
95
+ }
96
+ function selectRegistryCredential(ociRef, credentials) {
97
+ return credentials.get(registryAuthorityOf(ociRef));
98
+ }
99
+ async function withRegistryAuth(credential, fn) {
100
+ if (credential === undefined) {
101
+ return fn({});
102
+ }
103
+ const dir = await node_fs_1.promises.mkdtemp((0, node_path_1.join)((0, node_os_1.tmpdir)(), 'xema-cosign-auth-'));
104
+ try {
105
+ await node_fs_1.promises.chmod(dir, 0o700);
106
+ await node_fs_1.promises.writeFile((0, node_path_1.join)(dir, 'config.json'), JSON.stringify({ auths: { [credential.registry]: { auth: credential.auth } } }), { mode: 0o600 });
107
+ return await fn({ DOCKER_CONFIG: dir });
108
+ }
109
+ finally {
110
+ await node_fs_1.promises.rm(dir, { recursive: true, force: true });
111
+ }
112
+ }
113
+ //# sourceMappingURL=registry-auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry-auth.js","sourceRoot":"","sources":["../../src/lib/registry-auth.ts"],"names":[],"mappings":"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"}
@@ -14,7 +14,12 @@ export declare enum CosignErrorCode {
14
14
  IdentityNotTrusted = "BIOME_SIGNATURE_IDENTITY_NOT_TRUSTED",
15
15
  ProvenanceMissing = "BIOME_PROVENANCE_MISSING",
16
16
  ProvenanceInvalid = "BIOME_PROVENANCE_INVALID",
17
- CosignUnavailable = "BIOME_COSIGN_UNAVAILABLE"
17
+ CosignUnavailable = "BIOME_COSIGN_UNAVAILABLE",
18
+ RegistryUnauthenticated = "BIOME_REGISTRY_UNAUTHENTICATED"
19
+ }
20
+ export declare enum CosignFailureKind {
21
+ RegistryUnauthenticated = "registry-unauthenticated",
22
+ Rejected = "rejected"
18
23
  }
19
24
  export declare enum CosignVerifyOutcome {
20
25
  Verified = "verified",
@@ -1 +1 @@
1
- {"version":3,"file":"verdicts.d.ts","sourceRoot":"","sources":["../../src/lib/verdicts.ts"],"names":[],"mappings":"AAqBA,oBAAY,gBAAgB;IAC1B,KAAK,UAAU;IACf,OAAO,YAAY;IACnB,QAAQ,aAAa;CACtB;AAGD,oBAAY,iBAAiB;IAC3B,KAAK,UAAU;IACf,OAAO,YAAY;IACnB,OAAO,YAAY;CACpB;AAGD,oBAAY,eAAe;IACzB,gBAAgB,4BAA4B;IAC5C,gBAAgB,4BAA4B;IAC5C,kBAAkB,yCAAyC;IAC3D,iBAAiB,6BAA6B;IAC9C,iBAAiB,6BAA6B;IAC9C,iBAAiB,6BAA6B;CAC/C;AAOD,oBAAY,mBAAmB;IAC7B,QAAQ,aAAa;IACrB,MAAM,WAAW;CAClB;AAGD,eAAO,MAAM,8BAA8B,EACzC,gCAAyC,CAAC"}
1
+ {"version":3,"file":"verdicts.d.ts","sourceRoot":"","sources":["../../src/lib/verdicts.ts"],"names":[],"mappings":"AAqBA,oBAAY,gBAAgB;IAC1B,KAAK,UAAU;IACf,OAAO,YAAY;IACnB,QAAQ,aAAa;CACtB;AAGD,oBAAY,iBAAiB;IAC3B,KAAK,UAAU;IACf,OAAO,YAAY;IACnB,OAAO,YAAY;CACpB;AAGD,oBAAY,eAAe;IACzB,gBAAgB,4BAA4B;IAC5C,gBAAgB,4BAA4B;IAC5C,kBAAkB,yCAAyC;IAC3D,iBAAiB,6BAA6B;IAC9C,iBAAiB,6BAA6B;IAC9C,iBAAiB,6BAA6B;IAS9C,uBAAuB,mCAAmC;CAC3D;AAgBD,oBAAY,iBAAiB;IAE3B,uBAAuB,6BAA6B;IAEpD,QAAQ,aAAa;CACtB;AAOD,oBAAY,mBAAmB;IAC7B,QAAQ,aAAa;IACrB,MAAM,WAAW;CAClB;AAGD,eAAO,MAAM,8BAA8B,EACzC,gCAAyC,CAAC"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SLSA_PROVENANCE_PREDICATE_TYPE = exports.CosignVerifyOutcome = exports.CosignErrorCode = exports.ProvenanceVerdict = exports.SignatureVerdict = void 0;
3
+ exports.SLSA_PROVENANCE_PREDICATE_TYPE = exports.CosignVerifyOutcome = exports.CosignFailureKind = exports.CosignErrorCode = exports.ProvenanceVerdict = exports.SignatureVerdict = void 0;
4
4
  var SignatureVerdict;
5
5
  (function (SignatureVerdict) {
6
6
  SignatureVerdict["Valid"] = "valid";
@@ -21,7 +21,13 @@ var CosignErrorCode;
21
21
  CosignErrorCode["ProvenanceMissing"] = "BIOME_PROVENANCE_MISSING";
22
22
  CosignErrorCode["ProvenanceInvalid"] = "BIOME_PROVENANCE_INVALID";
23
23
  CosignErrorCode["CosignUnavailable"] = "BIOME_COSIGN_UNAVAILABLE";
24
+ CosignErrorCode["RegistryUnauthenticated"] = "BIOME_REGISTRY_UNAUTHENTICATED";
24
25
  })(CosignErrorCode || (exports.CosignErrorCode = CosignErrorCode = {}));
26
+ var CosignFailureKind;
27
+ (function (CosignFailureKind) {
28
+ CosignFailureKind["RegistryUnauthenticated"] = "registry-unauthenticated";
29
+ CosignFailureKind["Rejected"] = "rejected";
30
+ })(CosignFailureKind || (exports.CosignFailureKind = CosignFailureKind = {}));
25
31
  var CosignVerifyOutcome;
26
32
  (function (CosignVerifyOutcome) {
27
33
  CosignVerifyOutcome["Verified"] = "verified";
@@ -1 +1 @@
1
- {"version":3,"file":"verdicts.js","sourceRoot":"","sources":["../../src/lib/verdicts.ts"],"names":[],"mappings":";;;AAqBA,IAAY,gBAIX;AAJD,WAAY,gBAAgB;IAC1B,mCAAe,CAAA;IACf,uCAAmB,CAAA;IACnB,yCAAqB,CAAA;AACvB,CAAC,EAJW,gBAAgB,gCAAhB,gBAAgB,QAI3B;AAGD,IAAY,iBAIX;AAJD,WAAY,iBAAiB;IAC3B,oCAAe,CAAA;IACf,wCAAmB,CAAA;IACnB,wCAAmB,CAAA;AACrB,CAAC,EAJW,iBAAiB,iCAAjB,iBAAiB,QAI5B;AAGD,IAAY,eAOX;AAPD,WAAY,eAAe;IACzB,+DAA4C,CAAA;IAC5C,+DAA4C,CAAA;IAC5C,8EAA2D,CAAA;IAC3D,iEAA8C,CAAA;IAC9C,iEAA8C,CAAA;IAC9C,iEAA8C,CAAA;AAChD,CAAC,EAPW,eAAe,+BAAf,eAAe,QAO1B;AAOD,IAAY,mBAGX;AAHD,WAAY,mBAAmB;IAC7B,4CAAqB,CAAA;IACrB,wCAAiB,CAAA;AACnB,CAAC,EAHW,mBAAmB,mCAAnB,mBAAmB,QAG9B;AAGY,QAAA,8BAA8B,GACzC,gCAAyC,CAAC"}
1
+ {"version":3,"file":"verdicts.js","sourceRoot":"","sources":["../../src/lib/verdicts.ts"],"names":[],"mappings":";;;AAqBA,IAAY,gBAIX;AAJD,WAAY,gBAAgB;IAC1B,mCAAe,CAAA;IACf,uCAAmB,CAAA;IACnB,yCAAqB,CAAA;AACvB,CAAC,EAJW,gBAAgB,gCAAhB,gBAAgB,QAI3B;AAGD,IAAY,iBAIX;AAJD,WAAY,iBAAiB;IAC3B,oCAAe,CAAA;IACf,wCAAmB,CAAA;IACnB,wCAAmB,CAAA;AACrB,CAAC,EAJW,iBAAiB,iCAAjB,iBAAiB,QAI5B;AAGD,IAAY,eAgBX;AAhBD,WAAY,eAAe;IACzB,+DAA4C,CAAA;IAC5C,+DAA4C,CAAA;IAC5C,8EAA2D,CAAA;IAC3D,iEAA8C,CAAA;IAC9C,iEAA8C,CAAA;IAC9C,iEAA8C,CAAA;IAS9C,6EAA0D,CAAA;AAC5D,CAAC,EAhBW,eAAe,+BAAf,eAAe,QAgB1B;AAgBD,IAAY,iBAKX;AALD,WAAY,iBAAiB;IAE3B,yEAAoD,CAAA;IAEpD,0CAAqB,CAAA;AACvB,CAAC,EALW,iBAAiB,iCAAjB,iBAAiB,QAK5B;AAOD,IAAY,mBAGX;AAHD,WAAY,mBAAmB;IAC7B,4CAAqB,CAAA;IACrB,wCAAiB,CAAA;AACnB,CAAC,EAHW,mBAAmB,mCAAnB,mBAAmB,QAG9B;AAGY,QAAA,8BAA8B,GACzC,gCAAyC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xemahq/biome-supply-chain",
3
- "version": "0.4.0",
3
+ "version": "0.5.1",
4
4
  "description": "Shared cosign supply-chain verification for Xema biomes: the single cosign CLI exec + the signature/provenance verdict enums used by biome-fetcher-api (OCI bundle verification) and xema-store-api. Node-builtins only.",
5
5
  "license": "LicenseRef-Xema-BSL-1.1",
6
6
  "author": "Neuralchowder Inc. <developer@xema.dev> (https://xema.dev)",