@freedomofpress/sigstore-browser 0.1.5 → 0.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +4 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/policy.d.ts +266 -0
- package/dist/policy.d.ts.map +1 -0
- package/dist/policy.js +371 -0
- package/dist/policy.js.map +1 -0
- package/dist/trust/tuf.d.ts.map +1 -1
- package/dist/trust/tuf.js +3 -1
- package/dist/trust/tuf.js.map +1 -1
- package/dist/x509/cert.d.ts +42 -1
- package/dist/x509/cert.d.ts.map +1 -1
- package/dist/x509/cert.js +103 -4
- package/dist/x509/cert.js.map +1 -1
- package/dist/x509/ext.d.ts +66 -2
- package/dist/x509/ext.d.ts.map +1 -1
- package/dist/x509/ext.js +133 -8
- package/dist/x509/ext.js.map +1 -1
- package/package.json +1 -1
- package/src/index.ts +78 -2
- package/src/policy.ts +476 -0
- package/src/trust/tuf.ts +3 -1
- package/src/x509/cert.ts +141 -3
- package/src/x509/ext.ts +154 -8
package/dist/policy.js
ADDED
|
@@ -0,0 +1,371 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Adapted from sigstore-python sigstore/verify/policy.py
|
|
3
|
+
*
|
|
4
|
+
* This module provides policy verification for checking certificate identity claims.
|
|
5
|
+
* Each policy class verifies a specific X.509 extension value against an expected value.
|
|
6
|
+
*
|
|
7
|
+
* There are two types of extension formats:
|
|
8
|
+
* - V1 extensions: Raw OCTET STRING containing the value directly
|
|
9
|
+
* - V2 extensions: DER-encoded UTF8String (RFC 5280 compliant)
|
|
10
|
+
*
|
|
11
|
+
* Policies can be combined using:
|
|
12
|
+
* - AllOf: All child policies must pass (logical AND)
|
|
13
|
+
* - AnyOf: At least one child policy must pass (logical OR)
|
|
14
|
+
* - Identity: Verifies SAN with optional issuer check
|
|
15
|
+
*/
|
|
16
|
+
import { PolicyError } from "./errors.js";
|
|
17
|
+
import { EXTENSION_OID_FULCIO_ISSUER_V1, EXTENSION_OID_GITHUB_WORKFLOW_TRIGGER, EXTENSION_OID_GITHUB_WORKFLOW_SHA, EXTENSION_OID_GITHUB_WORKFLOW_NAME, EXTENSION_OID_GITHUB_WORKFLOW_REPOSITORY, EXTENSION_OID_GITHUB_WORKFLOW_REF, EXTENSION_OID_OTHERNAME, EXTENSION_OID_FULCIO_ISSUER_V2, EXTENSION_OID_BUILD_SIGNER_URI, EXTENSION_OID_BUILD_SIGNER_DIGEST, EXTENSION_OID_RUNNER_ENVIRONMENT, EXTENSION_OID_SOURCE_REPOSITORY_URI, EXTENSION_OID_SOURCE_REPOSITORY_DIGEST, EXTENSION_OID_SOURCE_REPOSITORY_REF, EXTENSION_OID_SOURCE_REPOSITORY_IDENTIFIER, EXTENSION_OID_SOURCE_REPOSITORY_OWNER_URI, EXTENSION_OID_SOURCE_REPOSITORY_OWNER_IDENTIFIER, EXTENSION_OID_BUILD_CONFIG_URI, EXTENSION_OID_BUILD_CONFIG_DIGEST, EXTENSION_OID_BUILD_TRIGGER, EXTENSION_OID_RUN_INVOCATION_URI, EXTENSION_OID_SOURCE_REPOSITORY_VISIBILITY, } from "./x509/cert.js";
|
|
18
|
+
// Standard GitHub Actions OIDC issuer
|
|
19
|
+
// https://docs.github.com/en/actions/security-for-github-actions/security-hardening-your-deployments/about-security-hardening-with-openid-connect
|
|
20
|
+
export const GITHUB_OIDC_ISSUER = "https://token.actions.githubusercontent.com";
|
|
21
|
+
/**
|
|
22
|
+
* Base class for V1 extension policies (raw OCTET STRING value).
|
|
23
|
+
*/
|
|
24
|
+
class SingleX509ExtPolicyV1 {
|
|
25
|
+
expectedValue;
|
|
26
|
+
constructor(value) {
|
|
27
|
+
this.expectedValue = value;
|
|
28
|
+
}
|
|
29
|
+
verify(cert) {
|
|
30
|
+
const extValue = this.getExtensionValue(cert);
|
|
31
|
+
if (extValue === undefined) {
|
|
32
|
+
throw new PolicyError(`Certificate does not contain ${this.name} (${this.oid}) extension`);
|
|
33
|
+
}
|
|
34
|
+
if (extValue !== this.expectedValue) {
|
|
35
|
+
throw new PolicyError(`Certificate's ${this.name} does not match ` +
|
|
36
|
+
`(got '${extValue}', expected '${this.expectedValue}')`);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Base class for V2 extension policies (DER-encoded UTF8String).
|
|
42
|
+
* Uses the same verify logic as V1 since our extension classes handle the parsing.
|
|
43
|
+
*/
|
|
44
|
+
class SingleX509ExtPolicyV2 extends SingleX509ExtPolicyV1 {
|
|
45
|
+
}
|
|
46
|
+
// ============================================================================
|
|
47
|
+
// V1 Extension Policies (OID 1.3.6.1.4.1.57264.1.1 - 1.3.6.1.4.1.57264.1.6)
|
|
48
|
+
// ============================================================================
|
|
49
|
+
/**
|
|
50
|
+
* Verifies the certificate's OIDC issuer (V1 format).
|
|
51
|
+
* OID: 1.3.6.1.4.1.57264.1.1
|
|
52
|
+
*/
|
|
53
|
+
export class OIDCIssuer extends SingleX509ExtPolicyV1 {
|
|
54
|
+
oid = EXTENSION_OID_FULCIO_ISSUER_V1;
|
|
55
|
+
name = "OIDCIssuer";
|
|
56
|
+
getExtensionValue(cert) {
|
|
57
|
+
return cert.extFulcioIssuerV1?.issuer;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Verifies the certificate's GitHub Actions workflow trigger.
|
|
62
|
+
* OID: 1.3.6.1.4.1.57264.1.2
|
|
63
|
+
*/
|
|
64
|
+
export class GitHubWorkflowTrigger extends SingleX509ExtPolicyV1 {
|
|
65
|
+
oid = EXTENSION_OID_GITHUB_WORKFLOW_TRIGGER;
|
|
66
|
+
name = "GitHubWorkflowTrigger";
|
|
67
|
+
getExtensionValue(cert) {
|
|
68
|
+
return cert.extGitHubWorkflowTrigger?.workflowTrigger;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Verifies the certificate's GitHub Actions workflow commit SHA.
|
|
73
|
+
* OID: 1.3.6.1.4.1.57264.1.3
|
|
74
|
+
*/
|
|
75
|
+
export class GitHubWorkflowSHA extends SingleX509ExtPolicyV1 {
|
|
76
|
+
oid = EXTENSION_OID_GITHUB_WORKFLOW_SHA;
|
|
77
|
+
name = "GitHubWorkflowSHA";
|
|
78
|
+
getExtensionValue(cert) {
|
|
79
|
+
return cert.extGitHubWorkflowSHA?.workflowSHA;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Verifies the certificate's GitHub Actions workflow name.
|
|
84
|
+
* OID: 1.3.6.1.4.1.57264.1.4
|
|
85
|
+
*/
|
|
86
|
+
export class GitHubWorkflowName extends SingleX509ExtPolicyV1 {
|
|
87
|
+
oid = EXTENSION_OID_GITHUB_WORKFLOW_NAME;
|
|
88
|
+
name = "GitHubWorkflowName";
|
|
89
|
+
getExtensionValue(cert) {
|
|
90
|
+
return cert.extGitHubWorkflowName?.workflowName;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Verifies the certificate's GitHub Actions workflow repository.
|
|
95
|
+
* OID: 1.3.6.1.4.1.57264.1.5
|
|
96
|
+
*/
|
|
97
|
+
export class GitHubWorkflowRepository extends SingleX509ExtPolicyV1 {
|
|
98
|
+
oid = EXTENSION_OID_GITHUB_WORKFLOW_REPOSITORY;
|
|
99
|
+
name = "GitHubWorkflowRepository";
|
|
100
|
+
getExtensionValue(cert) {
|
|
101
|
+
return cert.extGitHubWorkflowRepository?.workflowRepository;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Verifies the certificate's GitHub Actions workflow ref.
|
|
106
|
+
* OID: 1.3.6.1.4.1.57264.1.6
|
|
107
|
+
*/
|
|
108
|
+
export class GitHubWorkflowRef extends SingleX509ExtPolicyV1 {
|
|
109
|
+
oid = EXTENSION_OID_GITHUB_WORKFLOW_REF;
|
|
110
|
+
name = "GitHubWorkflowRef";
|
|
111
|
+
getExtensionValue(cert) {
|
|
112
|
+
return cert.extGitHubWorkflowRef?.workflowRef;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
// ============================================================================
|
|
116
|
+
// V2 Extension Policies (OID 1.3.6.1.4.1.57264.1.8 - 1.3.6.1.4.1.57264.1.22)
|
|
117
|
+
// ============================================================================
|
|
118
|
+
/**
|
|
119
|
+
* Verifies the certificate's OIDC issuer (V2 format, DER-encoded).
|
|
120
|
+
* OID: 1.3.6.1.4.1.57264.1.8
|
|
121
|
+
*/
|
|
122
|
+
export class OIDCIssuerV2 extends SingleX509ExtPolicyV2 {
|
|
123
|
+
oid = EXTENSION_OID_FULCIO_ISSUER_V2;
|
|
124
|
+
name = "OIDCIssuerV2";
|
|
125
|
+
getExtensionValue(cert) {
|
|
126
|
+
return cert.extFulcioIssuerV2?.issuer;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Verifies the certificate's Build Signer URI.
|
|
131
|
+
* OID: 1.3.6.1.4.1.57264.1.9
|
|
132
|
+
*/
|
|
133
|
+
export class OIDCBuildSignerURI extends SingleX509ExtPolicyV2 {
|
|
134
|
+
oid = EXTENSION_OID_BUILD_SIGNER_URI;
|
|
135
|
+
name = "OIDCBuildSignerURI";
|
|
136
|
+
getExtensionValue(cert) {
|
|
137
|
+
return cert.extBuildSignerURI?.buildSignerURI;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Verifies the certificate's Build Signer Digest.
|
|
142
|
+
* OID: 1.3.6.1.4.1.57264.1.10
|
|
143
|
+
*/
|
|
144
|
+
export class OIDCBuildSignerDigest extends SingleX509ExtPolicyV2 {
|
|
145
|
+
oid = EXTENSION_OID_BUILD_SIGNER_DIGEST;
|
|
146
|
+
name = "OIDCBuildSignerDigest";
|
|
147
|
+
getExtensionValue(cert) {
|
|
148
|
+
return cert.extBuildSignerDigest?.buildSignerDigest;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Verifies the certificate's Runner Environment.
|
|
153
|
+
* OID: 1.3.6.1.4.1.57264.1.11
|
|
154
|
+
*/
|
|
155
|
+
export class OIDCRunnerEnvironment extends SingleX509ExtPolicyV2 {
|
|
156
|
+
oid = EXTENSION_OID_RUNNER_ENVIRONMENT;
|
|
157
|
+
name = "OIDCRunnerEnvironment";
|
|
158
|
+
getExtensionValue(cert) {
|
|
159
|
+
return cert.extRunnerEnvironment?.runnerEnvironment;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Verifies the certificate's Source Repository URI.
|
|
164
|
+
* OID: 1.3.6.1.4.1.57264.1.12
|
|
165
|
+
*/
|
|
166
|
+
export class OIDCSourceRepositoryURI extends SingleX509ExtPolicyV2 {
|
|
167
|
+
oid = EXTENSION_OID_SOURCE_REPOSITORY_URI;
|
|
168
|
+
name = "OIDCSourceRepositoryURI";
|
|
169
|
+
getExtensionValue(cert) {
|
|
170
|
+
return cert.extSourceRepositoryURI?.sourceRepositoryURI;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Verifies the certificate's Source Repository Digest.
|
|
175
|
+
* OID: 1.3.6.1.4.1.57264.1.13
|
|
176
|
+
*/
|
|
177
|
+
export class OIDCSourceRepositoryDigest extends SingleX509ExtPolicyV2 {
|
|
178
|
+
oid = EXTENSION_OID_SOURCE_REPOSITORY_DIGEST;
|
|
179
|
+
name = "OIDCSourceRepositoryDigest";
|
|
180
|
+
getExtensionValue(cert) {
|
|
181
|
+
return cert.extSourceRepositoryDigest?.sourceRepositoryDigest;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Verifies the certificate's Source Repository Ref.
|
|
186
|
+
* OID: 1.3.6.1.4.1.57264.1.14
|
|
187
|
+
*/
|
|
188
|
+
export class OIDCSourceRepositoryRef extends SingleX509ExtPolicyV2 {
|
|
189
|
+
oid = EXTENSION_OID_SOURCE_REPOSITORY_REF;
|
|
190
|
+
name = "OIDCSourceRepositoryRef";
|
|
191
|
+
getExtensionValue(cert) {
|
|
192
|
+
return cert.extSourceRepositoryRef?.sourceRepositoryRef;
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Verifies the certificate's Source Repository Identifier.
|
|
197
|
+
* OID: 1.3.6.1.4.1.57264.1.15
|
|
198
|
+
*/
|
|
199
|
+
export class OIDCSourceRepositoryIdentifier extends SingleX509ExtPolicyV2 {
|
|
200
|
+
oid = EXTENSION_OID_SOURCE_REPOSITORY_IDENTIFIER;
|
|
201
|
+
name = "OIDCSourceRepositoryIdentifier";
|
|
202
|
+
getExtensionValue(cert) {
|
|
203
|
+
return cert.extSourceRepositoryIdentifier?.sourceRepositoryIdentifier;
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Verifies the certificate's Source Repository Owner URI.
|
|
208
|
+
* OID: 1.3.6.1.4.1.57264.1.16
|
|
209
|
+
*/
|
|
210
|
+
export class OIDCSourceRepositoryOwnerURI extends SingleX509ExtPolicyV2 {
|
|
211
|
+
oid = EXTENSION_OID_SOURCE_REPOSITORY_OWNER_URI;
|
|
212
|
+
name = "OIDCSourceRepositoryOwnerURI";
|
|
213
|
+
getExtensionValue(cert) {
|
|
214
|
+
return cert.extSourceRepositoryOwnerURI?.sourceRepositoryOwnerURI;
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Verifies the certificate's Source Repository Owner Identifier.
|
|
219
|
+
* OID: 1.3.6.1.4.1.57264.1.17
|
|
220
|
+
*/
|
|
221
|
+
export class OIDCSourceRepositoryOwnerIdentifier extends SingleX509ExtPolicyV2 {
|
|
222
|
+
oid = EXTENSION_OID_SOURCE_REPOSITORY_OWNER_IDENTIFIER;
|
|
223
|
+
name = "OIDCSourceRepositoryOwnerIdentifier";
|
|
224
|
+
getExtensionValue(cert) {
|
|
225
|
+
return cert.extSourceRepositoryOwnerIdentifier?.sourceRepositoryOwnerIdentifier;
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Verifies the certificate's Build Config URI.
|
|
230
|
+
* OID: 1.3.6.1.4.1.57264.1.18
|
|
231
|
+
*/
|
|
232
|
+
export class OIDCBuildConfigURI extends SingleX509ExtPolicyV2 {
|
|
233
|
+
oid = EXTENSION_OID_BUILD_CONFIG_URI;
|
|
234
|
+
name = "OIDCBuildConfigURI";
|
|
235
|
+
getExtensionValue(cert) {
|
|
236
|
+
return cert.extBuildConfigURI?.buildConfigURI;
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* Verifies the certificate's Build Config Digest.
|
|
241
|
+
* OID: 1.3.6.1.4.1.57264.1.19
|
|
242
|
+
*/
|
|
243
|
+
export class OIDCBuildConfigDigest extends SingleX509ExtPolicyV2 {
|
|
244
|
+
oid = EXTENSION_OID_BUILD_CONFIG_DIGEST;
|
|
245
|
+
name = "OIDCBuildConfigDigest";
|
|
246
|
+
getExtensionValue(cert) {
|
|
247
|
+
return cert.extBuildConfigDigest?.buildConfigDigest;
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* Verifies the certificate's Build Trigger.
|
|
252
|
+
* OID: 1.3.6.1.4.1.57264.1.20
|
|
253
|
+
*/
|
|
254
|
+
export class OIDCBuildTrigger extends SingleX509ExtPolicyV2 {
|
|
255
|
+
oid = EXTENSION_OID_BUILD_TRIGGER;
|
|
256
|
+
name = "OIDCBuildTrigger";
|
|
257
|
+
getExtensionValue(cert) {
|
|
258
|
+
return cert.extBuildTrigger?.buildTrigger;
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
/**
|
|
262
|
+
* Verifies the certificate's Run Invocation URI.
|
|
263
|
+
* OID: 1.3.6.1.4.1.57264.1.21
|
|
264
|
+
*/
|
|
265
|
+
export class OIDCRunInvocationURI extends SingleX509ExtPolicyV2 {
|
|
266
|
+
oid = EXTENSION_OID_RUN_INVOCATION_URI;
|
|
267
|
+
name = "OIDCRunInvocationURI";
|
|
268
|
+
getExtensionValue(cert) {
|
|
269
|
+
return cert.extRunInvocationURI?.runInvocationURI;
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
/**
|
|
273
|
+
* Verifies the certificate's Source Repository Visibility at signing.
|
|
274
|
+
* OID: 1.3.6.1.4.1.57264.1.22
|
|
275
|
+
*/
|
|
276
|
+
export class OIDCSourceRepositoryVisibility extends SingleX509ExtPolicyV2 {
|
|
277
|
+
oid = EXTENSION_OID_SOURCE_REPOSITORY_VISIBILITY;
|
|
278
|
+
name = "OIDCSourceRepositoryVisibility";
|
|
279
|
+
getExtensionValue(cert) {
|
|
280
|
+
return cert.extSourceRepositoryVisibility?.sourceRepositoryVisibility;
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
// ============================================================================
|
|
284
|
+
// Policy Combinators
|
|
285
|
+
// ============================================================================
|
|
286
|
+
/**
|
|
287
|
+
* The "any of" policy, corresponding to a logical OR between child policies.
|
|
288
|
+
* An empty list of child policies is considered trivially invalid.
|
|
289
|
+
*/
|
|
290
|
+
export class AnyOf {
|
|
291
|
+
children;
|
|
292
|
+
constructor(children) {
|
|
293
|
+
this.children = children;
|
|
294
|
+
}
|
|
295
|
+
verify(cert) {
|
|
296
|
+
for (const child of this.children) {
|
|
297
|
+
try {
|
|
298
|
+
child.verify(cert);
|
|
299
|
+
return;
|
|
300
|
+
}
|
|
301
|
+
catch {
|
|
302
|
+
// Continue to next policy
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
throw new PolicyError(`0 of ${this.children.length} policies succeeded`);
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
/**
|
|
309
|
+
* The "all of" policy, corresponding to a logical AND between child policies.
|
|
310
|
+
* An empty list of child policies is considered trivially invalid.
|
|
311
|
+
*/
|
|
312
|
+
export class AllOf {
|
|
313
|
+
children;
|
|
314
|
+
constructor(children) {
|
|
315
|
+
this.children = children;
|
|
316
|
+
}
|
|
317
|
+
verify(cert) {
|
|
318
|
+
if (this.children.length < 1) {
|
|
319
|
+
throw new PolicyError("no child policies to verify");
|
|
320
|
+
}
|
|
321
|
+
for (const child of this.children) {
|
|
322
|
+
child.verify(cert);
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
// ============================================================================
|
|
327
|
+
// Identity Policy
|
|
328
|
+
// ============================================================================
|
|
329
|
+
/**
|
|
330
|
+
* Verifies the certificate's "identity", corresponding to the X.509v3 SAN.
|
|
331
|
+
*
|
|
332
|
+
* Identities can be verified modulo an OIDC issuer, to prevent an unexpected
|
|
333
|
+
* issuer from offering a particular identity.
|
|
334
|
+
*
|
|
335
|
+
* Supported SAN types include emails, URIs, and Sigstore-specific "other names".
|
|
336
|
+
*/
|
|
337
|
+
export class Identity {
|
|
338
|
+
identity;
|
|
339
|
+
issuerPolicy;
|
|
340
|
+
constructor(options) {
|
|
341
|
+
this.identity = options.identity;
|
|
342
|
+
this.issuerPolicy = options.issuer ? new OIDCIssuer(options.issuer) : null;
|
|
343
|
+
}
|
|
344
|
+
verify(cert) {
|
|
345
|
+
if (this.issuerPolicy) {
|
|
346
|
+
this.issuerPolicy.verify(cert);
|
|
347
|
+
}
|
|
348
|
+
const sanExt = cert.extSubjectAltName;
|
|
349
|
+
if (!sanExt) {
|
|
350
|
+
throw new PolicyError("Certificate does not contain SubjectAlternativeName extension");
|
|
351
|
+
}
|
|
352
|
+
const allSans = new Set();
|
|
353
|
+
// Add email (rfc822Name)
|
|
354
|
+
if (sanExt.rfc822Name) {
|
|
355
|
+
allSans.add(sanExt.rfc822Name);
|
|
356
|
+
}
|
|
357
|
+
// Add URI
|
|
358
|
+
if (sanExt.uri) {
|
|
359
|
+
allSans.add(sanExt.uri);
|
|
360
|
+
}
|
|
361
|
+
// Add Sigstore-specific otherName
|
|
362
|
+
const otherName = sanExt.otherName(EXTENSION_OID_OTHERNAME);
|
|
363
|
+
if (otherName) {
|
|
364
|
+
allSans.add(otherName);
|
|
365
|
+
}
|
|
366
|
+
if (!allSans.has(this.identity)) {
|
|
367
|
+
throw new PolicyError(`Certificate's SANs do not match ${this.identity}; actual SANs: ${Array.from(allSans).join(", ")}`);
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
//# sourceMappingURL=policy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"policy.js","sourceRoot":"","sources":["../src/policy.ts"],"names":[],"mappings":"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"}
|
package/dist/trust/tuf.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tuf.d.ts","sourceRoot":"","sources":["../../src/trust/tuf.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;
|
|
1
|
+
{"version":3,"file":"tuf.d.ts","sourceRoot":"","sources":["../../src/trust/tuf.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAaD;;;;;;;;;;;GAWG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,aAAa,CAAC,CAAS;IAC/B,OAAO,CAAC,WAAW,CAAC,CAAS;IAC7B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAS;IAEzB,OAAO,CAAC,SAAS,CAAC,CAAY;IAC9B,OAAO,CAAC,UAAU,CAAC,CAAc;IACjC,OAAO,CAAC,cAAc,CAAC,CAAS;gBAEpB,OAAO,GAAE,0BAA+B;IAWpD;;;OAGG;YACW,aAAa;IAwB3B;;;OAGG;YACW,cAAc;IAY5B;;OAEG;IACH,OAAO,CAAC,YAAY;IASpB;;;;;;OAMG;IACG,cAAc,IAAI,OAAO,CAAC,WAAW,CAAC;IAsC5C;;;;;OAKG;IACG,kBAAkB,IAAI,OAAO,CAAC,WAAW,CAAC;IAShD;;;OAGG;IACH,UAAU,IAAI,IAAI;CAInB"}
|
package/dist/trust/tuf.js
CHANGED
|
@@ -12,6 +12,7 @@ import { Uint8ArrayToString } from "@freedomofpress/crypto-browser";
|
|
|
12
12
|
*/
|
|
13
13
|
const DEFAULT_CONFIG = {
|
|
14
14
|
metadataUrl: 'https://tuf-repo-cdn.sigstore.dev/',
|
|
15
|
+
targetBaseUrl: 'https://tuf-repo-cdn.sigstore.dev/targets/',
|
|
15
16
|
namespace: 'sigstore-browser',
|
|
16
17
|
trustedRootTarget: 'trusted_root.json',
|
|
17
18
|
cacheTTL: 3600000, // 1 hour
|
|
@@ -41,7 +42,8 @@ export class TrustedRootProvider {
|
|
|
41
42
|
constructor(options = {}) {
|
|
42
43
|
const metadataUrl = options.metadataUrl || DEFAULT_CONFIG.metadataUrl;
|
|
43
44
|
this.metadataUrl = metadataUrl.endsWith('/') ? metadataUrl : `${metadataUrl}/`;
|
|
44
|
-
|
|
45
|
+
const targetBaseUrl = options.targetBaseUrl || DEFAULT_CONFIG.targetBaseUrl;
|
|
46
|
+
this.targetBaseUrl = targetBaseUrl.endsWith('/') ? targetBaseUrl : `${targetBaseUrl}/`;
|
|
45
47
|
this.initialRoot = options.initialRoot;
|
|
46
48
|
this.namespace = options.namespace || DEFAULT_CONFIG.namespace;
|
|
47
49
|
this.trustedRootTarget = options.trustedRootTarget || DEFAULT_CONFIG.trustedRootTarget;
|
package/dist/trust/tuf.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tuf.js","sourceRoot":"","sources":["../../src/trust/tuf.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AA6CpE;;GAEG;AACH,MAAM,cAAc,GAAG;IACrB,WAAW,EAAE,oCAAoC;IACjD,SAAS,EAAE,kBAAkB;IAC7B,iBAAiB,EAAE,mBAAmB;IACtC,QAAQ,EAAE,OAAO,EAAE,SAAS;CAC7B,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,mBAAmB;IACtB,WAAW,CAAS;IACpB,aAAa,CAAU;IACvB,WAAW,CAAU;IACrB,SAAS,CAAS;IAClB,iBAAiB,CAAS;IAC1B,QAAQ,CAAS;IAEjB,SAAS,CAAa;IACtB,UAAU,CAAe;IACzB,cAAc,CAAU;IAEhC,YAAY,UAAsC,EAAE;QAClD,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,cAAc,CAAC,WAAW,CAAC;QACtE,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,WAAW,GAAG,CAAC;QAC/E,
|
|
1
|
+
{"version":3,"file":"tuf.js","sourceRoot":"","sources":["../../src/trust/tuf.ts"],"names":[],"mappings":"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"}
|
package/dist/x509/cert.d.ts
CHANGED
|
@@ -1,6 +1,28 @@
|
|
|
1
1
|
import { ASN1Obj } from "@freedomofpress/crypto-browser";
|
|
2
|
-
import { X509AuthorityKeyIDExtension, X509BasicConstraintsExtension, X509Extension, X509FulcioIssuerV1, X509FulcioIssuerV2, X509KeyUsageExtension, X509SCTExtension, X509SubjectAlternativeNameExtension, X509SubjectKeyIDExtension } from "./ext.js";
|
|
2
|
+
import { X509AuthorityKeyIDExtension, X509BasicConstraintsExtension, X509BuildConfigDigestExtension, X509BuildConfigURIExtension, X509BuildSignerDigestExtension, X509BuildSignerURIExtension, X509BuildTriggerExtension, X509Extension, X509FulcioIssuerV1, X509FulcioIssuerV2, X509GitHubWorkflowNameExtension, X509GitHubWorkflowRefExtension, X509GitHubWorkflowRepositoryExtension, X509GitHubWorkflowSHAExtension, X509GitHubWorkflowTriggerExtension, X509KeyUsageExtension, X509RunInvocationURIExtension, X509RunnerEnvironmentExtension, X509SCTExtension, X509SourceRepositoryDigestExtension, X509SourceRepositoryIdentifierExtension, X509SourceRepositoryOwnerIdentifierExtension, X509SourceRepositoryOwnerURIExtension, X509SourceRepositoryRefExtension, X509SourceRepositoryURIExtension, X509SourceRepositoryVisibilityExtension, X509SubjectAlternativeNameExtension, X509SubjectKeyIDExtension } from "./ext.js";
|
|
3
3
|
export declare const EXTENSION_OID_SCT = "1.3.6.1.4.1.11129.2.4.2";
|
|
4
|
+
export declare const EXTENSION_OID_FULCIO_ISSUER_V1 = "1.3.6.1.4.1.57264.1.1";
|
|
5
|
+
export declare const EXTENSION_OID_GITHUB_WORKFLOW_TRIGGER = "1.3.6.1.4.1.57264.1.2";
|
|
6
|
+
export declare const EXTENSION_OID_GITHUB_WORKFLOW_SHA = "1.3.6.1.4.1.57264.1.3";
|
|
7
|
+
export declare const EXTENSION_OID_GITHUB_WORKFLOW_NAME = "1.3.6.1.4.1.57264.1.4";
|
|
8
|
+
export declare const EXTENSION_OID_GITHUB_WORKFLOW_REPOSITORY = "1.3.6.1.4.1.57264.1.5";
|
|
9
|
+
export declare const EXTENSION_OID_GITHUB_WORKFLOW_REF = "1.3.6.1.4.1.57264.1.6";
|
|
10
|
+
export declare const EXTENSION_OID_OTHERNAME = "1.3.6.1.4.1.57264.1.7";
|
|
11
|
+
export declare const EXTENSION_OID_FULCIO_ISSUER_V2 = "1.3.6.1.4.1.57264.1.8";
|
|
12
|
+
export declare const EXTENSION_OID_BUILD_SIGNER_URI = "1.3.6.1.4.1.57264.1.9";
|
|
13
|
+
export declare const EXTENSION_OID_BUILD_SIGNER_DIGEST = "1.3.6.1.4.1.57264.1.10";
|
|
14
|
+
export declare const EXTENSION_OID_RUNNER_ENVIRONMENT = "1.3.6.1.4.1.57264.1.11";
|
|
15
|
+
export declare const EXTENSION_OID_SOURCE_REPOSITORY_URI = "1.3.6.1.4.1.57264.1.12";
|
|
16
|
+
export declare const EXTENSION_OID_SOURCE_REPOSITORY_DIGEST = "1.3.6.1.4.1.57264.1.13";
|
|
17
|
+
export declare const EXTENSION_OID_SOURCE_REPOSITORY_REF = "1.3.6.1.4.1.57264.1.14";
|
|
18
|
+
export declare const EXTENSION_OID_SOURCE_REPOSITORY_IDENTIFIER = "1.3.6.1.4.1.57264.1.15";
|
|
19
|
+
export declare const EXTENSION_OID_SOURCE_REPOSITORY_OWNER_URI = "1.3.6.1.4.1.57264.1.16";
|
|
20
|
+
export declare const EXTENSION_OID_SOURCE_REPOSITORY_OWNER_IDENTIFIER = "1.3.6.1.4.1.57264.1.17";
|
|
21
|
+
export declare const EXTENSION_OID_BUILD_CONFIG_URI = "1.3.6.1.4.1.57264.1.18";
|
|
22
|
+
export declare const EXTENSION_OID_BUILD_CONFIG_DIGEST = "1.3.6.1.4.1.57264.1.19";
|
|
23
|
+
export declare const EXTENSION_OID_BUILD_TRIGGER = "1.3.6.1.4.1.57264.1.20";
|
|
24
|
+
export declare const EXTENSION_OID_RUN_INVOCATION_URI = "1.3.6.1.4.1.57264.1.21";
|
|
25
|
+
export declare const EXTENSION_OID_SOURCE_REPOSITORY_VISIBILITY = "1.3.6.1.4.1.57264.1.22";
|
|
4
26
|
export declare class X509Certificate {
|
|
5
27
|
root: ASN1Obj;
|
|
6
28
|
constructor(asn1: ASN1Obj);
|
|
@@ -39,6 +61,25 @@ export declare class X509Certificate {
|
|
|
39
61
|
get extSCT(): X509SCTExtension | undefined;
|
|
40
62
|
get extFulcioIssuerV1(): X509FulcioIssuerV1 | undefined;
|
|
41
63
|
get extFulcioIssuerV2(): X509FulcioIssuerV2 | undefined;
|
|
64
|
+
get extGitHubWorkflowTrigger(): X509GitHubWorkflowTriggerExtension | undefined;
|
|
65
|
+
get extGitHubWorkflowSHA(): X509GitHubWorkflowSHAExtension | undefined;
|
|
66
|
+
get extGitHubWorkflowName(): X509GitHubWorkflowNameExtension | undefined;
|
|
67
|
+
get extGitHubWorkflowRepository(): X509GitHubWorkflowRepositoryExtension | undefined;
|
|
68
|
+
get extGitHubWorkflowRef(): X509GitHubWorkflowRefExtension | undefined;
|
|
69
|
+
get extBuildSignerURI(): X509BuildSignerURIExtension | undefined;
|
|
70
|
+
get extBuildSignerDigest(): X509BuildSignerDigestExtension | undefined;
|
|
71
|
+
get extRunnerEnvironment(): X509RunnerEnvironmentExtension | undefined;
|
|
72
|
+
get extSourceRepositoryURI(): X509SourceRepositoryURIExtension | undefined;
|
|
73
|
+
get extSourceRepositoryDigest(): X509SourceRepositoryDigestExtension | undefined;
|
|
74
|
+
get extSourceRepositoryRef(): X509SourceRepositoryRefExtension | undefined;
|
|
75
|
+
get extSourceRepositoryIdentifier(): X509SourceRepositoryIdentifierExtension | undefined;
|
|
76
|
+
get extSourceRepositoryOwnerURI(): X509SourceRepositoryOwnerURIExtension | undefined;
|
|
77
|
+
get extSourceRepositoryOwnerIdentifier(): X509SourceRepositoryOwnerIdentifierExtension | undefined;
|
|
78
|
+
get extBuildConfigURI(): X509BuildConfigURIExtension | undefined;
|
|
79
|
+
get extBuildConfigDigest(): X509BuildConfigDigestExtension | undefined;
|
|
80
|
+
get extBuildTrigger(): X509BuildTriggerExtension | undefined;
|
|
81
|
+
get extRunInvocationURI(): X509RunInvocationURIExtension | undefined;
|
|
82
|
+
get extSourceRepositoryVisibility(): X509SourceRepositoryVisibilityExtension | undefined;
|
|
42
83
|
get isCA(): boolean;
|
|
43
84
|
extension(oid: string): X509Extension | undefined;
|
|
44
85
|
verify(issuerCertificate?: X509Certificate): Promise<boolean>;
|
package/dist/x509/cert.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cert.d.ts","sourceRoot":"","sources":["../../src/x509/cert.ts"],"names":[],"mappings":"AAeA,OAAO,EACL,OAAO,EAMR,MAAM,gCAAgC,CAAC;AAGxC,OAAO,EACL,2BAA2B,EAC3B,6BAA6B,EAC7B,aAAa,EACb,kBAAkB,EAClB,kBAAkB,EAClB,qBAAqB,EACrB,gBAAgB,EAChB,mCAAmC,EACnC,yBAAyB,EAC1B,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"cert.d.ts","sourceRoot":"","sources":["../../src/x509/cert.ts"],"names":[],"mappings":"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"}
|
package/dist/x509/cert.js
CHANGED
|
@@ -16,16 +16,39 @@ limitations under the License.
|
|
|
16
16
|
import { ASN1Obj, importKey, toDER, Uint8ArrayToBase64, uint8ArrayEqual, verifySignature, } from "@freedomofpress/crypto-browser";
|
|
17
17
|
import { KeyTypes } from "../interfaces.js";
|
|
18
18
|
import { DEFAULT_HASH_ALGORITHM, ECDSA_CURVE_NAMES, ECDSA_SIGNATURE_ALGOS, OID_RSASSA_PSS, RSA_SIGNATURE_ALGOS, SHA2_HASH_ALGOS } from "../oid.js";
|
|
19
|
-
import { X509AuthorityKeyIDExtension, X509BasicConstraintsExtension, X509Extension, X509FulcioIssuerV1, X509FulcioIssuerV2, X509KeyUsageExtension, X509SCTExtension, X509SubjectAlternativeNameExtension, X509SubjectKeyIDExtension, } from "./ext.js";
|
|
20
|
-
//
|
|
19
|
+
import { X509AuthorityKeyIDExtension, X509BasicConstraintsExtension, X509BuildConfigDigestExtension, X509BuildConfigURIExtension, X509BuildSignerDigestExtension, X509BuildSignerURIExtension, X509BuildTriggerExtension, X509Extension, X509FulcioIssuerV1, X509FulcioIssuerV2, X509GitHubWorkflowNameExtension, X509GitHubWorkflowRefExtension, X509GitHubWorkflowRepositoryExtension, X509GitHubWorkflowSHAExtension, X509GitHubWorkflowTriggerExtension, X509KeyUsageExtension, X509RunInvocationURIExtension, X509RunnerEnvironmentExtension, X509SCTExtension, X509SourceRepositoryDigestExtension, X509SourceRepositoryIdentifierExtension, X509SourceRepositoryOwnerIdentifierExtension, X509SourceRepositoryOwnerURIExtension, X509SourceRepositoryRefExtension, X509SourceRepositoryURIExtension, X509SourceRepositoryVisibilityExtension, X509SubjectAlternativeNameExtension, X509SubjectKeyIDExtension, } from "./ext.js";
|
|
20
|
+
// Standard X.509 extension OIDs
|
|
21
21
|
const EXTENSION_OID_SUBJECT_KEY_ID = "2.5.29.14";
|
|
22
22
|
const EXTENSION_OID_KEY_USAGE = "2.5.29.15";
|
|
23
23
|
const EXTENSION_OID_SUBJECT_ALT_NAME = "2.5.29.17";
|
|
24
24
|
const EXTENSION_OID_BASIC_CONSTRAINTS = "2.5.29.19";
|
|
25
25
|
const EXTENSION_OID_AUTHORITY_KEY_ID = "2.5.29.35";
|
|
26
|
-
|
|
27
|
-
const EXTENSION_OID_FULCIO_ISSUER_V2 = "1.3.6.1.4.1.57264.1.8";
|
|
26
|
+
// CT Log SCT extension OID
|
|
28
27
|
export const EXTENSION_OID_SCT = "1.3.6.1.4.1.11129.2.4.2";
|
|
28
|
+
// Fulcio extension OIDs
|
|
29
|
+
// https://github.com/sigstore/fulcio/blob/main/docs/oid-info.md
|
|
30
|
+
export const EXTENSION_OID_FULCIO_ISSUER_V1 = "1.3.6.1.4.1.57264.1.1";
|
|
31
|
+
export const EXTENSION_OID_GITHUB_WORKFLOW_TRIGGER = "1.3.6.1.4.1.57264.1.2";
|
|
32
|
+
export const EXTENSION_OID_GITHUB_WORKFLOW_SHA = "1.3.6.1.4.1.57264.1.3";
|
|
33
|
+
export const EXTENSION_OID_GITHUB_WORKFLOW_NAME = "1.3.6.1.4.1.57264.1.4";
|
|
34
|
+
export const EXTENSION_OID_GITHUB_WORKFLOW_REPOSITORY = "1.3.6.1.4.1.57264.1.5";
|
|
35
|
+
export const EXTENSION_OID_GITHUB_WORKFLOW_REF = "1.3.6.1.4.1.57264.1.6";
|
|
36
|
+
export const EXTENSION_OID_OTHERNAME = "1.3.6.1.4.1.57264.1.7";
|
|
37
|
+
export const EXTENSION_OID_FULCIO_ISSUER_V2 = "1.3.6.1.4.1.57264.1.8";
|
|
38
|
+
export const EXTENSION_OID_BUILD_SIGNER_URI = "1.3.6.1.4.1.57264.1.9";
|
|
39
|
+
export const EXTENSION_OID_BUILD_SIGNER_DIGEST = "1.3.6.1.4.1.57264.1.10";
|
|
40
|
+
export const EXTENSION_OID_RUNNER_ENVIRONMENT = "1.3.6.1.4.1.57264.1.11";
|
|
41
|
+
export const EXTENSION_OID_SOURCE_REPOSITORY_URI = "1.3.6.1.4.1.57264.1.12";
|
|
42
|
+
export const EXTENSION_OID_SOURCE_REPOSITORY_DIGEST = "1.3.6.1.4.1.57264.1.13";
|
|
43
|
+
export const EXTENSION_OID_SOURCE_REPOSITORY_REF = "1.3.6.1.4.1.57264.1.14";
|
|
44
|
+
export const EXTENSION_OID_SOURCE_REPOSITORY_IDENTIFIER = "1.3.6.1.4.1.57264.1.15";
|
|
45
|
+
export const EXTENSION_OID_SOURCE_REPOSITORY_OWNER_URI = "1.3.6.1.4.1.57264.1.16";
|
|
46
|
+
export const EXTENSION_OID_SOURCE_REPOSITORY_OWNER_IDENTIFIER = "1.3.6.1.4.1.57264.1.17";
|
|
47
|
+
export const EXTENSION_OID_BUILD_CONFIG_URI = "1.3.6.1.4.1.57264.1.18";
|
|
48
|
+
export const EXTENSION_OID_BUILD_CONFIG_DIGEST = "1.3.6.1.4.1.57264.1.19";
|
|
49
|
+
export const EXTENSION_OID_BUILD_TRIGGER = "1.3.6.1.4.1.57264.1.20";
|
|
50
|
+
export const EXTENSION_OID_RUN_INVOCATION_URI = "1.3.6.1.4.1.57264.1.21";
|
|
51
|
+
export const EXTENSION_OID_SOURCE_REPOSITORY_VISIBILITY = "1.3.6.1.4.1.57264.1.22";
|
|
29
52
|
export class X509Certificate {
|
|
30
53
|
root;
|
|
31
54
|
constructor(asn1) {
|
|
@@ -182,6 +205,82 @@ export class X509Certificate {
|
|
|
182
205
|
const ext = this.findExtension(EXTENSION_OID_FULCIO_ISSUER_V2);
|
|
183
206
|
return ext ? new X509FulcioIssuerV2(ext) : undefined;
|
|
184
207
|
}
|
|
208
|
+
get extGitHubWorkflowTrigger() {
|
|
209
|
+
const ext = this.findExtension(EXTENSION_OID_GITHUB_WORKFLOW_TRIGGER);
|
|
210
|
+
return ext ? new X509GitHubWorkflowTriggerExtension(ext) : undefined;
|
|
211
|
+
}
|
|
212
|
+
get extGitHubWorkflowSHA() {
|
|
213
|
+
const ext = this.findExtension(EXTENSION_OID_GITHUB_WORKFLOW_SHA);
|
|
214
|
+
return ext ? new X509GitHubWorkflowSHAExtension(ext) : undefined;
|
|
215
|
+
}
|
|
216
|
+
get extGitHubWorkflowName() {
|
|
217
|
+
const ext = this.findExtension(EXTENSION_OID_GITHUB_WORKFLOW_NAME);
|
|
218
|
+
return ext ? new X509GitHubWorkflowNameExtension(ext) : undefined;
|
|
219
|
+
}
|
|
220
|
+
get extGitHubWorkflowRepository() {
|
|
221
|
+
const ext = this.findExtension(EXTENSION_OID_GITHUB_WORKFLOW_REPOSITORY);
|
|
222
|
+
return ext ? new X509GitHubWorkflowRepositoryExtension(ext) : undefined;
|
|
223
|
+
}
|
|
224
|
+
get extGitHubWorkflowRef() {
|
|
225
|
+
const ext = this.findExtension(EXTENSION_OID_GITHUB_WORKFLOW_REF);
|
|
226
|
+
return ext ? new X509GitHubWorkflowRefExtension(ext) : undefined;
|
|
227
|
+
}
|
|
228
|
+
get extBuildSignerURI() {
|
|
229
|
+
const ext = this.findExtension(EXTENSION_OID_BUILD_SIGNER_URI);
|
|
230
|
+
return ext ? new X509BuildSignerURIExtension(ext) : undefined;
|
|
231
|
+
}
|
|
232
|
+
get extBuildSignerDigest() {
|
|
233
|
+
const ext = this.findExtension(EXTENSION_OID_BUILD_SIGNER_DIGEST);
|
|
234
|
+
return ext ? new X509BuildSignerDigestExtension(ext) : undefined;
|
|
235
|
+
}
|
|
236
|
+
get extRunnerEnvironment() {
|
|
237
|
+
const ext = this.findExtension(EXTENSION_OID_RUNNER_ENVIRONMENT);
|
|
238
|
+
return ext ? new X509RunnerEnvironmentExtension(ext) : undefined;
|
|
239
|
+
}
|
|
240
|
+
get extSourceRepositoryURI() {
|
|
241
|
+
const ext = this.findExtension(EXTENSION_OID_SOURCE_REPOSITORY_URI);
|
|
242
|
+
return ext ? new X509SourceRepositoryURIExtension(ext) : undefined;
|
|
243
|
+
}
|
|
244
|
+
get extSourceRepositoryDigest() {
|
|
245
|
+
const ext = this.findExtension(EXTENSION_OID_SOURCE_REPOSITORY_DIGEST);
|
|
246
|
+
return ext ? new X509SourceRepositoryDigestExtension(ext) : undefined;
|
|
247
|
+
}
|
|
248
|
+
get extSourceRepositoryRef() {
|
|
249
|
+
const ext = this.findExtension(EXTENSION_OID_SOURCE_REPOSITORY_REF);
|
|
250
|
+
return ext ? new X509SourceRepositoryRefExtension(ext) : undefined;
|
|
251
|
+
}
|
|
252
|
+
get extSourceRepositoryIdentifier() {
|
|
253
|
+
const ext = this.findExtension(EXTENSION_OID_SOURCE_REPOSITORY_IDENTIFIER);
|
|
254
|
+
return ext ? new X509SourceRepositoryIdentifierExtension(ext) : undefined;
|
|
255
|
+
}
|
|
256
|
+
get extSourceRepositoryOwnerURI() {
|
|
257
|
+
const ext = this.findExtension(EXTENSION_OID_SOURCE_REPOSITORY_OWNER_URI);
|
|
258
|
+
return ext ? new X509SourceRepositoryOwnerURIExtension(ext) : undefined;
|
|
259
|
+
}
|
|
260
|
+
get extSourceRepositoryOwnerIdentifier() {
|
|
261
|
+
const ext = this.findExtension(EXTENSION_OID_SOURCE_REPOSITORY_OWNER_IDENTIFIER);
|
|
262
|
+
return ext ? new X509SourceRepositoryOwnerIdentifierExtension(ext) : undefined;
|
|
263
|
+
}
|
|
264
|
+
get extBuildConfigURI() {
|
|
265
|
+
const ext = this.findExtension(EXTENSION_OID_BUILD_CONFIG_URI);
|
|
266
|
+
return ext ? new X509BuildConfigURIExtension(ext) : undefined;
|
|
267
|
+
}
|
|
268
|
+
get extBuildConfigDigest() {
|
|
269
|
+
const ext = this.findExtension(EXTENSION_OID_BUILD_CONFIG_DIGEST);
|
|
270
|
+
return ext ? new X509BuildConfigDigestExtension(ext) : undefined;
|
|
271
|
+
}
|
|
272
|
+
get extBuildTrigger() {
|
|
273
|
+
const ext = this.findExtension(EXTENSION_OID_BUILD_TRIGGER);
|
|
274
|
+
return ext ? new X509BuildTriggerExtension(ext) : undefined;
|
|
275
|
+
}
|
|
276
|
+
get extRunInvocationURI() {
|
|
277
|
+
const ext = this.findExtension(EXTENSION_OID_RUN_INVOCATION_URI);
|
|
278
|
+
return ext ? new X509RunInvocationURIExtension(ext) : undefined;
|
|
279
|
+
}
|
|
280
|
+
get extSourceRepositoryVisibility() {
|
|
281
|
+
const ext = this.findExtension(EXTENSION_OID_SOURCE_REPOSITORY_VISIBILITY);
|
|
282
|
+
return ext ? new X509SourceRepositoryVisibilityExtension(ext) : undefined;
|
|
283
|
+
}
|
|
185
284
|
get isCA() {
|
|
186
285
|
const ca = this.extBasicConstraints?.isCA || false;
|
|
187
286
|
// If the KeyUsage extension is present, keyCertSign must be set
|