@serve.zone/interfaces 31.8.0 → 32.0.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/.smartconfig.json +1 -0
- package/changelog.md +512 -0
- package/dist_ts/00_commitinfo_data.js +3 -3
- package/dist_ts/appstore/types.d.ts +4 -6
- package/dist_ts/appstore/types.js +5 -5
- package/dist_ts/data/backup.d.ts +3 -26
- package/dist_ts/data/cluster.d.ts +36 -11
- package/dist_ts/data/cluster.js +33 -22
- package/dist_ts/data/clusteringress.d.ts +8 -0
- package/dist_ts/data/clusteringress.js +13 -8
- package/dist_ts/data/clusternode.d.ts +121 -74
- package/dist_ts/data/clusternode.js +109 -132
- package/dist_ts/data/clusterruntime.d.ts +39 -0
- package/dist_ts/data/clusterruntime.js +11 -0
- package/dist_ts/data/coremail.d.ts +3 -7
- package/dist_ts/data/coremail.js +2 -2
- package/dist_ts/data/coremail.runtime.d.ts +0 -1
- package/dist_ts/data/coremail.runtime.js +5 -22
- package/dist_ts/data/deploymentadoption.d.ts +0 -2
- package/dist_ts/data/deploymentadoption.js +40 -6
- package/dist_ts/data/deploymentoperation.js +16 -3
- package/dist_ts/data/deploymentpreflight.d.ts +0 -2
- package/dist_ts/data/deploymentpreflight.js +1 -1
- package/dist_ts/data/immutableimage.d.ts +38 -21
- package/dist_ts/data/immutableimage.js +45 -5
- package/dist_ts/data/index.d.ts +5 -1
- package/dist_ts/data/index.js +5 -1
- package/dist_ts/data/isolatedrestore.d.ts +139 -21
- package/dist_ts/data/isolatedrestore.golden.d.ts +0 -1
- package/dist_ts/data/isolatedrestore.golden.js +6 -9
- package/dist_ts/data/isolatedrestore.js +176 -40
- package/dist_ts/data/mail.d.ts +1 -1
- package/dist_ts/data/networkaddressplan.d.ts +78 -0
- package/dist_ts/data/networkaddressplan.js +114 -0
- package/dist_ts/data/networkauthority.d.ts +20 -22
- package/dist_ts/data/networkauthority.js +29 -43
- package/dist_ts/data/networkcredential.d.ts +10 -10
- package/dist_ts/data/networkcredential.js +16 -16
- package/dist_ts/data/networkdelivery.d.ts +18 -18
- package/dist_ts/data/networkdelivery.js +16 -16
- package/dist_ts/data/networklease.d.ts +18 -7
- package/dist_ts/data/networklease.js +29 -7
- package/dist_ts/data/networknode.d.ts +37 -0
- package/dist_ts/data/networknode.js +6 -0
- package/dist_ts/data/networkprojection.d.ts +59 -60
- package/dist_ts/data/networkprojection.js +53 -57
- package/dist_ts/data/networkprotection.d.ts +27 -28
- package/dist_ts/data/networkprotection.js +36 -36
- package/dist_ts/data/networkrouter.d.ts +11 -11
- package/dist_ts/data/networkrouter.js +1 -1
- package/dist_ts/data/networksigning.d.ts +16 -18
- package/dist_ts/data/networksigning.js +20 -21
- package/dist_ts/data/nodecredential.d.ts +4 -6
- package/dist_ts/data/nodeenrollment.d.ts +35 -40
- package/dist_ts/data/nodeenrollment.js +57 -72
- package/dist_ts/data/privatenetwork.d.ts +21 -24
- package/dist_ts/data/privatenetwork.js +39 -54
- package/dist_ts/data/runtimeassignment.d.ts +50 -34
- package/dist_ts/data/runtimeassignment.js +79 -45
- package/dist_ts/data/runtimeconfig.d.ts +21 -22
- package/dist_ts/data/runtimeconfig.js +37 -100
- package/dist_ts/data/runtimesession.d.ts +100 -62
- package/dist_ts/data/runtimesession.js +98 -79
- package/dist_ts/data/runtimeterminalreceipt.d.ts +28 -29
- package/dist_ts/data/runtimeterminalreceipt.js +42 -42
- package/dist_ts/data/secret.d.ts +18 -25
- package/dist_ts/data/secret.js +12 -52
- package/dist_ts/data/servicecredential.d.ts +14 -16
- package/dist_ts/data/servicecredential.js +17 -28
- package/dist_ts/data/serviceruntime.d.ts +128 -0
- package/dist_ts/data/serviceruntime.js +92 -0
- package/dist_ts/data/sparknodereport.d.ts +27 -14
- package/dist_ts/data/sparknodereport.js +35 -28
- package/dist_ts/data/webpush.d.ts +0 -1
- package/dist_ts/index.d.ts +2 -1
- package/dist_ts/index.js +3 -2
- package/dist_ts/platform/objectstorageretention.d.ts +21 -24
- package/dist_ts/platform/objectstorageretention.js +6 -18
- package/dist_ts/platform/storage.d.ts +1 -3
- package/dist_ts/platform/storagemigration.d.ts +0 -7
- package/dist_ts/platform/storagemigration.golden.d.ts +0 -1
- package/dist_ts/platform/storagemigration.golden.js +8 -12
- package/dist_ts/platform/storagemigration.js +6 -51
- package/dist_ts/platform/types.d.ts +2 -2
- package/dist_ts/private/canonicaljson.d.ts +9 -1
- package/dist_ts/private/canonicaljson.js +14 -2
- package/dist_ts/private/dataproperties.d.ts +62 -0
- package/dist_ts/private/dataproperties.js +117 -0
- package/dist_ts/private/networkcontract.d.ts +14 -10
- package/dist_ts/private/networkcontract.js +15 -1
- package/dist_ts/private/producercontract.d.ts +11 -0
- package/dist_ts/private/producercontract.js +21 -0
- package/dist_ts/private/releaseversion.d.ts +37 -0
- package/dist_ts/private/releaseversion.js +48 -0
- package/dist_ts/private/runtimepolicy.d.ts +31 -0
- package/dist_ts/private/runtimepolicy.js +90 -0
- package/dist_ts/private/tokenlist.d.ts +9 -0
- package/dist_ts/private/tokenlist.js +23 -0
- package/dist_ts/protocol.d.ts +137 -0
- package/dist_ts/protocol.js +255 -0
- package/dist_ts/requests/admin.d.ts +8 -8
- package/dist_ts/requests/backup.d.ts +102 -112
- package/dist_ts/requests/cluster.d.ts +47 -10
- package/dist_ts/requests/cluster.js +1 -1
- package/dist_ts/requests/clusteringress.d.ts +9 -0
- package/dist_ts/requests/clusteringress.js +1 -1
- package/dist_ts/requests/config.d.ts +3 -3
- package/dist_ts/requests/corestore.d.ts +0 -3
- package/dist_ts/requests/corestore.js +5 -9
- package/dist_ts/requests/network.d.ts +87 -31
- package/dist_ts/requests/node.d.ts +15 -28
- package/dist_ts/requests/pallet.d.ts +13 -13
- package/dist_ts/requests/runtimesession.d.ts +53 -41
- package/dist_ts/requests/secret.d.ts +4 -5
- package/dist_ts/requests/secret.js +1 -5
- package/dist_ts/requests/service.d.ts +60 -0
- package/dist_ts/runtime.corestore.d.ts +56 -74
- package/dist_ts/runtime.corestore.databaseexportpackage.d.ts +30 -36
- package/dist_ts/runtime.corestore.databaseexportpackage.golden.d.ts +11 -12
- package/dist_ts/runtime.corestore.databaseexportpackage.golden.js +54 -71
- package/dist_ts/runtime.corestore.databaseexportpackage.js +9 -25
- package/dist_ts/runtime.corestore.js +35 -135
- package/dist_ts/runtime.corestore.relay.js +2 -7
- package/dist_ts/runtime.d.ts +38 -48
- package/dist_ts/runtime.js +20 -77
- package/dist_ts/runtime.networkprojection.d.ts +4 -4
- package/dist_ts/runtime.networkprojection.js +18 -18
- package/dist_ts/runtime.workloadinit.d.ts +23 -24
- package/dist_ts/runtime.workloadinit.js +6 -13
- package/package.json +2 -2
- package/readme.md +540 -269
- package/ts/00_commitinfo_data.ts +3 -3
- package/ts/appstore/types.ts +4 -6
- package/ts/data/backup.ts +3 -38
- package/ts/data/cluster.ts +51 -34
- package/ts/data/clusteringress.ts +12 -12
- package/ts/data/clusternode.ts +204 -232
- package/ts/data/clusterruntime.ts +45 -0
- package/ts/data/coremail.runtime.ts +4 -21
- package/ts/data/coremail.ts +3 -7
- package/ts/data/deploymentadoption.ts +46 -4
- package/ts/data/deploymentoperation.ts +16 -1
- package/ts/data/deploymentpreflight.ts +0 -2
- package/ts/data/immutableimage.ts +71 -24
- package/ts/data/index.ts +5 -1
- package/ts/data/isolatedrestore.golden.ts +5 -9
- package/ts/data/isolatedrestore.ts +339 -54
- package/ts/data/mail.ts +1 -1
- package/ts/data/networkaddressplan.ts +175 -0
- package/ts/data/networkauthority.ts +45 -61
- package/ts/data/networkcredential.ts +24 -24
- package/ts/data/networkdelivery.ts +27 -27
- package/ts/data/networklease.ts +40 -13
- package/ts/data/networknode.ts +37 -0
- package/ts/data/networkprojection.ts +119 -124
- package/ts/data/networkprotection.ts +54 -55
- package/ts/data/networkrouter.ts +14 -14
- package/ts/data/networksigning.ts +29 -32
- package/ts/data/nodecredential.ts +4 -6
- package/ts/data/nodeenrollment.ts +96 -114
- package/ts/data/privatenetwork.ts +58 -74
- package/ts/data/runtimeassignment.ts +143 -94
- package/ts/data/runtimeconfig.ts +62 -122
- package/ts/data/runtimesession.ts +185 -138
- package/ts/data/runtimeterminalreceipt.ts +72 -73
- package/ts/data/secret.ts +28 -76
- package/ts/data/servicecredential.ts +33 -43
- package/ts/data/serviceruntime.ts +208 -0
- package/ts/data/sparknodereport.ts +48 -36
- package/ts/data/webpush.ts +0 -1
- package/ts/index.ts +2 -0
- package/ts/platform/objectstorageretention.ts +36 -55
- package/ts/platform/storage.ts +1 -3
- package/ts/platform/storagemigration.golden.ts +7 -11
- package/ts/platform/storagemigration.ts +5 -55
- package/ts/platform/types.ts +2 -2
- package/ts/private/canonicaljson.ts +13 -1
- package/ts/private/dataproperties.ts +139 -0
- package/ts/private/networkcontract.ts +23 -9
- package/ts/private/producercontract.ts +19 -0
- package/ts/private/releaseversion.ts +70 -0
- package/ts/private/runtimepolicy.ts +105 -0
- package/ts/private/tokenlist.ts +30 -0
- package/ts/protocol.ts +364 -0
- package/ts/requests/admin.ts +11 -11
- package/ts/requests/backup.ts +112 -117
- package/ts/requests/cluster.ts +58 -13
- package/ts/requests/clusteringress.ts +9 -0
- package/ts/requests/config.ts +3 -3
- package/ts/requests/corestore.ts +4 -16
- package/ts/requests/network.ts +90 -41
- package/ts/requests/node.ts +21 -38
- package/ts/requests/pallet.ts +17 -17
- package/ts/requests/runtimesession.ts +63 -51
- package/ts/requests/secret.ts +5 -10
- package/ts/requests/service.ts +81 -0
- package/ts/runtime.corestore.databaseexportpackage.golden.ts +77 -95
- package/ts/runtime.corestore.databaseexportpackage.ts +51 -73
- package/ts/runtime.corestore.relay.ts +1 -10
- package/ts/runtime.corestore.ts +118 -268
- package/ts/runtime.networkprojection.ts +30 -30
- package/ts/runtime.ts +83 -158
- package/ts/runtime.workloadinit.ts +36 -48
- package/dist_ts/runtime.cloudlylegacydeploymentsettlement.d.ts +0 -902
- package/dist_ts/runtime.cloudlylegacydeploymentsettlement.golden.d.ts +0 -35
- package/dist_ts/runtime.cloudlylegacydeploymentsettlement.golden.js +0 -315
- package/dist_ts/runtime.cloudlylegacydeploymentsettlement.js +0 -3315
- package/dist_ts/runtime.cloudlylegacydeploymentsettlement.offlineexport.d.ts +0 -291
- package/dist_ts/runtime.cloudlylegacydeploymentsettlement.offlineexport.golden.d.ts +0 -30
- package/dist_ts/runtime.cloudlylegacydeploymentsettlement.offlineexport.golden.js +0 -408
- package/dist_ts/runtime.cloudlylegacydeploymentsettlement.offlineexport.js +0 -1126
- package/ts/runtime.cloudlylegacydeploymentsettlement.golden.ts +0 -421
- package/ts/runtime.cloudlylegacydeploymentsettlement.offlineexport.golden.ts +0 -510
- package/ts/runtime.cloudlylegacydeploymentsettlement.offlineexport.ts +0 -2470
- package/ts/runtime.cloudlylegacydeploymentsettlement.ts +0 -6630
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { TSha256Digest, TImmutableContainerPlatform } from './data/immutableimage.js';
|
|
2
2
|
import { isSha256Digest } from './data/immutableimage.js';
|
|
3
|
+
import { hasExactKeys } from './private/dataproperties.js';
|
|
3
4
|
|
|
4
5
|
export const workloadInitReleaseContract = Object.freeze({
|
|
5
6
|
packageName: '@serve.zone/workloadinit',
|
|
@@ -9,20 +10,20 @@ export const workloadInitReleaseContract = Object.freeze({
|
|
|
9
10
|
imageIndexMediaType: 'application/vnd.oci.image.index.v1+json',
|
|
10
11
|
statementType: 'https://in-toto.io/Statement/v1',
|
|
11
12
|
predicateType: 'https://slsa.dev/provenance/v1',
|
|
12
|
-
buildType: 'https://serve.zone/buildtypes/workloadinit-gitzone-tsdocker
|
|
13
|
-
builderId: 'https://serve.zone/builders/workloadinit-manual-release
|
|
13
|
+
buildType: 'https://serve.zone/buildtypes/workloadinit-gitzone-tsdocker',
|
|
14
|
+
builderId: 'https://serve.zone/builders/workloadinit-manual-release',
|
|
14
15
|
signatureFormat: 'cosign-dsse-bundle-v0.3',
|
|
15
16
|
signatureAlgorithm: 'ecdsa-p256-sha256',
|
|
16
17
|
} as const);
|
|
17
18
|
|
|
18
|
-
export interface
|
|
19
|
+
export interface IWorkloadInitBuildToolVersions {
|
|
19
20
|
dockerBuildx: string;
|
|
20
21
|
gitzone: string;
|
|
21
22
|
tsdocker: string;
|
|
22
23
|
tsrust: string;
|
|
23
24
|
}
|
|
24
25
|
|
|
25
|
-
export interface
|
|
26
|
+
export interface IWorkloadInitReleaseIdentity {
|
|
26
27
|
packageName: typeof workloadInitReleaseContract.packageName;
|
|
27
28
|
version: string;
|
|
28
29
|
sourceRepository: typeof workloadInitReleaseContract.sourceRepository;
|
|
@@ -34,7 +35,7 @@ export interface IWorkloadInitReleaseIdentityV1 {
|
|
|
34
35
|
imageTag: string;
|
|
35
36
|
}
|
|
36
37
|
|
|
37
|
-
export interface
|
|
38
|
+
export interface IWorkloadInitReleaseAttestationStatement {
|
|
38
39
|
_type: typeof workloadInitReleaseContract.statementType;
|
|
39
40
|
subject: [{
|
|
40
41
|
name: string;
|
|
@@ -69,7 +70,7 @@ export interface IWorkloadInitReleaseAttestationStatementV1 {
|
|
|
69
70
|
runDetails: {
|
|
70
71
|
builder: {
|
|
71
72
|
id: typeof workloadInitReleaseContract.builderId;
|
|
72
|
-
version:
|
|
73
|
+
version: IWorkloadInitBuildToolVersions;
|
|
73
74
|
};
|
|
74
75
|
};
|
|
75
76
|
};
|
|
@@ -79,7 +80,7 @@ export interface IWorkloadInitReleaseAttestationStatementV1 {
|
|
|
79
80
|
* Cloudly-created summary of a private DSSE verification. Shape and digest
|
|
80
81
|
* validation do not independently prove the signature or its trust policy.
|
|
81
82
|
*/
|
|
82
|
-
export interface
|
|
83
|
+
export interface IWorkloadInitCloudlyVerificationSummary {
|
|
83
84
|
signatureFormat: typeof workloadInitReleaseContract.signatureFormat;
|
|
84
85
|
signatureAlgorithm: typeof workloadInitReleaseContract.signatureAlgorithm;
|
|
85
86
|
signerKeyId: TSha256Digest;
|
|
@@ -92,32 +93,31 @@ export interface IWorkloadInitCloudlyVerificationSummaryV1 {
|
|
|
92
93
|
verifiedAt: number;
|
|
93
94
|
}
|
|
94
95
|
|
|
95
|
-
export interface
|
|
96
|
+
export interface IWorkloadInitApprovedArtifact {
|
|
96
97
|
platform: TImmutableContainerPlatform;
|
|
97
98
|
workloadInitPlatformManifestDigest: TSha256Digest;
|
|
98
99
|
workloadInitExecutableDigest: TSha256Digest;
|
|
99
100
|
}
|
|
100
101
|
|
|
101
|
-
export interface
|
|
102
|
-
|
|
103
|
-
release: IWorkloadInitReleaseIdentityV1;
|
|
102
|
+
export interface IWorkloadInitReleaseApproval {
|
|
103
|
+
release: IWorkloadInitReleaseIdentity;
|
|
104
104
|
imageIndexMediaType: typeof workloadInitReleaseContract.imageIndexMediaType;
|
|
105
105
|
workloadInitImageIndexDigest: TSha256Digest;
|
|
106
|
-
artifacts: [
|
|
107
|
-
verificationSummary:
|
|
106
|
+
artifacts: [IWorkloadInitApprovedArtifact, IWorkloadInitApprovedArtifact];
|
|
107
|
+
verificationSummary: IWorkloadInitCloudlyVerificationSummary;
|
|
108
108
|
approvedAt: number;
|
|
109
109
|
approvalDigest: TSha256Digest;
|
|
110
110
|
}
|
|
111
111
|
|
|
112
|
-
export interface
|
|
113
|
-
|
|
112
|
+
export interface IWorkloadInitApprovalAuthorityReference {
|
|
113
|
+
/** Counts Cloudly's approval decisions; a later generation supersedes an earlier one. */
|
|
114
114
|
authorityGeneration: number;
|
|
115
115
|
approvalDigest: TSha256Digest;
|
|
116
116
|
}
|
|
117
117
|
|
|
118
|
-
export interface
|
|
119
|
-
extends
|
|
120
|
-
approval:
|
|
118
|
+
export interface IWorkloadInitActiveApprovalAuthority
|
|
119
|
+
extends IWorkloadInitApprovalAuthorityReference {
|
|
120
|
+
approval: IWorkloadInitReleaseApproval;
|
|
121
121
|
}
|
|
122
122
|
|
|
123
123
|
const semanticVersionRegex = /^(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)$/;
|
|
@@ -129,11 +129,6 @@ const isRecord = (valueArg: unknown): valueArg is Record<string, unknown> => (
|
|
|
129
129
|
Boolean(valueArg) && typeof valueArg === 'object' && !Array.isArray(valueArg)
|
|
130
130
|
);
|
|
131
131
|
|
|
132
|
-
const hasExactKeys = (
|
|
133
|
-
valueArg: Record<string, unknown>,
|
|
134
|
-
keysArg: string[],
|
|
135
|
-
): boolean => JSON.stringify(Object.keys(valueArg).sort()) === JSON.stringify([...keysArg].sort());
|
|
136
|
-
|
|
137
132
|
const isPositiveSafeInteger = (valueArg: unknown): valueArg is number => (
|
|
138
133
|
Number.isSafeInteger(valueArg) && (valueArg as number) > 0
|
|
139
134
|
);
|
|
@@ -187,8 +182,8 @@ export const validateWorkloadInitReleaseIdentity = (
|
|
|
187
182
|
};
|
|
188
183
|
|
|
189
184
|
const canonicalToolVersions = (
|
|
190
|
-
versionsArg:
|
|
191
|
-
):
|
|
185
|
+
versionsArg: IWorkloadInitBuildToolVersions,
|
|
186
|
+
): IWorkloadInitBuildToolVersions => ({
|
|
192
187
|
dockerBuildx: versionsArg.dockerBuildx,
|
|
193
188
|
gitzone: versionsArg.gitzone,
|
|
194
189
|
tsdocker: versionsArg.tsdocker,
|
|
@@ -196,10 +191,10 @@ const canonicalToolVersions = (
|
|
|
196
191
|
});
|
|
197
192
|
|
|
198
193
|
export const createWorkloadInitReleaseAttestationStatement = (inputArg: {
|
|
199
|
-
release:
|
|
194
|
+
release: IWorkloadInitReleaseIdentity;
|
|
200
195
|
workloadInitImageIndexDigest: TSha256Digest;
|
|
201
|
-
toolVersions:
|
|
202
|
-
}):
|
|
196
|
+
toolVersions: IWorkloadInitBuildToolVersions;
|
|
197
|
+
}): IWorkloadInitReleaseAttestationStatement => ({
|
|
203
198
|
_type: workloadInitReleaseContract.statementType,
|
|
204
199
|
subject: [{
|
|
205
200
|
name: `${inputArg.release.imageRegistry}/${inputArg.release.imageRepository}:${
|
|
@@ -243,11 +238,11 @@ export const createWorkloadInitReleaseAttestationStatement = (inputArg: {
|
|
|
243
238
|
});
|
|
244
239
|
|
|
245
240
|
export const createWorkloadInitReleaseAttestationPayload = (
|
|
246
|
-
statementArg:
|
|
241
|
+
statementArg: IWorkloadInitReleaseAttestationStatement,
|
|
247
242
|
): Uint8Array => new TextEncoder().encode(JSON.stringify(statementArg));
|
|
248
243
|
|
|
249
244
|
export const computeWorkloadInitReleaseAttestationStatementDigest = async (
|
|
250
|
-
statementArg:
|
|
245
|
+
statementArg: IWorkloadInitReleaseAttestationStatement,
|
|
251
246
|
): Promise<TSha256Digest> => computeSha256(
|
|
252
247
|
createWorkloadInitReleaseAttestationPayload(statementArg),
|
|
253
248
|
);
|
|
@@ -396,8 +391,8 @@ export const validateWorkloadInitCloudlyVerificationSummary = (
|
|
|
396
391
|
};
|
|
397
392
|
|
|
398
393
|
const canonicalReleaseIdentity = (
|
|
399
|
-
releaseArg:
|
|
400
|
-
):
|
|
394
|
+
releaseArg: IWorkloadInitReleaseIdentity,
|
|
395
|
+
): IWorkloadInitReleaseIdentity => ({
|
|
401
396
|
packageName: releaseArg.packageName,
|
|
402
397
|
version: releaseArg.version,
|
|
403
398
|
sourceRepository: releaseArg.sourceRepository,
|
|
@@ -410,16 +405,16 @@ const canonicalReleaseIdentity = (
|
|
|
410
405
|
});
|
|
411
406
|
|
|
412
407
|
const canonicalApprovedArtifact = (
|
|
413
|
-
artifactArg:
|
|
414
|
-
):
|
|
408
|
+
artifactArg: IWorkloadInitApprovedArtifact,
|
|
409
|
+
): IWorkloadInitApprovedArtifact => ({
|
|
415
410
|
platform: artifactArg.platform,
|
|
416
411
|
workloadInitPlatformManifestDigest: artifactArg.workloadInitPlatformManifestDigest,
|
|
417
412
|
workloadInitExecutableDigest: artifactArg.workloadInitExecutableDigest,
|
|
418
413
|
});
|
|
419
414
|
|
|
420
415
|
const canonicalVerificationSummary = (
|
|
421
|
-
summaryArg:
|
|
422
|
-
):
|
|
416
|
+
summaryArg: IWorkloadInitCloudlyVerificationSummary,
|
|
417
|
+
): IWorkloadInitCloudlyVerificationSummary => ({
|
|
423
418
|
signatureFormat: summaryArg.signatureFormat,
|
|
424
419
|
signatureAlgorithm: summaryArg.signatureAlgorithm,
|
|
425
420
|
signerKeyId: summaryArg.signerKeyId,
|
|
@@ -433,9 +428,8 @@ const canonicalVerificationSummary = (
|
|
|
433
428
|
});
|
|
434
429
|
|
|
435
430
|
export const createWorkloadInitReleaseApprovalDigestInput = (
|
|
436
|
-
approvalArg:
|
|
431
|
+
approvalArg: IWorkloadInitReleaseApproval,
|
|
437
432
|
): string => JSON.stringify({
|
|
438
|
-
schemaVersion: approvalArg.schemaVersion,
|
|
439
433
|
purpose: 'serve.zone/workloadinit-release-approval',
|
|
440
434
|
release: canonicalReleaseIdentity(approvalArg.release),
|
|
441
435
|
imageIndexMediaType: approvalArg.imageIndexMediaType,
|
|
@@ -446,7 +440,7 @@ export const createWorkloadInitReleaseApprovalDigestInput = (
|
|
|
446
440
|
});
|
|
447
441
|
|
|
448
442
|
export const computeWorkloadInitReleaseApprovalDigest = async (
|
|
449
|
-
approvalArg:
|
|
443
|
+
approvalArg: IWorkloadInitReleaseApproval,
|
|
450
444
|
): Promise<TSha256Digest> => computeSha256(
|
|
451
445
|
new TextEncoder().encode(createWorkloadInitReleaseApprovalDigestInput(approvalArg)),
|
|
452
446
|
);
|
|
@@ -457,7 +451,6 @@ export const validateWorkloadInitReleaseApproval = async (
|
|
|
457
451
|
try {
|
|
458
452
|
if (!isRecord(approvalArg)
|
|
459
453
|
|| !hasExactKeys(approvalArg, [
|
|
460
|
-
'schemaVersion',
|
|
461
454
|
'release',
|
|
462
455
|
'imageIndexMediaType',
|
|
463
456
|
'workloadInitImageIndexDigest',
|
|
@@ -472,8 +465,7 @@ export const validateWorkloadInitReleaseApproval = async (
|
|
|
472
465
|
...validateWorkloadInitReleaseIdentity(approvalArg.release),
|
|
473
466
|
...validateWorkloadInitCloudlyVerificationSummary(approvalArg.verificationSummary),
|
|
474
467
|
];
|
|
475
|
-
if (approvalArg.
|
|
476
|
-
|| approvalArg.imageIndexMediaType !== workloadInitReleaseContract.imageIndexMediaType
|
|
468
|
+
if (approvalArg.imageIndexMediaType !== workloadInitReleaseContract.imageIndexMediaType
|
|
477
469
|
|| typeof approvalArg.workloadInitImageIndexDigest !== 'string'
|
|
478
470
|
|| !isSha256Digest(approvalArg.workloadInitImageIndexDigest)
|
|
479
471
|
|| !isPositiveSafeInteger(approvalArg.approvedAt)
|
|
@@ -522,7 +514,7 @@ export const validateWorkloadInitReleaseApproval = async (
|
|
|
522
514
|
}
|
|
523
515
|
if (errors.length === 0
|
|
524
516
|
&& approvalArg.approvalDigest !== await computeWorkloadInitReleaseApprovalDigest(
|
|
525
|
-
approvalArg as unknown as
|
|
517
|
+
approvalArg as unknown as IWorkloadInitReleaseApproval,
|
|
526
518
|
)) {
|
|
527
519
|
errors.push('WorkloadInit release approval digest does not match');
|
|
528
520
|
}
|
|
@@ -537,15 +529,13 @@ export const validateWorkloadInitApprovalAuthorityReference = (
|
|
|
537
529
|
): string[] => {
|
|
538
530
|
if (!isRecord(referenceArg)
|
|
539
531
|
|| !hasExactKeys(referenceArg, [
|
|
540
|
-
'authorityVersion',
|
|
541
532
|
'authorityGeneration',
|
|
542
533
|
'approvalDigest',
|
|
543
534
|
])) {
|
|
544
535
|
return ['WorkloadInit approval authority reference must use its exact schema'];
|
|
545
536
|
}
|
|
546
537
|
const errors: string[] = [];
|
|
547
|
-
if (referenceArg.
|
|
548
|
-
|| !isPositiveSafeInteger(referenceArg.authorityGeneration)
|
|
538
|
+
if (!isPositiveSafeInteger(referenceArg.authorityGeneration)
|
|
549
539
|
|| typeof referenceArg.approvalDigest !== 'string'
|
|
550
540
|
|| !isSha256Digest(referenceArg.approvalDigest)) {
|
|
551
541
|
errors.push('WorkloadInit approval authority reference fields must be canonical');
|
|
@@ -558,7 +548,6 @@ export const validateWorkloadInitActiveApprovalAuthority = async (
|
|
|
558
548
|
): Promise<string[]> => {
|
|
559
549
|
if (!isRecord(authorityArg)
|
|
560
550
|
|| !hasExactKeys(authorityArg, [
|
|
561
|
-
'authorityVersion',
|
|
562
551
|
'authorityGeneration',
|
|
563
552
|
'approvalDigest',
|
|
564
553
|
'approval',
|
|
@@ -566,7 +555,6 @@ export const validateWorkloadInitActiveApprovalAuthority = async (
|
|
|
566
555
|
return ['active WorkloadInit approval authority must use its exact schema'];
|
|
567
556
|
}
|
|
568
557
|
const reference = {
|
|
569
|
-
authorityVersion: authorityArg.authorityVersion,
|
|
570
558
|
authorityGeneration: authorityArg.authorityGeneration,
|
|
571
559
|
approvalDigest: authorityArg.approvalDigest,
|
|
572
560
|
};
|