@actions/attest 1.0.0 → 1.1.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 +4 -0
- package/lib/oidc.d.ts +6 -0
- package/lib/oidc.js +119 -0
- package/lib/oidc.js.map +1 -0
- package/lib/provenance.d.ts +6 -9
- package/lib/provenance.js +19 -16
- package/lib/provenance.js.map +1 -1
- package/package.json +7 -1
package/README.md
CHANGED
|
@@ -112,6 +112,10 @@ export type AttestProvenanceOptions = {
|
|
|
112
112
|
sigstore?: 'public-good' | 'github'
|
|
113
113
|
// Whether to skip writing the attestation to the GH attestations API.
|
|
114
114
|
skipWrite?: boolean
|
|
115
|
+
// Issuer URL responsible for minting the OIDC token from which the
|
|
116
|
+
// provenance data is read. Defaults to
|
|
117
|
+
// 'https://token.actions.githubusercontent.com".
|
|
118
|
+
issuer?: string
|
|
115
119
|
}
|
|
116
120
|
```
|
|
117
121
|
|
package/lib/oidc.d.ts
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
declare const REQUIRED_CLAIMS: readonly ["iss", "ref", "sha", "repository", "event_name", "workflow_ref", "repository_id", "repository_owner_id", "runner_environment", "run_id", "run_attempt"];
|
|
2
|
+
export type ClaimSet = {
|
|
3
|
+
[K in (typeof REQUIRED_CLAIMS)[number]]: string;
|
|
4
|
+
};
|
|
5
|
+
export declare const getIDTokenClaims: (issuer: string) => Promise<ClaimSet>;
|
|
6
|
+
export {};
|
package/lib/oidc.js
ADDED
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
26
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
27
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
28
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
29
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
30
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
31
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
32
|
+
});
|
|
33
|
+
};
|
|
34
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
35
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
36
|
+
};
|
|
37
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
38
|
+
exports.getIDTokenClaims = void 0;
|
|
39
|
+
const core_1 = require("@actions/core");
|
|
40
|
+
const http_client_1 = require("@actions/http-client");
|
|
41
|
+
const jwt = __importStar(require("jsonwebtoken"));
|
|
42
|
+
const jwks_rsa_1 = __importDefault(require("jwks-rsa"));
|
|
43
|
+
const OIDC_AUDIENCE = 'nobody';
|
|
44
|
+
const REQUIRED_CLAIMS = [
|
|
45
|
+
'iss',
|
|
46
|
+
'ref',
|
|
47
|
+
'sha',
|
|
48
|
+
'repository',
|
|
49
|
+
'event_name',
|
|
50
|
+
'workflow_ref',
|
|
51
|
+
'repository_id',
|
|
52
|
+
'repository_owner_id',
|
|
53
|
+
'runner_environment',
|
|
54
|
+
'run_id',
|
|
55
|
+
'run_attempt'
|
|
56
|
+
];
|
|
57
|
+
const getIDTokenClaims = (issuer) => __awaiter(void 0, void 0, void 0, function* () {
|
|
58
|
+
try {
|
|
59
|
+
const token = yield (0, core_1.getIDToken)(OIDC_AUDIENCE);
|
|
60
|
+
const claims = yield decodeOIDCToken(token, issuer);
|
|
61
|
+
assertClaimSet(claims);
|
|
62
|
+
return claims;
|
|
63
|
+
}
|
|
64
|
+
catch (error) {
|
|
65
|
+
throw new Error(`Failed to get ID token: ${error.message}`);
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
exports.getIDTokenClaims = getIDTokenClaims;
|
|
69
|
+
const decodeOIDCToken = (token, issuer) => __awaiter(void 0, void 0, void 0, function* () {
|
|
70
|
+
// Verify and decode token
|
|
71
|
+
return new Promise((resolve, reject) => {
|
|
72
|
+
jwt.verify(token, getPublicKey(issuer), { audience: OIDC_AUDIENCE, issuer }, (err, decoded) => {
|
|
73
|
+
if (err) {
|
|
74
|
+
reject(err);
|
|
75
|
+
}
|
|
76
|
+
else if (!decoded || typeof decoded === 'string') {
|
|
77
|
+
reject(new Error('No decoded token'));
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
resolve(decoded);
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
});
|
|
84
|
+
});
|
|
85
|
+
// Returns a callback to locate the public key for the given JWT header. This
|
|
86
|
+
// involves two calls:
|
|
87
|
+
// 1. Fetch the OpenID configuration to get the JWKS URI.
|
|
88
|
+
// 2. Fetch the public key from the JWKS URI.
|
|
89
|
+
const getPublicKey = (issuer) => (header, callback) => {
|
|
90
|
+
// Look up the JWKS URI from the issuer's OpenID configuration
|
|
91
|
+
new http_client_1.HttpClient('actions/attest')
|
|
92
|
+
.getJson(`${issuer}/.well-known/openid-configuration`)
|
|
93
|
+
.then(data => {
|
|
94
|
+
if (!data.result) {
|
|
95
|
+
callback(new Error('No OpenID configuration found'));
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
// Fetch the public key from the JWKS URI
|
|
99
|
+
(0, jwks_rsa_1.default)({ jwksUri: data.result.jwks_uri }).getSigningKey(header.kid, (err, key) => {
|
|
100
|
+
callback(err, key === null || key === void 0 ? void 0 : key.getPublicKey());
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
})
|
|
104
|
+
.catch(err => {
|
|
105
|
+
callback(err);
|
|
106
|
+
});
|
|
107
|
+
};
|
|
108
|
+
function assertClaimSet(claims) {
|
|
109
|
+
const missingClaims = [];
|
|
110
|
+
for (const claim of REQUIRED_CLAIMS) {
|
|
111
|
+
if (!(claim in claims)) {
|
|
112
|
+
missingClaims.push(claim);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
if (missingClaims.length > 0) {
|
|
116
|
+
throw new Error(`Missing claims: ${missingClaims.join(', ')}`);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=oidc.js.map
|
package/lib/oidc.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oidc.js","sourceRoot":"","sources":["../src/oidc.ts"],"names":[],"mappings":"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"}
|
package/lib/provenance.d.ts
CHANGED
|
@@ -1,21 +1,18 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
|
-
/// <reference types="node" />
|
|
3
|
-
/// <reference types="node" />
|
|
4
|
-
/// <reference types="node" />
|
|
5
|
-
/// <reference types="node" />
|
|
6
1
|
import { AttestOptions } from './attest';
|
|
7
2
|
import type { Attestation, Predicate } from './shared.types';
|
|
8
|
-
export type AttestProvenanceOptions = Omit<AttestOptions, 'predicate' | 'predicateType'
|
|
3
|
+
export type AttestProvenanceOptions = Omit<AttestOptions, 'predicate' | 'predicateType'> & {
|
|
4
|
+
issuer?: string;
|
|
5
|
+
};
|
|
9
6
|
/**
|
|
10
7
|
* Builds an SLSA (Supply Chain Levels for Software Artifacts) provenance
|
|
11
8
|
* predicate using the GitHub Actions Workflow build type.
|
|
12
9
|
* https://slsa.dev/spec/v1.0/provenance
|
|
13
10
|
* https://github.com/slsa-framework/github-actions-buildtypes/tree/main/workflow/v1
|
|
14
|
-
* @param
|
|
15
|
-
*
|
|
11
|
+
* @param issuer - URL for the OIDC issuer. Defaults to the GitHub Actions token
|
|
12
|
+
* issuer.
|
|
16
13
|
* @returns The SLSA provenance predicate.
|
|
17
14
|
*/
|
|
18
|
-
export declare const buildSLSAProvenancePredicate: (
|
|
15
|
+
export declare const buildSLSAProvenancePredicate: (issuer?: string) => Promise<Predicate>;
|
|
19
16
|
/**
|
|
20
17
|
* Attests the build provenance of the provided subject. Generates the SLSA
|
|
21
18
|
* build provenance predicate, assembles it into an in-toto statement, and
|
package/lib/provenance.js
CHANGED
|
@@ -11,25 +11,28 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.attestProvenance = exports.buildSLSAProvenancePredicate = void 0;
|
|
13
13
|
const attest_1 = require("./attest");
|
|
14
|
+
const oidc_1 = require("./oidc");
|
|
14
15
|
const SLSA_PREDICATE_V1_TYPE = 'https://slsa.dev/provenance/v1';
|
|
15
16
|
const GITHUB_BUILDER_ID_PREFIX = 'https://github.com/actions/runner';
|
|
16
17
|
const GITHUB_BUILD_TYPE = 'https://slsa-framework.github.io/github-actions-buildtypes/workflow/v1';
|
|
18
|
+
const DEFAULT_ISSUER = 'https://token.actions.githubusercontent.com';
|
|
17
19
|
/**
|
|
18
20
|
* Builds an SLSA (Supply Chain Levels for Software Artifacts) provenance
|
|
19
21
|
* predicate using the GitHub Actions Workflow build type.
|
|
20
22
|
* https://slsa.dev/spec/v1.0/provenance
|
|
21
23
|
* https://github.com/slsa-framework/github-actions-buildtypes/tree/main/workflow/v1
|
|
22
|
-
* @param
|
|
23
|
-
*
|
|
24
|
+
* @param issuer - URL for the OIDC issuer. Defaults to the GitHub Actions token
|
|
25
|
+
* issuer.
|
|
24
26
|
* @returns The SLSA provenance predicate.
|
|
25
27
|
*/
|
|
26
|
-
const buildSLSAProvenancePredicate = (
|
|
27
|
-
const
|
|
28
|
+
const buildSLSAProvenancePredicate = (issuer = DEFAULT_ISSUER) => __awaiter(void 0, void 0, void 0, function* () {
|
|
29
|
+
const serverURL = process.env.GITHUB_SERVER_URL;
|
|
30
|
+
const claims = yield (0, oidc_1.getIDTokenClaims)(issuer);
|
|
28
31
|
// Split just the path and ref from the workflow string.
|
|
29
32
|
// owner/repo/.github/workflows/main.yml@main =>
|
|
30
33
|
// .github/workflows/main.yml, main
|
|
31
|
-
const [workflowPath, workflowRef] =
|
|
32
|
-
.replace(`${
|
|
34
|
+
const [workflowPath, workflowRef] = claims.workflow_ref
|
|
35
|
+
.replace(`${claims.repository}/`, '')
|
|
33
36
|
.split('@');
|
|
34
37
|
return {
|
|
35
38
|
type: SLSA_PREDICATE_V1_TYPE,
|
|
@@ -39,37 +42,37 @@ const buildSLSAProvenancePredicate = (env = process.env) => {
|
|
|
39
42
|
externalParameters: {
|
|
40
43
|
workflow: {
|
|
41
44
|
ref: workflowRef,
|
|
42
|
-
repository: `${
|
|
45
|
+
repository: `${serverURL}/${claims.repository}`,
|
|
43
46
|
path: workflowPath
|
|
44
47
|
}
|
|
45
48
|
},
|
|
46
49
|
internalParameters: {
|
|
47
50
|
github: {
|
|
48
|
-
event_name:
|
|
49
|
-
repository_id:
|
|
50
|
-
repository_owner_id:
|
|
51
|
+
event_name: claims.event_name,
|
|
52
|
+
repository_id: claims.repository_id,
|
|
53
|
+
repository_owner_id: claims.repository_owner_id
|
|
51
54
|
}
|
|
52
55
|
},
|
|
53
56
|
resolvedDependencies: [
|
|
54
57
|
{
|
|
55
|
-
uri: `git+${
|
|
58
|
+
uri: `git+${serverURL}/${claims.repository}@${claims.ref}`,
|
|
56
59
|
digest: {
|
|
57
|
-
gitCommit:
|
|
60
|
+
gitCommit: claims.sha
|
|
58
61
|
}
|
|
59
62
|
}
|
|
60
63
|
]
|
|
61
64
|
},
|
|
62
65
|
runDetails: {
|
|
63
66
|
builder: {
|
|
64
|
-
id: `${GITHUB_BUILDER_ID_PREFIX}/${
|
|
67
|
+
id: `${GITHUB_BUILDER_ID_PREFIX}/${claims.runner_environment}`
|
|
65
68
|
},
|
|
66
69
|
metadata: {
|
|
67
|
-
invocationId: `${
|
|
70
|
+
invocationId: `${serverURL}/${claims.repository}/actions/runs/${claims.run_id}/attempts/${claims.run_attempt}`
|
|
68
71
|
}
|
|
69
72
|
}
|
|
70
73
|
}
|
|
71
74
|
};
|
|
72
|
-
};
|
|
75
|
+
});
|
|
73
76
|
exports.buildSLSAProvenancePredicate = buildSLSAProvenancePredicate;
|
|
74
77
|
/**
|
|
75
78
|
* Attests the build provenance of the provided subject. Generates the SLSA
|
|
@@ -81,7 +84,7 @@ exports.buildSLSAProvenancePredicate = buildSLSAProvenancePredicate;
|
|
|
81
84
|
*/
|
|
82
85
|
function attestProvenance(options) {
|
|
83
86
|
return __awaiter(this, void 0, void 0, function* () {
|
|
84
|
-
const predicate = (0, exports.buildSLSAProvenancePredicate)(
|
|
87
|
+
const predicate = yield (0, exports.buildSLSAProvenancePredicate)(options.issuer);
|
|
85
88
|
return (0, attest_1.attest)(Object.assign(Object.assign({}, options), { predicateType: predicate.type, predicate: predicate.params }));
|
|
86
89
|
});
|
|
87
90
|
}
|
package/lib/provenance.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provenance.js","sourceRoot":"","sources":["../src/provenance.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qCAA8C;
|
|
1
|
+
{"version":3,"file":"provenance.js","sourceRoot":"","sources":["../src/provenance.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qCAA8C;AAC9C,iCAAuC;AAGvC,MAAM,sBAAsB,GAAG,gCAAgC,CAAA;AAE/D,MAAM,wBAAwB,GAAG,mCAAmC,CAAA;AACpE,MAAM,iBAAiB,GACrB,wEAAwE,CAAA;AAE1E,MAAM,cAAc,GAAG,6CAA6C,CAAA;AASpE;;;;;;;;GAQG;AACI,MAAM,4BAA4B,GAAG,CAC1C,SAAiB,cAAc,EACX,EAAE;IACtB,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAA;IAC/C,MAAM,MAAM,GAAG,MAAM,IAAA,uBAAgB,EAAC,MAAM,CAAC,CAAA;IAE7C,wDAAwD;IACxD,gDAAgD;IAChD,qCAAqC;IACrC,MAAM,CAAC,YAAY,EAAE,WAAW,CAAC,GAAG,MAAM,CAAC,YAAY;SACpD,OAAO,CAAC,GAAG,MAAM,CAAC,UAAU,GAAG,EAAE,EAAE,CAAC;SACpC,KAAK,CAAC,GAAG,CAAC,CAAA;IAEb,OAAO;QACL,IAAI,EAAE,sBAAsB;QAC5B,MAAM,EAAE;YACN,eAAe,EAAE;gBACf,SAAS,EAAE,iBAAiB;gBAC5B,kBAAkB,EAAE;oBAClB,QAAQ,EAAE;wBACR,GAAG,EAAE,WAAW;wBAChB,UAAU,EAAE,GAAG,SAAS,IAAI,MAAM,CAAC,UAAU,EAAE;wBAC/C,IAAI,EAAE,YAAY;qBACnB;iBACF;gBACD,kBAAkB,EAAE;oBAClB,MAAM,EAAE;wBACN,UAAU,EAAE,MAAM,CAAC,UAAU;wBAC7B,aAAa,EAAE,MAAM,CAAC,aAAa;wBACnC,mBAAmB,EAAE,MAAM,CAAC,mBAAmB;qBAChD;iBACF;gBACD,oBAAoB,EAAE;oBACpB;wBACE,GAAG,EAAE,OAAO,SAAS,IAAI,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,GAAG,EAAE;wBAC1D,MAAM,EAAE;4BACN,SAAS,EAAE,MAAM,CAAC,GAAG;yBACtB;qBACF;iBACF;aACF;YACD,UAAU,EAAE;gBACV,OAAO,EAAE;oBACP,EAAE,EAAE,GAAG,wBAAwB,IAAI,MAAM,CAAC,kBAAkB,EAAE;iBAC/D;gBACD,QAAQ,EAAE;oBACR,YAAY,EAAE,GAAG,SAAS,IAAI,MAAM,CAAC,UAAU,iBAAiB,MAAM,CAAC,MAAM,aAAa,MAAM,CAAC,WAAW,EAAE;iBAC/G;aACF;SACF;KACF,CAAA;AACH,CAAC,CAAA,CAAA;AAnDY,QAAA,4BAA4B,gCAmDxC;AAED;;;;;;;GAOG;AACH,SAAsB,gBAAgB,CACpC,OAAgC;;QAEhC,MAAM,SAAS,GAAG,MAAM,IAAA,oCAA4B,EAAC,OAAO,CAAC,MAAM,CAAC,CAAA;QACpE,OAAO,IAAA,eAAM,kCACR,OAAO,KACV,aAAa,EAAE,SAAS,CAAC,IAAI,EAC7B,SAAS,EAAE,SAAS,CAAC,MAAM,IAC3B,CAAA;IACJ,CAAC;CAAA;AATD,4CASC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@actions/attest",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"description": "Actions attestation lib",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"github",
|
|
@@ -37,13 +37,19 @@
|
|
|
37
37
|
"devDependencies": {
|
|
38
38
|
"@sigstore/mock": "^0.6.5",
|
|
39
39
|
"@sigstore/rekor-types": "^2.0.0",
|
|
40
|
+
"@types/jsonwebtoken": "^9.0.6",
|
|
40
41
|
"@types/make-fetch-happen": "^10.0.4",
|
|
42
|
+
"jose": "^5.2.3",
|
|
41
43
|
"nock": "^13.5.1"
|
|
42
44
|
},
|
|
43
45
|
"dependencies": {
|
|
46
|
+
"@actions/core": "^1.10.1",
|
|
44
47
|
"@actions/github": "^6.0.0",
|
|
48
|
+
"@actions/http-client": "^2.2.1",
|
|
45
49
|
"@sigstore/bundle": "^2.2.0",
|
|
46
50
|
"@sigstore/sign": "^2.2.3",
|
|
51
|
+
"jsonwebtoken": "^9.0.2",
|
|
52
|
+
"jwks-rsa": "^3.1.0",
|
|
47
53
|
"make-fetch-happen": "^13.0.0"
|
|
48
54
|
}
|
|
49
55
|
}
|