@serve.zone/interfaces 23.2.0 → 24.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/changelog.md +9 -0
- package/dist_ts/00_commitinfo_data.js +1 -1
- package/dist_ts/appstore/types.d.ts +2 -2
- package/dist_ts/appstore/types.js +1 -1
- package/dist_ts/data/clusternode.d.ts +85 -0
- package/dist_ts/data/clusternode.js +355 -1
- package/dist_ts/data/secret.d.ts +51 -4
- package/dist_ts/data/secret.js +326 -10
- package/dist_ts/requests/secret.d.ts +33 -6
- package/dist_ts/requests/secret.js +198 -1
- package/dist_ts/runtime.d.ts +52 -29
- package/dist_ts/runtime.js +239 -94
- package/dist_ts/runtime.workloadinit.d.ts +129 -0
- package/dist_ts/runtime.workloadinit.js +405 -0
- package/package.json +1 -1
- package/readme.md +45 -17
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/appstore/types.ts +2 -2
- package/ts/data/clusternode.ts +513 -0
- package/ts/data/secret.ts +402 -16
- package/ts/requests/secret.ts +248 -6
- package/ts/runtime.ts +366 -141
- package/ts/runtime.workloadinit.ts +582 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type * as plugins from '../plugins.js';
|
|
2
|
-
import type { IResolvedSecretManifestEntry, ISecretMetadata, ISecretSetAttachment, ISecretSetConsumerRolloutStatus, ISecretSetMetadata, ISecretVersionMetadata, ISecretVersionRetentionReference,
|
|
2
|
+
import type { IResolvedSecretManifestEntry, IActiveSecretRecipientMetadata, ISecretMetadata, ISecretSetAttachment, ISecretSetConsumerRolloutStatus, ISecretSetMetadata, ISecretVersionMetadata, ISecretVersionPurgeIntentV1, ISecretVersionRetentionReference, TSecretVersionPurgeOperationV1, TSecretMutationTarget, TSecretValueInput, TSecretDelivery, TSecretEnvironment } from '../data/secret.js';
|
|
3
3
|
import type { IIdentityCredential } from '../data/user.js';
|
|
4
4
|
export interface IReq_GetSecretIngressRecipient extends plugins.typedrequestInterfaces.implementsTR<plugins.typedrequestInterfaces.ITypedRequest, IReq_GetSecretIngressRecipient> {
|
|
5
5
|
method: 'getSecretIngressRecipient';
|
|
@@ -7,7 +7,7 @@ export interface IReq_GetSecretIngressRecipient extends plugins.typedrequestInte
|
|
|
7
7
|
identity: IIdentityCredential;
|
|
8
8
|
};
|
|
9
9
|
response: {
|
|
10
|
-
recipient:
|
|
10
|
+
recipient: IActiveSecretRecipientMetadata;
|
|
11
11
|
};
|
|
12
12
|
}
|
|
13
13
|
export interface IReq_ListSecrets extends plugins.typedrequestInterfaces.implementsTR<plugins.typedrequestInterfaces.ITypedRequest, IReq_ListSecrets> {
|
|
@@ -84,7 +84,7 @@ export interface IReq_ChangeSecretLifecycle extends plugins.typedrequestInterfac
|
|
|
84
84
|
request: {
|
|
85
85
|
identity: IIdentityCredential;
|
|
86
86
|
secretId: string;
|
|
87
|
-
action: 'retire' | 'revoke' | 'delete'
|
|
87
|
+
action: 'retire' | 'revoke' | 'delete';
|
|
88
88
|
expectedSecretRevision: number;
|
|
89
89
|
expectedTargetSecretsRevision: number;
|
|
90
90
|
};
|
|
@@ -99,10 +99,34 @@ export interface IReq_GetSecretVersionPurgePreflight extends plugins.typedreques
|
|
|
99
99
|
identity: IIdentityCredential;
|
|
100
100
|
secretId: string;
|
|
101
101
|
secretVersionId: string;
|
|
102
|
+
cursor?: string;
|
|
103
|
+
limit?: number;
|
|
102
104
|
};
|
|
103
105
|
response: {
|
|
104
|
-
|
|
106
|
+
schemaVersion: 1;
|
|
107
|
+
secret: ISecretMetadata;
|
|
108
|
+
version: ISecretVersionMetadata;
|
|
109
|
+
targetSecretsRevision: number;
|
|
110
|
+
eligible: boolean;
|
|
111
|
+
blockers: TSecretVersionPurgeBlocker[];
|
|
112
|
+
blockingReferenceCount: number;
|
|
105
113
|
references: ISecretVersionRetentionReference[];
|
|
114
|
+
nextCursor?: string;
|
|
115
|
+
referencesTruncated: boolean;
|
|
116
|
+
operation?: TSecretVersionPurgeOperationV1;
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
export type TSecretVersionPurgeBlocker = 'version-active' | 'retention-reference' | 'purge-pending' | 'already-purged';
|
|
120
|
+
export interface IReq_PurgeSecretVersion extends plugins.typedrequestInterfaces.implementsTR<plugins.typedrequestInterfaces.ITypedRequest, IReq_PurgeSecretVersion> {
|
|
121
|
+
method: 'purgeSecretVersion';
|
|
122
|
+
request: ISecretVersionPurgeIntentV1 & {
|
|
123
|
+
identity: IIdentityCredential;
|
|
124
|
+
};
|
|
125
|
+
response: {
|
|
126
|
+
secret: ISecretMetadata;
|
|
127
|
+
version: ISecretVersionMetadata;
|
|
128
|
+
operation: TSecretVersionPurgeOperationV1;
|
|
129
|
+
targetSecretsRevision: number;
|
|
106
130
|
};
|
|
107
131
|
}
|
|
108
132
|
export interface IReq_ListSecretSets extends plugins.typedrequestInterfaces.implementsTR<plugins.typedrequestInterfaces.ITypedRequest, IReq_ListSecretSets> {
|
|
@@ -200,5 +224,8 @@ export interface IReq_PreviewServiceSecretResolution extends plugins.typedreques
|
|
|
200
224
|
collisions: ISecretResolutionPreviewCollision[];
|
|
201
225
|
};
|
|
202
226
|
}
|
|
203
|
-
export declare const validateCreateSecretRequest: (requestArg: unknown, activeIngressRecipientArg:
|
|
204
|
-
export declare const validateRotateSecretRequest: (requestArg: unknown, activeIngressRecipientArg:
|
|
227
|
+
export declare const validateCreateSecretRequest: (requestArg: unknown, activeIngressRecipientArg: IActiveSecretRecipientMetadata) => Promise<string[]>;
|
|
228
|
+
export declare const validateRotateSecretRequest: (requestArg: unknown, activeIngressRecipientArg: IActiveSecretRecipientMetadata) => Promise<string[]>;
|
|
229
|
+
export declare const validatePurgeSecretVersionRequest: (requestArg: unknown) => string[];
|
|
230
|
+
export declare const validateGetSecretVersionPurgePreflightRequest: (requestArg: unknown) => string[];
|
|
231
|
+
export declare const validateSecretVersionPurgePreflightResponse: (responseArg: unknown) => Promise<string[]>;
|
|
@@ -158,4 +158,201 @@ export const validateRotateSecretRequest = async (requestArg, activeIngressRecip
|
|
|
158
158
|
errors.push(...await secretData.validateSecretValueInputForRecipient(request.valueInput, activeIngressRecipientArg, expectedContext));
|
|
159
159
|
return errors;
|
|
160
160
|
};
|
|
161
|
-
|
|
161
|
+
export const validatePurgeSecretVersionRequest = (requestArg) => {
|
|
162
|
+
try {
|
|
163
|
+
if (!isRecord(requestArg))
|
|
164
|
+
return ['purge secret version request must be an object'];
|
|
165
|
+
const request = requestArg;
|
|
166
|
+
const intent = Object.fromEntries(Object.entries(request).filter(([keyArg]) => keyArg !== 'identity'));
|
|
167
|
+
const errors = secretData.validateSecretVersionPurgeIntent(intent);
|
|
168
|
+
if (!request.identity || typeof request.identity !== 'object' || Array.isArray(request.identity)
|
|
169
|
+
|| JSON.stringify(Object.keys(request.identity).sort()) !== JSON.stringify(['jwt'])
|
|
170
|
+
|| typeof request.identity.jwt !== 'string'
|
|
171
|
+
|| !request.identity.jwt) {
|
|
172
|
+
errors.push('purge secret version request requires only a JWT identity');
|
|
173
|
+
}
|
|
174
|
+
return errors;
|
|
175
|
+
}
|
|
176
|
+
catch {
|
|
177
|
+
return ['purge secret version request must be safely inspectable'];
|
|
178
|
+
}
|
|
179
|
+
};
|
|
180
|
+
export const validateGetSecretVersionPurgePreflightRequest = (requestArg) => {
|
|
181
|
+
try {
|
|
182
|
+
if (!isRecord(requestArg)) {
|
|
183
|
+
return ['secret version purge preflight request must be an object'];
|
|
184
|
+
}
|
|
185
|
+
const expectedKeys = [
|
|
186
|
+
'identity',
|
|
187
|
+
'secretId',
|
|
188
|
+
'secretVersionId',
|
|
189
|
+
...(requestArg.cursor === undefined ? [] : ['cursor']),
|
|
190
|
+
...(requestArg.limit === undefined ? [] : ['limit']),
|
|
191
|
+
];
|
|
192
|
+
const errors = [];
|
|
193
|
+
if (JSON.stringify(Object.keys(requestArg).sort())
|
|
194
|
+
!== JSON.stringify(expectedKeys.sort())) {
|
|
195
|
+
errors.push('secret version purge preflight request must use its exact schema');
|
|
196
|
+
}
|
|
197
|
+
if (!isRecord(requestArg.identity)
|
|
198
|
+
|| JSON.stringify(Object.keys(requestArg.identity).sort()) !== JSON.stringify(['jwt'])
|
|
199
|
+
|| typeof requestArg.identity.jwt !== 'string'
|
|
200
|
+
|| !requestArg.identity.jwt) {
|
|
201
|
+
errors.push('secret version purge preflight request requires only a JWT identity');
|
|
202
|
+
}
|
|
203
|
+
for (const field of ['secretId', 'secretVersionId']) {
|
|
204
|
+
if (typeof requestArg[field] !== 'string'
|
|
205
|
+
|| !/^[A-Za-z0-9][A-Za-z0-9:._-]{0,199}$/.test(requestArg[field])) {
|
|
206
|
+
errors.push(`secret version purge preflight ${field} must be canonical`);
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
if (requestArg.cursor !== undefined
|
|
210
|
+
&& (typeof requestArg.cursor !== 'string' || requestArg.cursor.length === 0)) {
|
|
211
|
+
errors.push('secret version purge preflight cursor must be opaque and non-empty');
|
|
212
|
+
}
|
|
213
|
+
if (requestArg.limit !== undefined
|
|
214
|
+
&& (!Number.isSafeInteger(requestArg.limit)
|
|
215
|
+
|| requestArg.limit < 1
|
|
216
|
+
|| requestArg.limit
|
|
217
|
+
> secretData.secretVersionRetentionReferenceLimits.pageSizeMaximum)) {
|
|
218
|
+
errors.push('secret version purge preflight limit must be bounded');
|
|
219
|
+
}
|
|
220
|
+
return errors;
|
|
221
|
+
}
|
|
222
|
+
catch {
|
|
223
|
+
return ['secret version purge preflight request must be safely inspectable'];
|
|
224
|
+
}
|
|
225
|
+
};
|
|
226
|
+
export const validateSecretVersionPurgePreflightResponse = async (responseArg) => {
|
|
227
|
+
try {
|
|
228
|
+
if (!isRecord(responseArg)) {
|
|
229
|
+
return ['secret version purge preflight response must be an object'];
|
|
230
|
+
}
|
|
231
|
+
const response = responseArg;
|
|
232
|
+
const expectedKeys = [
|
|
233
|
+
'schemaVersion',
|
|
234
|
+
'secret',
|
|
235
|
+
'version',
|
|
236
|
+
'targetSecretsRevision',
|
|
237
|
+
'eligible',
|
|
238
|
+
'blockers',
|
|
239
|
+
'blockingReferenceCount',
|
|
240
|
+
'references',
|
|
241
|
+
'referencesTruncated',
|
|
242
|
+
...(response.nextCursor === undefined ? [] : ['nextCursor']),
|
|
243
|
+
...(response.operation === undefined ? [] : ['operation']),
|
|
244
|
+
];
|
|
245
|
+
const errors = [];
|
|
246
|
+
if (JSON.stringify(Object.keys(response).sort())
|
|
247
|
+
!== JSON.stringify([...expectedKeys].sort())) {
|
|
248
|
+
errors.push('secret version purge preflight response must use its exact schema');
|
|
249
|
+
}
|
|
250
|
+
if (response.schemaVersion !== 1) {
|
|
251
|
+
errors.push('secret version purge preflight response schemaVersion must be 1');
|
|
252
|
+
}
|
|
253
|
+
if (secretData.validateSecretVersionMetadata(response.version).length > 0) {
|
|
254
|
+
errors.push('secret version purge preflight version must be canonical');
|
|
255
|
+
}
|
|
256
|
+
if (secretData.validateSecretMetadata(response.secret).length > 0) {
|
|
257
|
+
errors.push('secret version purge preflight secret must be canonical');
|
|
258
|
+
}
|
|
259
|
+
if (isRecord(response.secret)
|
|
260
|
+
&& isRecord(response.version)
|
|
261
|
+
&& response.version.secretId !== response.secret.id) {
|
|
262
|
+
errors.push('secret version purge preflight version must belong to its secret');
|
|
263
|
+
}
|
|
264
|
+
if (!Number.isSafeInteger(response.targetSecretsRevision)
|
|
265
|
+
|| response.targetSecretsRevision < 0) {
|
|
266
|
+
errors.push('secret version purge preflight target revision must be non-negative');
|
|
267
|
+
}
|
|
268
|
+
const allowedBlockers = new Set([
|
|
269
|
+
'version-active',
|
|
270
|
+
'retention-reference',
|
|
271
|
+
'purge-pending',
|
|
272
|
+
'already-purged',
|
|
273
|
+
]);
|
|
274
|
+
if (!Array.isArray(response.blockers)
|
|
275
|
+
|| response.blockers.some((blockerArg) => !allowedBlockers.has(blockerArg))
|
|
276
|
+
|| new Set(response.blockers).size !== response.blockers.length
|
|
277
|
+
|| JSON.stringify(response.blockers) !== JSON.stringify([...response.blockers].sort())) {
|
|
278
|
+
errors.push('secret version purge preflight blockers must be uniquely sorted');
|
|
279
|
+
}
|
|
280
|
+
if (typeof response.eligible !== 'boolean'
|
|
281
|
+
|| response.eligible !== (Array.isArray(response.blockers) && response.blockers.length === 0)) {
|
|
282
|
+
errors.push('secret version purge preflight eligibility must be derived from blockers');
|
|
283
|
+
}
|
|
284
|
+
if (!Number.isSafeInteger(response.blockingReferenceCount)
|
|
285
|
+
|| response.blockingReferenceCount < 0) {
|
|
286
|
+
errors.push('secret version purge preflight reference count must be non-negative');
|
|
287
|
+
}
|
|
288
|
+
errors.push(...secretData.validateSecretVersionRetentionReferences(response.references));
|
|
289
|
+
if (typeof response.referencesTruncated !== 'boolean') {
|
|
290
|
+
errors.push('secret version purge preflight referencesTruncated must be boolean');
|
|
291
|
+
}
|
|
292
|
+
if (response.nextCursor !== undefined
|
|
293
|
+
&& (typeof response.nextCursor !== 'string' || response.nextCursor.length === 0)) {
|
|
294
|
+
errors.push('secret version purge preflight nextCursor must be opaque and non-empty');
|
|
295
|
+
}
|
|
296
|
+
if (response.referencesTruncated !== (response.nextCursor !== undefined)) {
|
|
297
|
+
errors.push('secret version purge preflight truncation must match nextCursor presence');
|
|
298
|
+
}
|
|
299
|
+
if (Array.isArray(response.references)
|
|
300
|
+
&& Number.isSafeInteger(response.blockingReferenceCount)
|
|
301
|
+
&& response.blockingReferenceCount < response.references.length) {
|
|
302
|
+
errors.push('secret version purge preflight reference count cannot be smaller than its page');
|
|
303
|
+
}
|
|
304
|
+
if (Array.isArray(response.blockers)
|
|
305
|
+
&& isRecord(response.version)
|
|
306
|
+
&& Number.isSafeInteger(response.blockingReferenceCount)) {
|
|
307
|
+
const expectedBlockers = [];
|
|
308
|
+
if (response.version.lifecycleState === 'active')
|
|
309
|
+
expectedBlockers.push('version-active');
|
|
310
|
+
if (response.blockingReferenceCount > 0) {
|
|
311
|
+
expectedBlockers.push('retention-reference');
|
|
312
|
+
}
|
|
313
|
+
if (response.version.lifecycleState === 'purge-pending') {
|
|
314
|
+
expectedBlockers.push('purge-pending');
|
|
315
|
+
}
|
|
316
|
+
if (response.version.lifecycleState === 'purged')
|
|
317
|
+
expectedBlockers.push('already-purged');
|
|
318
|
+
expectedBlockers.sort();
|
|
319
|
+
if (JSON.stringify(response.blockers) !== JSON.stringify(expectedBlockers)) {
|
|
320
|
+
errors.push('secret version purge preflight blockers do not match current state');
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
if (response.operation !== undefined) {
|
|
324
|
+
errors.push(...await secretData.validateSecretVersionPurgeOperation(response.operation));
|
|
325
|
+
if (isRecord(response.operation)
|
|
326
|
+
&& isRecord(response.operation.intent)
|
|
327
|
+
&& isRecord(response.secret)
|
|
328
|
+
&& isRecord(response.version)
|
|
329
|
+
&& (response.operation.id !== response.version.purgeOperationId
|
|
330
|
+
|| response.operation.intent.secretId !== response.secret.id
|
|
331
|
+
|| response.operation.intent.secretVersionId !== response.version.id)) {
|
|
332
|
+
errors.push('secret version purge preflight operation does not match its version');
|
|
333
|
+
}
|
|
334
|
+
if (isRecord(response.operation) && isRecord(response.version)) {
|
|
335
|
+
if (response.version.lifecycleState === 'purge-pending'
|
|
336
|
+
&& response.operation.state === 'succeeded') {
|
|
337
|
+
errors.push('purge-pending version cannot have a succeeded purge operation');
|
|
338
|
+
}
|
|
339
|
+
if (response.version.lifecycleState === 'purged'
|
|
340
|
+
&& (response.operation.state !== 'succeeded'
|
|
341
|
+
|| response.operation.purgedAt !== response.version.purgedAt)) {
|
|
342
|
+
errors.push('purged version requires the matching succeeded purge operation');
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
if (isRecord(response.version)
|
|
347
|
+
&& (response.version.lifecycleState === 'purge-pending'
|
|
348
|
+
|| response.version.lifecycleState === 'purged')
|
|
349
|
+
&& response.operation === undefined) {
|
|
350
|
+
errors.push('secret version purge preflight purging state requires its operation');
|
|
351
|
+
}
|
|
352
|
+
return errors;
|
|
353
|
+
}
|
|
354
|
+
catch {
|
|
355
|
+
return ['secret version purge preflight response must be safely inspectable'];
|
|
356
|
+
}
|
|
357
|
+
};
|
|
358
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjcmV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdHMvcmVxdWVzdHMvc2VjcmV0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sS0FBSyxVQUFVLE1BQU0sbUJBQW1CLENBQUM7QUF3VGhELE1BQU0sUUFBUSxHQUFHLENBQUMsUUFBaUIsRUFBdUMsRUFBRSxDQUFDLENBQzNFLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxPQUFPLFFBQVEsS0FBSyxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUM5RSxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQUcsS0FBSyxFQUM5QyxVQUFtQixFQUNuQix5QkFBeUQsRUFDdEMsRUFBRTtJQUNyQixJQUFJLENBQUMsVUFBVSxJQUFJLE9BQU8sVUFBVSxLQUFLLFFBQVEsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7UUFDL0UsT0FBTyxDQUFDLHlDQUF5QyxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUNELE1BQU0sT0FBTyxHQUFHLFVBQXFDLENBQUM7SUFDdEQsTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDLHdCQUF3QixDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN2RSxNQUFNLFdBQVcsR0FBRyxJQUFJLEdBQUcsQ0FBQztRQUMxQixVQUFVO1FBQ1YsWUFBWTtRQUNaLFFBQVE7UUFDUixLQUFLO1FBQ0wsYUFBYTtRQUNiLE1BQU07UUFDTixhQUFhO1FBQ2IsTUFBTTtRQUNOLFVBQVU7UUFDVixZQUFZO1FBQ1osK0JBQStCO0tBQ2hDLENBQUMsQ0FBQztJQUNILElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENB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
|
package/dist_ts/runtime.d.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import * as plugins from './plugins.js';
|
|
2
|
-
import type { IActiveSecretRecipientMetadata, IClusterSecretDeploymentState, ICoreflowRuntimeCapabilities, IIdentityCredential, IResolvedSecretManifest, IResolvedSecretManifestReference, TSha256Digest,
|
|
2
|
+
import type { IActiveSecretRecipientMetadata, IClusterRuntimeTargetSetReadyV1, IClusterRuntimeTargetV1, IClusterSecretDeploymentState, ICoreflowRuntimeCapabilities, IIdentityCredential, IResolvedSecretManifest, IResolvedSecretManifestReference, TSha256Digest, TSecretRecipientMetadata } from './data/index.js';
|
|
3
3
|
import { validateSecretRecipientMetadata } from './data/secret.js';
|
|
4
|
+
import type { IWorkloadInitActiveApprovalAuthorityV1, IWorkloadInitApprovalAuthorityReferenceV1 } from './runtime.workloadinit.js';
|
|
5
|
+
export * from './runtime.workloadinit.js';
|
|
4
6
|
export interface ISealedResolvedSecretMaterialEntry {
|
|
5
7
|
secretVersionId: string;
|
|
6
8
|
envelope: plugins.smartcrypto.IX25519EnvelopeV1;
|
|
@@ -91,6 +93,23 @@ export declare const validateBeginSecretRecipientEnrollmentRequest: (requestArg:
|
|
|
91
93
|
export declare const validateSecretRecipientEnrollmentChallenge: (challengeArg: unknown) => Promise<string[]>;
|
|
92
94
|
export declare const validateCompleteSecretRecipientEnrollmentRequest: (requestArg: unknown) => string[];
|
|
93
95
|
export { validateSecretRecipientMetadata };
|
|
96
|
+
/**
|
|
97
|
+
* Reproducible binding persisted inside a trusted Cloudly mutation receipt.
|
|
98
|
+
* This value alone does not prove that Cloudly admitted the envelope.
|
|
99
|
+
*/
|
|
100
|
+
export interface ISecretEnvelopeAdmissionBindingV1 {
|
|
101
|
+
schemaVersion: 1;
|
|
102
|
+
recipientKeyId: string;
|
|
103
|
+
recipientGeneration: number;
|
|
104
|
+
envelopeDigest: TSha256Digest;
|
|
105
|
+
requestContextDigest: TSha256Digest;
|
|
106
|
+
}
|
|
107
|
+
export declare const createSecretEnvelopeDigestInput: (envelopeArg: unknown) => string;
|
|
108
|
+
export declare const computeSecretEnvelopeDigest: (envelopeArg: unknown) => Promise<TSha256Digest>;
|
|
109
|
+
export declare const computeSecretRequestContextDigest: (contextArg: Uint8Array) => Promise<TSha256Digest>;
|
|
110
|
+
export declare const validateSecretEnvelopeAdmissionBinding: (bindingArg: unknown) => string[];
|
|
111
|
+
export declare const createSecretEnvelopeAdmissionBinding: (recipientArg: IActiveSecretRecipientMetadata, envelopeArg: unknown, requestContextArg: Uint8Array) => Promise<ISecretEnvelopeAdmissionBindingV1>;
|
|
112
|
+
export declare const verifySecretEnvelopeAdmissionBinding: (bindingArg: unknown, envelopeArg: unknown, requestContextArg: Uint8Array) => Promise<boolean>;
|
|
94
113
|
export type TSecretRecipientEnrollmentStateV1 = {
|
|
95
114
|
schemaVersion: 1;
|
|
96
115
|
generation: 0;
|
|
@@ -110,60 +129,64 @@ export interface IReq_GetSecretRecipientEnrollmentState extends plugins.typedreq
|
|
|
110
129
|
}
|
|
111
130
|
export declare const validateGetSecretRecipientEnrollmentStateRequest: (requestArg: unknown) => string[];
|
|
112
131
|
export declare const validateSecretRecipientEnrollmentState: (stateArg: unknown) => string[];
|
|
113
|
-
export interface
|
|
114
|
-
nodeId: string;
|
|
115
|
-
nodeName: string;
|
|
116
|
-
platform: TImmutableContainerPlatform;
|
|
117
|
-
}
|
|
118
|
-
export interface ICoreflowSecretRuntimeNodeEvidenceV1 extends ICoreflowSecretRuntimeNodeTargetV1 {
|
|
119
|
-
workloadInitPlatformManifestDigest: TSha256Digest;
|
|
120
|
-
workloadInitExecutableDigest: TSha256Digest;
|
|
132
|
+
export interface ICoreflowSecretRuntimeNodeTargetV2 extends IClusterRuntimeTargetV1 {
|
|
121
133
|
}
|
|
122
|
-
export interface
|
|
123
|
-
platform: TImmutableContainerPlatform;
|
|
134
|
+
export interface ICoreflowSecretRuntimeNodeEvidenceV2 extends ICoreflowSecretRuntimeNodeTargetV2 {
|
|
124
135
|
workloadInitPlatformManifestDigest: TSha256Digest;
|
|
125
136
|
workloadInitExecutableDigest: TSha256Digest;
|
|
126
137
|
}
|
|
127
|
-
export interface
|
|
128
|
-
expectationVersion:
|
|
138
|
+
export interface ICoreflowSecretRuntimeRegistrationExpectationV2 {
|
|
139
|
+
expectationVersion: 2;
|
|
140
|
+
expectationDigest: TSha256Digest;
|
|
129
141
|
reporterSessionId: string;
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
workloadInitArtifacts: ICoreflowSecretRuntimeArtifactV1[];
|
|
142
|
+
targetAuthority: IClusterRuntimeTargetSetReadyV1;
|
|
143
|
+
workloadInitAuthority: IWorkloadInitActiveApprovalAuthorityV1;
|
|
133
144
|
activeRecipient: IActiveSecretRecipientMetadata;
|
|
134
145
|
}
|
|
135
|
-
/** Dedicated TypedSocket tag carrying
|
|
146
|
+
/** Dedicated TypedSocket tag carrying ICoreflowSecretRuntimeRegistrationV2. */
|
|
136
147
|
export declare const coreflowSecretRuntimeRegistrationTagId: "coreflowSecretRuntimeRegistration";
|
|
148
|
+
export type TCoreflowSecretRuntimeRegistrationExpectationResponseV2 = {
|
|
149
|
+
status: 'available';
|
|
150
|
+
expectation: ICoreflowSecretRuntimeRegistrationExpectationV2;
|
|
151
|
+
} | {
|
|
152
|
+
status: 'unavailable';
|
|
153
|
+
reason: 'recipient-unavailable' | 'workloadinit-unconfigured' | 'workloadinit-revoked' | 'targets-unavailable';
|
|
154
|
+
};
|
|
137
155
|
/** Cluster scope is derived exclusively from the verified cluster JWT. */
|
|
138
156
|
export interface IReq_GetCoreflowSecretRuntimeRegistrationExpectation extends plugins.typedrequestInterfaces.implementsTR<plugins.typedrequestInterfaces.ITypedRequest, IReq_GetCoreflowSecretRuntimeRegistrationExpectation> {
|
|
139
157
|
method: 'getCoreflowSecretRuntimeRegistrationExpectation';
|
|
140
158
|
request: {
|
|
141
159
|
identity: IIdentityCredential;
|
|
142
160
|
};
|
|
143
|
-
response:
|
|
144
|
-
expectation: ICoreflowSecretRuntimeRegistrationExpectationV1;
|
|
145
|
-
};
|
|
161
|
+
response: TCoreflowSecretRuntimeRegistrationExpectationResponseV2;
|
|
146
162
|
}
|
|
147
163
|
export declare const validateGetCoreflowSecretRuntimeRegistrationExpectationRequest: (requestArg: unknown) => string[];
|
|
148
|
-
export interface
|
|
149
|
-
registrationVersion:
|
|
164
|
+
export interface ICoreflowSecretRuntimeRegistrationV2 {
|
|
165
|
+
registrationVersion: 2;
|
|
166
|
+
expectationDigest: TSha256Digest;
|
|
150
167
|
reporterSessionId: string;
|
|
151
168
|
registeredAt: number;
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
169
|
+
targetGeneration: number;
|
|
170
|
+
targetSetDigest: TSha256Digest;
|
|
171
|
+
targets: ICoreflowSecretRuntimeNodeTargetV2[];
|
|
172
|
+
nodeEvidence: ICoreflowSecretRuntimeNodeEvidenceV2[];
|
|
155
173
|
capabilities: ICoreflowRuntimeCapabilities;
|
|
156
174
|
activeRecipient: IActiveSecretRecipientMetadata;
|
|
175
|
+
workloadInitAuthority: IWorkloadInitApprovalAuthorityReferenceV1;
|
|
157
176
|
workloadInitImageIndexDigest: TSha256Digest;
|
|
158
|
-
workloadInitApprovedAt: number;
|
|
159
177
|
}
|
|
160
|
-
export declare const
|
|
161
|
-
export declare const
|
|
178
|
+
export declare const createCoreflowSecretRuntimeRegistrationExpectationDigestInput: (expectationArg: ICoreflowSecretRuntimeRegistrationExpectationV2) => string;
|
|
179
|
+
export declare const computeCoreflowSecretRuntimeRegistrationExpectationDigest: (expectationArg: ICoreflowSecretRuntimeRegistrationExpectationV2) => Promise<TSha256Digest>;
|
|
180
|
+
/**
|
|
181
|
+
* Validates only a Cloudly-created expectation. It does not establish the
|
|
182
|
+
* private DSSE trust decision or Spark manager consensus that produced it.
|
|
183
|
+
*/
|
|
184
|
+
export declare const validateCoreflowSecretRuntimeRegistrationExpectation: (expectationArg: unknown, trustedNowArg: number) => Promise<string[]>;
|
|
162
185
|
/**
|
|
163
186
|
* Consumers discard this registration on transport disconnect, tag
|
|
164
187
|
* removal/replacement, reporter-session change, or any expectation change.
|
|
165
188
|
*/
|
|
166
|
-
export declare const validateCoreflowSecretRuntimeRegistration: (registrationArg: unknown, expectationArg: unknown) => Promise<string[]>;
|
|
189
|
+
export declare const validateCoreflowSecretRuntimeRegistration: (registrationArg: unknown, expectationArg: unknown, trustedNowArg: number) => Promise<string[]>;
|
|
167
190
|
interface ISecretDeploymentReportBaseV1 {
|
|
168
191
|
schemaVersion: 1;
|
|
169
192
|
reporterSessionId: string;
|