borgmcp-shared 0.2.2 → 0.3.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 +30 -21
- package/dist/conformance/adapter.d.ts +29 -2
- package/dist/conformance/adapter.d.ts.map +1 -1
- package/dist/conformance/adapter.js +202 -14
- package/dist/conformance/adapter.js.map +1 -1
- package/dist/conformance/index.d.ts +49 -0
- package/dist/conformance/index.d.ts.map +1 -1
- package/dist/conformance/index.js +111 -0
- package/dist/conformance/index.js.map +1 -1
- package/dist/protocol/contract.d.ts +41 -6
- package/dist/protocol/contract.d.ts.map +1 -1
- package/dist/protocol/contract.js +82 -15
- package/dist/protocol/contract.js.map +1 -1
- package/dist/protocol/version.d.ts.map +1 -1
- package/dist/protocol/version.js +6 -1
- package/dist/protocol/version.js.map +1 -1
- package/docs/compatibility.md +40 -9
- package/docs/enrollment.md +160 -0
- package/docs/releasing.md +71 -6
- package/package.json +2 -1
- package/src/conformance/adapter.ts +364 -15
- package/src/conformance/index.ts +139 -0
- package/src/protocol/contract.ts +139 -23
- package/src/protocol/version.ts +6 -1
package/README.md
CHANGED
|
@@ -56,16 +56,23 @@ functions and contracts include API documentation in their TypeScript sources.
|
|
|
56
56
|
|
|
57
57
|
## Handshake
|
|
58
58
|
|
|
59
|
-
The first-slice HTTP contract has
|
|
59
|
+
The first-slice HTTP contract has four shared paths:
|
|
60
60
|
|
|
61
61
|
- `GET /healthz` is the only unauthenticated liveness probe. Success is `204`
|
|
62
62
|
with no body or identifying metadata.
|
|
63
|
-
- `POST /api/enrollment/exchange` accepts a single-use invitation
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
63
|
+
- `POST /api/enrollment/exchange` accepts a single-use invitation, canonical
|
|
64
|
+
retry key, and client-generated 256-bit bearer in a bounded JSON body over
|
|
65
|
+
verified TLS. It returns only stable non-secret client identity and server
|
|
66
|
+
capabilities; owner enrollment grants `create_cube` but creates no cube. An exact
|
|
67
|
+
credential-proven retry is non-mutating, and a mismatched replay fails
|
|
68
|
+
uniformly. Secrets never belong in a response, URL, query string, command-line
|
|
69
|
+
argument, diagnostic, or serializable domain entity.
|
|
67
70
|
- `GET /api/protocol` requires authentication and returns the protocol version,
|
|
68
71
|
package version, capabilities, and bounded limits in the shared envelope.
|
|
72
|
+
- `POST /api/cubes` requires an active parent client with `create_cube`. Its
|
|
73
|
+
strict, idempotent request selects a server-owned template; one atomic success
|
|
74
|
+
creates a cube, two initial roles, and the creator's cube-scoped `manage`
|
|
75
|
+
grant. Exact retries return the same non-secret identities without mutation.
|
|
69
76
|
|
|
70
77
|
`negotiateProtocol` requires bearer authentication, revocation, cube isolation,
|
|
71
78
|
verified TLS, and no-cloud-fallback capabilities. Missing security capabilities
|
|
@@ -76,6 +83,8 @@ Every JSON coordination request and successful JSON response is carried inside
|
|
|
76
83
|
exceptions are the `204` liveness and acknowledgement responses. Payload codecs
|
|
77
84
|
are exported separately so adapters can validate the envelope first and then
|
|
78
85
|
validate the operation-specific payload without accepting ambiguous fields.
|
|
86
|
+
See [docs/enrollment.md](docs/enrollment.md) for purpose-bound owner enrollment,
|
|
87
|
+
ordinary ungranted enrollment, cube creation, pending-keychain, and retry contracts.
|
|
79
88
|
|
|
80
89
|
## Conformance
|
|
81
90
|
|
|
@@ -84,7 +93,9 @@ Server and client implementations should run the vectors exported from
|
|
|
84
93
|
readonly data rather than Vitest-specific helpers, so they work with any test
|
|
85
94
|
runner and in any JavaScript runtime. Cases cover HTTP and canonical errors,
|
|
86
95
|
credential misuse, isolation and revocation, SSE framing/replay/cursor ordering,
|
|
87
|
-
|
|
96
|
+
executable enrollment authority/retry/mismatch/redaction and cube-create
|
|
97
|
+
idempotency, acks, claims, decisions, and
|
|
98
|
+
unsupported-capability failures.
|
|
88
99
|
|
|
89
100
|
Implement `AdapterConformanceDriver` with raw responses from the target adapter,
|
|
90
101
|
then call `runAdapterConformance`. The runner creates and decodes envelopes,
|
|
@@ -103,7 +114,7 @@ response shapes.
|
|
|
103
114
|
describe the compatibility contract. During the pre-1.0 package series, new
|
|
104
115
|
contracts may be added, but an existing wire shape will not change without a
|
|
105
116
|
documented migration path and corresponding conformance coverage. Consumers pin
|
|
106
|
-
`^0.
|
|
117
|
+
`^0.3.0` (`>=0.3.0 <0.4.0`): before 1.0, breaking wire changes increment the
|
|
107
118
|
minor version while compatible additions and corrections increment the patch.
|
|
108
119
|
|
|
109
120
|
See [docs/compatibility.md](docs/compatibility.md) for the current matrix and
|
|
@@ -111,20 +122,18 @@ the policy for introducing protocol changes.
|
|
|
111
122
|
|
|
112
123
|
## Distribution
|
|
113
124
|
|
|
114
|
-
|
|
115
|
-
`
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
requires the packed-artifact sensitivity audit, name ownership, account recovery
|
|
127
|
-
and 2FA, provenance verification, and explicit release approval.
|
|
125
|
+
`borgmcp-shared@0.2.2` is the published legacy baseline. This source prepares
|
|
126
|
+
`0.3.0` for the breaking retry-safe enrollment and multi-cube creation contract;
|
|
127
|
+
the version change does not authorize a tag or publication. After a separately
|
|
128
|
+
authorized registry release, consumers adopting this contract pin
|
|
129
|
+
`borgmcp-shared@^0.3.0` and commit registry lockfiles. No registry token belongs
|
|
130
|
+
in this repository, package metadata, lockfiles, or a committed `.npmrc`;
|
|
131
|
+
publishing uses protected external credentials and provenance.
|
|
132
|
+
|
|
133
|
+
The first client and server releases must consume the reviewed registry release,
|
|
134
|
+
not a Git, tag, or local-path dependency. Public release requires the
|
|
135
|
+
packed-artifact sensitivity audit, ownership and Trusted Publisher checks,
|
|
136
|
+
provenance verification, and explicit release approval.
|
|
128
137
|
|
|
129
138
|
## Security Posture
|
|
130
139
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type LogCursor } from '../protocol/index.js';
|
|
1
|
+
import { type CreateCubeResponse, type LogCursor } from '../protocol/index.js';
|
|
2
2
|
export interface ConformanceHttpResponse {
|
|
3
3
|
status: number;
|
|
4
4
|
body: unknown;
|
|
@@ -9,6 +9,27 @@ export interface ConformancePrincipal {
|
|
|
9
9
|
export interface ConformanceCube {
|
|
10
10
|
readonly id: string;
|
|
11
11
|
}
|
|
12
|
+
export interface ConformanceAuthorityState {
|
|
13
|
+
enrolled_clients: number;
|
|
14
|
+
enrollment_claims: number;
|
|
15
|
+
cubes: number;
|
|
16
|
+
roles: number;
|
|
17
|
+
grants: number;
|
|
18
|
+
server_capabilities: number;
|
|
19
|
+
cube_create_bindings: number;
|
|
20
|
+
}
|
|
21
|
+
export interface ConformanceCreatedCubeState {
|
|
22
|
+
cube_exists: boolean;
|
|
23
|
+
creator_has_grant: boolean;
|
|
24
|
+
grant_count: number;
|
|
25
|
+
role_count: number;
|
|
26
|
+
human_seat_role_matches: boolean;
|
|
27
|
+
default_worker_role_matches: boolean;
|
|
28
|
+
}
|
|
29
|
+
export interface ConformanceEnrollmentPrincipalState {
|
|
30
|
+
response_client_matches: boolean;
|
|
31
|
+
active_credential_bindings: number;
|
|
32
|
+
}
|
|
12
33
|
export interface ConformanceReplayBarrier {
|
|
13
34
|
readonly reached: Promise<void>;
|
|
14
35
|
release(): void;
|
|
@@ -21,7 +42,12 @@ export interface ConformanceAdmin {
|
|
|
21
42
|
createPrincipal(name: string): Promise<ConformancePrincipal>;
|
|
22
43
|
createCube(name: string): Promise<ConformanceCube>;
|
|
23
44
|
grantCube(principal: ConformancePrincipal, cube: ConformanceCube): Promise<void>;
|
|
24
|
-
|
|
45
|
+
grantCreateCubeCapability(principal: ConformancePrincipal): Promise<void>;
|
|
46
|
+
issueDroneSession(principal: ConformancePrincipal): Promise<string>;
|
|
47
|
+
issueSingleUseInvitation(principal: ConformancePrincipal, purpose: 'owner' | 'client'): Promise<string>;
|
|
48
|
+
observeAuthorityState(): Promise<ConformanceAuthorityState>;
|
|
49
|
+
inspectCreatedCube(creator: ConformancePrincipal, response: CreateCubeResponse): Promise<ConformanceCreatedCubeState>;
|
|
50
|
+
inspectEnrollmentPrincipal(principal: ConformancePrincipal, responseClientId: string): Promise<ConformanceEnrollmentPrincipalState>;
|
|
25
51
|
revokePrincipal(principal: ConformancePrincipal): Promise<void>;
|
|
26
52
|
expireCursor(cube: ConformanceCube, cursor: LogCursor): Promise<void>;
|
|
27
53
|
armReplayTransition(): ConformanceReplayBarrier;
|
|
@@ -30,6 +56,7 @@ export interface ConformanceOperations {
|
|
|
30
56
|
health(): Promise<ConformanceHttpResponse>;
|
|
31
57
|
protocol(credential: string | null): Promise<ConformanceHttpResponse>;
|
|
32
58
|
enroll(request: unknown): Promise<ConformanceHttpResponse>;
|
|
59
|
+
createCube(credential: string | null, request: unknown): Promise<ConformanceHttpResponse>;
|
|
33
60
|
append(credential: string, cube: ConformanceCube, request: unknown): Promise<ConformanceHttpResponse>;
|
|
34
61
|
appendRaw(credential: string, cube: ConformanceCube, body: string): Promise<ConformanceHttpResponse>;
|
|
35
62
|
read(credential: string, cube: ConformanceCube, request: unknown): Promise<ConformanceHttpResponse>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/conformance/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/conformance/adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { ErrorCode, ProtocolContractError, compareLogCursor, createProtocolEnvelope, decodeAppendLogResultEnvelope, decodeDecisionResultEnvelope, decodeDecisionsResultEnvelope, decodeEnrollmentExchangeResponseEnvelope, decodeProtocolErrorEnvelope, decodeProtocolInfoEnvelope, decodeReadLogResultEnvelope, decodeSseFrames, negotiateProtocol, utf8ByteLength, } from '../protocol/index.js';
|
|
1
|
+
import { ErrorCode, ProtocolContractError, compareLogCursor, createProtocolEnvelope, decodeCreateCubeResponseEnvelope, decodeAppendLogResultEnvelope, decodeDecisionResultEnvelope, decodeDecisionsResultEnvelope, decodeEnrollmentExchangeResponseEnvelope, decodeProtocolErrorEnvelope, decodeProtocolInfoEnvelope, decodeReadLogResultEnvelope, decodeSseFrames, negotiateProtocol, utf8ByteLength, } from '../protocol/index.js';
|
|
2
|
+
import { ENROLLMENT_RETRY_CONFORMANCE } from './index.js';
|
|
2
3
|
export const ADAPTER_CONFORMANCE_FIXTURES = [
|
|
3
4
|
{ id: 'http.unauthenticated-liveness', area: 'http' },
|
|
4
5
|
{ id: 'protocol.enrollment-auth', area: 'protocol' },
|
|
@@ -116,6 +117,29 @@ function logEvent(event, description) {
|
|
|
116
117
|
function same(left, right) {
|
|
117
118
|
return JSON.stringify(left) === JSON.stringify(right);
|
|
118
119
|
}
|
|
120
|
+
function assertStateDelta(before, after, expected, description) {
|
|
121
|
+
for (const key of Object.keys(before)) {
|
|
122
|
+
invariant(after[key] - before[key] === (expected[key] ?? 0), `${description} changed ${key} by ${after[key] - before[key]}; expected ${expected[key] ?? 0}.`);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
function assertEnrollmentErrorIsSecretFree(response, requests, description) {
|
|
126
|
+
const diagnostic = JSON.stringify(response.body);
|
|
127
|
+
const secrets = new Set(requests.flatMap((request) => [
|
|
128
|
+
request.invitation,
|
|
129
|
+
request.retry_key,
|
|
130
|
+
request.client_credential,
|
|
131
|
+
]));
|
|
132
|
+
for (const secret of secrets) {
|
|
133
|
+
invariant(!diagnostic.includes(secret), `${description} exposed enrollment retry material.`);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
function expectSecretFreeError(response, status, code, operation, secrets) {
|
|
137
|
+
expectError(response, status, code, operation);
|
|
138
|
+
const diagnostic = JSON.stringify(response.body);
|
|
139
|
+
for (const secret of new Set(secrets)) {
|
|
140
|
+
invariant(!diagnostic.includes(secret), `${operation} exposed retry material.`);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
119
143
|
export async function runAdapterConformance(environment, options = {}) {
|
|
120
144
|
const streamDeadlineMs = options.streamDeadlineMs ?? DEFAULT_STREAM_DEADLINE_MS;
|
|
121
145
|
const pendingProbeMs = options.pendingProbeMs ?? DEFAULT_PENDING_PROBE_MS;
|
|
@@ -136,14 +160,10 @@ export async function runAdapterConformance(environment, options = {}) {
|
|
|
136
160
|
}
|
|
137
161
|
};
|
|
138
162
|
await environment.admin.reset();
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
await environment.admin.grantCube(principalA, cubeA);
|
|
144
|
-
await environment.admin.grantCube(principalB, cubeB);
|
|
145
|
-
const invitationA = await environment.admin.issueSingleUseInvitation(principalA);
|
|
146
|
-
const invitationB = await environment.admin.issueSingleUseInvitation(principalB);
|
|
163
|
+
let principalA;
|
|
164
|
+
let principalB;
|
|
165
|
+
let cubeA;
|
|
166
|
+
let cubeB;
|
|
147
167
|
let credentialA = '';
|
|
148
168
|
let credentialB = '';
|
|
149
169
|
let protocolBody;
|
|
@@ -156,22 +176,188 @@ export async function runAdapterConformance(environment, options = {}) {
|
|
|
156
176
|
});
|
|
157
177
|
await record('protocol.enrollment-auth', async () => {
|
|
158
178
|
expectError(await environment.operations.protocol(null), 401, ErrorCode.AUTH_MISSING, 'Unauthenticated protocol request');
|
|
179
|
+
const retryVectorErrors = [];
|
|
180
|
+
for (const [index, vector] of ENROLLMENT_RETRY_CONFORMANCE.entries()) {
|
|
181
|
+
for (const purpose of ['client', 'owner']) {
|
|
182
|
+
await environment.admin.reset();
|
|
183
|
+
try {
|
|
184
|
+
const principal = await environment.admin.createPrincipal(`${purpose}-retry-vector-${index}`);
|
|
185
|
+
const invitation = await environment.admin.issueSingleUseInvitation(principal, purpose);
|
|
186
|
+
const initialPayload = { ...vector.initial, invitation };
|
|
187
|
+
const retryPayload = { ...vector.retry, invitation };
|
|
188
|
+
const beforeInitial = await environment.admin.observeAuthorityState();
|
|
189
|
+
const initialResponse = await environment.operations.enroll(createProtocolEnvelope(`retry-${index}-initial`, initialPayload));
|
|
190
|
+
expectStatus(initialResponse, 201, `${vector.name} initial request`);
|
|
191
|
+
const initial = decodeEnrollmentExchangeResponseEnvelope(initialResponse.body).payload;
|
|
192
|
+
invariant(initial.purpose === purpose, `${purpose} ${vector.name} returned the wrong purpose.`);
|
|
193
|
+
invariant(same(initial.server_capabilities, purpose === 'owner' ? ['create_cube'] : []), `${purpose} ${vector.name} returned incorrect server authority.`);
|
|
194
|
+
const afterInitial = await environment.admin.observeAuthorityState();
|
|
195
|
+
assertStateDelta(beforeInitial, afterInitial, {
|
|
196
|
+
enrolled_clients: 1,
|
|
197
|
+
enrollment_claims: 1,
|
|
198
|
+
server_capabilities: purpose === 'owner' ? 1 : 0,
|
|
199
|
+
}, `${purpose} ${vector.name} initial request`);
|
|
200
|
+
const beforeRetry = await environment.admin.observeAuthorityState();
|
|
201
|
+
const retryResponse = await environment.operations.enroll(createProtocolEnvelope(`retry-${index}-retry`, retryPayload));
|
|
202
|
+
if (vector.expected.outcome === 'stable_non_secret_identity') {
|
|
203
|
+
expectStatus(retryResponse, 201, `${purpose} ${vector.name}`);
|
|
204
|
+
const retry = decodeEnrollmentExchangeResponseEnvelope(retryResponse.body).payload;
|
|
205
|
+
invariant(same(initial, retry), `${purpose} ${vector.name} returned different identities.`);
|
|
206
|
+
for (const field of vector.expected.forbidden_response_fields) {
|
|
207
|
+
invariant(!(field in retry), `${purpose} ${vector.name} returned forbidden field ${field}.`);
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
else {
|
|
211
|
+
expectError(retryResponse, vector.expected.status, ErrorCode.AUTH_INVALID, `${purpose} ${vector.name}`);
|
|
212
|
+
assertEnrollmentErrorIsSecretFree(retryResponse, [initialPayload, retryPayload], `${purpose} ${vector.name}`);
|
|
213
|
+
}
|
|
214
|
+
assertStateDelta(beforeRetry, await environment.admin.observeAuthorityState(), {}, `${purpose} ${vector.name} retry`);
|
|
215
|
+
expectStatus(await environment.operations.protocol(vector.initial.client_credential), 200, `${purpose} ${vector.name} original credential continuity`);
|
|
216
|
+
if (vector.retry.client_credential !== vector.initial.client_credential) {
|
|
217
|
+
expectError(await environment.operations.protocol(vector.retry.client_credential), 401, ErrorCode.AUTH_INVALID, `${purpose} ${vector.name} mismatched credential rejection`);
|
|
218
|
+
}
|
|
219
|
+
invariant(same(await environment.admin.inspectEnrollmentPrincipal(principal, initial.client_id), {
|
|
220
|
+
response_client_matches: true,
|
|
221
|
+
active_credential_bindings: 1,
|
|
222
|
+
}), `${purpose} ${vector.name} changed enrollment binding ownership.`);
|
|
223
|
+
}
|
|
224
|
+
catch (error) {
|
|
225
|
+
retryVectorErrors.push(`${purpose} ${vector.name}: ${error instanceof Error ? error.message : String(error)}`);
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
invariant(retryVectorErrors.length === 0, retryVectorErrors.join(' | '));
|
|
230
|
+
await environment.admin.reset();
|
|
231
|
+
const ownerPrincipal = await environment.admin.createPrincipal('owner');
|
|
232
|
+
const ordinaryPrincipal = await environment.admin.createPrincipal('ordinary');
|
|
233
|
+
const ownerInvitation = await environment.admin.issueSingleUseInvitation(ownerPrincipal, 'owner');
|
|
234
|
+
const ordinaryInvitation = await environment.admin.issueSingleUseInvitation(ordinaryPrincipal, 'client');
|
|
235
|
+
const ownerCredential = `${'Q'.repeat(42)}U`;
|
|
236
|
+
const ordinaryCredential = `${'Y'.repeat(42)}U`;
|
|
237
|
+
const beforeAuthorityEnrollment = await environment.admin.observeAuthorityState();
|
|
238
|
+
const ownerResponse = await environment.operations.enroll(createProtocolEnvelope('owner-enroll', {
|
|
239
|
+
invitation: ownerInvitation,
|
|
240
|
+
retry_key: '00000000-0000-4000-8000-000000000211',
|
|
241
|
+
client_credential: ownerCredential,
|
|
242
|
+
client_name: 'owner-client',
|
|
243
|
+
}));
|
|
244
|
+
const ordinaryResponse = await environment.operations.enroll(createProtocolEnvelope('ordinary-enroll', {
|
|
245
|
+
invitation: ordinaryInvitation,
|
|
246
|
+
retry_key: '00000000-0000-4000-8000-000000000212',
|
|
247
|
+
client_credential: ordinaryCredential,
|
|
248
|
+
client_name: 'ordinary-client',
|
|
249
|
+
}));
|
|
250
|
+
expectStatus(ownerResponse, 201, 'Owner enrollment');
|
|
251
|
+
expectStatus(ordinaryResponse, 201, 'Ordinary enrollment');
|
|
252
|
+
const owner = decodeEnrollmentExchangeResponseEnvelope(ownerResponse.body).payload;
|
|
253
|
+
const ordinary = decodeEnrollmentExchangeResponseEnvelope(ordinaryResponse.body).payload;
|
|
254
|
+
invariant(owner.purpose === 'owner' && same(owner.server_capabilities, ['create_cube']), 'Owner enrollment lacked exact create-cube authority.');
|
|
255
|
+
invariant(ordinary.purpose === 'client' && ordinary.server_capabilities.length === 0, 'Ordinary enrollment gained authority.');
|
|
256
|
+
assertStateDelta(beforeAuthorityEnrollment, await environment.admin.observeAuthorityState(), { enrolled_clients: 2, enrollment_claims: 2, server_capabilities: 1 }, 'Owner and ordinary enrollment');
|
|
257
|
+
const cubeRequest = {
|
|
258
|
+
retry_key: '00000000-0000-4000-8000-000000000213',
|
|
259
|
+
name: 'repository-one',
|
|
260
|
+
template: 'default',
|
|
261
|
+
};
|
|
262
|
+
const droneCredential = await environment.admin.issueDroneSession(ownerPrincipal);
|
|
263
|
+
const beforeDeniedCreate = await environment.admin.observeAuthorityState();
|
|
264
|
+
expectSecretFreeError(await environment.operations.createCube(null, createProtocolEnvelope('cube-missing-auth', cubeRequest)), 401, ErrorCode.AUTH_MISSING, 'Missing-auth cube create', [cubeRequest.retry_key]);
|
|
265
|
+
expectSecretFreeError(await environment.operations.createCube('invalid-credential', createProtocolEnvelope('cube-invalid-auth', cubeRequest)), 401, ErrorCode.AUTH_INVALID, 'Invalid-auth cube create', [cubeRequest.retry_key]);
|
|
266
|
+
expectSecretFreeError(await environment.operations.createCube(ordinaryCredential, createProtocolEnvelope('cube-denied', cubeRequest)), 403, ErrorCode.ACCESS_DENIED, 'Ordinary cube create', [cubeRequest.retry_key]);
|
|
267
|
+
expectSecretFreeError(await environment.operations.createCube(droneCredential, createProtocolEnvelope('cube-drone-denied', cubeRequest)), 403, ErrorCode.ACCESS_DENIED, 'Drone-session cube create', [cubeRequest.retry_key]);
|
|
268
|
+
assertStateDelta(beforeDeniedCreate, await environment.admin.observeAuthorityState(), {}, 'Denied ordinary cube create');
|
|
269
|
+
const beforeCreate = await environment.admin.observeAuthorityState();
|
|
270
|
+
const createdResponse = await environment.operations.createCube(ownerCredential, createProtocolEnvelope('cube-create', cubeRequest));
|
|
271
|
+
expectStatus(createdResponse, 201, 'Owner cube create');
|
|
272
|
+
const created = decodeCreateCubeResponseEnvelope(createdResponse.body).payload;
|
|
273
|
+
assertStateDelta(beforeCreate, await environment.admin.observeAuthorityState(), { cubes: 1, roles: 2, grants: 1, cube_create_bindings: 1 }, 'Owner cube create');
|
|
274
|
+
invariant(same(await environment.admin.inspectCreatedCube(ownerPrincipal, created), {
|
|
275
|
+
cube_exists: true,
|
|
276
|
+
creator_has_grant: true,
|
|
277
|
+
grant_count: 1,
|
|
278
|
+
role_count: 2,
|
|
279
|
+
human_seat_role_matches: true,
|
|
280
|
+
default_worker_role_matches: true,
|
|
281
|
+
}), 'Created cube identities or creator grant did not match persisted authority state.');
|
|
282
|
+
const beforeCreateRetry = await environment.admin.observeAuthorityState();
|
|
283
|
+
const retriedCreateResponse = await environment.operations.createCube(ownerCredential, createProtocolEnvelope('cube-retry', cubeRequest));
|
|
284
|
+
expectStatus(retriedCreateResponse, 201, 'Exact cube-create retry');
|
|
285
|
+
invariant(same(decodeCreateCubeResponseEnvelope(retriedCreateResponse.body).payload, created), 'Exact cube-create retry returned different identities.');
|
|
286
|
+
assertStateDelta(beforeCreateRetry, await environment.admin.observeAuthorityState(), {}, 'Exact cube-create retry');
|
|
287
|
+
const beforeCreateMismatch = await environment.admin.observeAuthorityState();
|
|
288
|
+
expectSecretFreeError(await environment.operations.createCube(ownerCredential, createProtocolEnvelope('cube-mismatch', { ...cubeRequest, name: 'repository-two' })), 409, ErrorCode.INVALID_INPUT, 'Cube-create retry mismatch', [cubeRequest.retry_key]);
|
|
289
|
+
assertStateDelta(beforeCreateMismatch, await environment.admin.observeAuthorityState(), {}, 'Cube-create retry mismatch');
|
|
290
|
+
await environment.admin.grantCreateCubeCapability(ordinaryPrincipal);
|
|
291
|
+
const crossClientRequest = { ...cubeRequest, name: 'ordinary-repository' };
|
|
292
|
+
const beforeCrossClientCreate = await environment.admin.observeAuthorityState();
|
|
293
|
+
const crossClientResponse = await environment.operations.createCube(ordinaryCredential, createProtocolEnvelope('cube-cross-client', crossClientRequest));
|
|
294
|
+
expectStatus(crossClientResponse, 201, 'Cross-client cube create with reused retry key');
|
|
295
|
+
const crossClientCreated = decodeCreateCubeResponseEnvelope(crossClientResponse.body).payload;
|
|
296
|
+
invariant(crossClientCreated.cube_id !== created.cube_id, 'Cross-client retry key reused another client\'s cube.');
|
|
297
|
+
assertStateDelta(beforeCrossClientCreate, await environment.admin.observeAuthorityState(), { cubes: 1, roles: 2, grants: 1, cube_create_bindings: 1 }, 'Cross-client cube create');
|
|
298
|
+
invariant((await environment.admin.inspectCreatedCube(ordinaryPrincipal, crossClientCreated)).creator_has_grant, 'Cross-client cube creation did not grant its authenticated creator.');
|
|
299
|
+
const beforeCrossClientRetry = await environment.admin.observeAuthorityState();
|
|
300
|
+
const crossClientRetry = await environment.operations.createCube(ordinaryCredential, createProtocolEnvelope('cube-cross-client-retry', crossClientRequest));
|
|
301
|
+
expectStatus(crossClientRetry, 201, 'Exact cross-client cube-create retry');
|
|
302
|
+
invariant(same(decodeCreateCubeResponseEnvelope(crossClientRetry.body).payload, crossClientCreated), 'Exact cross-client cube-create retry returned different identities.');
|
|
303
|
+
assertStateDelta(beforeCrossClientRetry, await environment.admin.observeAuthorityState(), {}, 'Exact cross-client cube-create retry');
|
|
304
|
+
const beforeSecondCreate = await environment.admin.observeAuthorityState();
|
|
305
|
+
const secondCreatedResponse = await environment.operations.createCube(ownerCredential, createProtocolEnvelope('cube-create-second', {
|
|
306
|
+
...cubeRequest,
|
|
307
|
+
retry_key: '00000000-0000-4000-8000-000000000214',
|
|
308
|
+
name: 'repository-two',
|
|
309
|
+
}));
|
|
310
|
+
expectStatus(secondCreatedResponse, 201, 'Second cube create');
|
|
311
|
+
const secondCreated = decodeCreateCubeResponseEnvelope(secondCreatedResponse.body).payload;
|
|
312
|
+
invariant(secondCreated.cube_id !== created.cube_id, 'Fresh cube-create retry key reused an existing cube.');
|
|
313
|
+
assertStateDelta(beforeSecondCreate, await environment.admin.observeAuthorityState(), { cubes: 1, roles: 2, grants: 1, cube_create_bindings: 1 }, 'Second cube create');
|
|
314
|
+
await environment.admin.revokePrincipal(ownerPrincipal);
|
|
315
|
+
const beforeRevokedCreate = await environment.admin.observeAuthorityState();
|
|
316
|
+
expectSecretFreeError(await environment.operations.createCube(ownerCredential, createProtocolEnvelope('cube-revoked', {
|
|
317
|
+
...cubeRequest,
|
|
318
|
+
retry_key: '00000000-0000-4000-8000-000000000215',
|
|
319
|
+
})), 401, ErrorCode.SESSION_REVOKED, 'Revoked owner cube create', ['00000000-0000-4000-8000-000000000215']);
|
|
320
|
+
assertStateDelta(beforeRevokedCreate, await environment.admin.observeAuthorityState(), {}, 'Revoked owner cube create');
|
|
321
|
+
await environment.admin.reset();
|
|
322
|
+
principalA = await environment.admin.createPrincipal('principal-a');
|
|
323
|
+
principalB = await environment.admin.createPrincipal('principal-b');
|
|
324
|
+
cubeA = await environment.admin.createCube('cube-a');
|
|
325
|
+
cubeB = await environment.admin.createCube('cube-b');
|
|
326
|
+
await environment.admin.grantCube(principalA, cubeA);
|
|
327
|
+
await environment.admin.grantCube(principalB, cubeB);
|
|
328
|
+
const invitationA = await environment.admin.issueSingleUseInvitation(principalA, 'client');
|
|
329
|
+
const invitationB = await environment.admin.issueSingleUseInvitation(principalB, 'client');
|
|
330
|
+
credentialA = 'A'.repeat(43);
|
|
331
|
+
credentialB = 'E'.repeat(43);
|
|
159
332
|
const enrollmentARequest = createProtocolEnvelope('enroll-a1', {
|
|
160
333
|
invitation: invitationA,
|
|
334
|
+
retry_key: '00000000-0000-4000-8000-000000000201',
|
|
335
|
+
client_credential: credentialA,
|
|
161
336
|
client_name: 'conformance-a',
|
|
162
337
|
});
|
|
163
338
|
const enrollmentBRequest = createProtocolEnvelope('enroll-b1', {
|
|
164
339
|
invitation: invitationB,
|
|
340
|
+
retry_key: '00000000-0000-4000-8000-000000000202',
|
|
341
|
+
client_credential: credentialB,
|
|
165
342
|
client_name: 'conformance-b',
|
|
166
343
|
});
|
|
167
344
|
const enrolledAResponse = await environment.operations.enroll(enrollmentARequest);
|
|
168
345
|
const enrolledBResponse = await environment.operations.enroll(enrollmentBRequest);
|
|
169
346
|
expectStatus(enrolledAResponse, 201, 'Principal A enrollment');
|
|
170
347
|
expectStatus(enrolledBResponse, 201, 'Principal B enrollment');
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
invariant(
|
|
174
|
-
|
|
348
|
+
const enrolledA = decodeEnrollmentExchangeResponseEnvelope(enrolledAResponse.body).payload;
|
|
349
|
+
const enrolledB = decodeEnrollmentExchangeResponseEnvelope(enrolledBResponse.body).payload;
|
|
350
|
+
invariant(enrolledA.purpose === 'client' && enrolledB.purpose === 'client', 'Ordinary enrollment returned owner authority.');
|
|
351
|
+
invariant(enrolledA.server_capabilities.length === 0 && enrolledB.server_capabilities.length === 0, 'Ordinary enrollment returned a server capability.');
|
|
352
|
+
invariant(!('credential' in enrolledA) && !('credential' in enrolledB), 'Enrollment response returned a bearer.');
|
|
353
|
+
const retriedAResponse = await environment.operations.enroll(enrollmentARequest);
|
|
354
|
+
expectStatus(retriedAResponse, 201, 'Exact enrollment retry');
|
|
355
|
+
invariant(JSON.stringify(decodeEnrollmentExchangeResponseEnvelope(retriedAResponse.body).payload) ===
|
|
356
|
+
JSON.stringify(enrolledA), 'Exact enrollment retry returned different identities.');
|
|
357
|
+
expectError(await environment.operations.enroll(createProtocolEnvelope('enroll-a-mismatch', {
|
|
358
|
+
...enrollmentARequest.payload,
|
|
359
|
+
retry_key: '00000000-0000-4000-8000-000000000203',
|
|
360
|
+
})), 401, ErrorCode.AUTH_INVALID, 'Enrollment retry mismatch');
|
|
175
361
|
const protocolResponse = await environment.operations.protocol(credentialA);
|
|
176
362
|
expectStatus(protocolResponse, 200, 'Authenticated protocol request');
|
|
177
363
|
protocolBody = protocolResponse.body;
|
|
@@ -186,7 +372,9 @@ export async function runAdapterConformance(environment, options = {}) {
|
|
|
186
372
|
return {
|
|
187
373
|
unauthenticated: ErrorCode.AUTH_MISSING,
|
|
188
374
|
enrollment_status: 201,
|
|
189
|
-
|
|
375
|
+
exact_retry_status: 201,
|
|
376
|
+
mismatched_retry: ErrorCode.AUTH_INVALID,
|
|
377
|
+
response_secret_free: true,
|
|
190
378
|
protocol_version: protocolInfo.protocol_version,
|
|
191
379
|
};
|
|
192
380
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../src/conformance/adapter.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../src/conformance/adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { BroadcastHwm } from '../log-stream-hwm.js';
|
|
2
|
+
import type { EnrollmentExchangeRequest } from '../protocol/contract.js';
|
|
2
3
|
export * from './adapter.js';
|
|
3
4
|
export interface ConformanceVector<Input, Output> {
|
|
4
5
|
name: string;
|
|
@@ -12,4 +13,52 @@ export interface BroadcastHwmComparisonInput {
|
|
|
12
13
|
export declare const BROADCAST_HWM_CONFORMANCE: readonly ConformanceVector<BroadcastHwmComparisonInput, -1 | 0 | 1>[];
|
|
13
14
|
export declare const DRONE_ADDRESS_CONFORMANCE: readonly ConformanceVector<string, string>[];
|
|
14
15
|
export declare const ROLE_SECTION_ROUND_TRIP_CONFORMANCE: readonly string[];
|
|
16
|
+
export interface EnrollmentRetryConformanceVector {
|
|
17
|
+
name: string;
|
|
18
|
+
initial: EnrollmentExchangeRequest;
|
|
19
|
+
retry: EnrollmentExchangeRequest;
|
|
20
|
+
expected: {
|
|
21
|
+
outcome: 'stable_non_secret_identity';
|
|
22
|
+
status: 201;
|
|
23
|
+
forbidden_response_fields: readonly [
|
|
24
|
+
'credential',
|
|
25
|
+
'client_credential',
|
|
26
|
+
'invitation',
|
|
27
|
+
'retry_key'
|
|
28
|
+
];
|
|
29
|
+
} | {
|
|
30
|
+
outcome: 'uniform_auth_invalid';
|
|
31
|
+
status: 401;
|
|
32
|
+
error: 'AUTH_INVALID';
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
export declare const ENROLLMENT_RETRY_CONFORMANCE: readonly EnrollmentRetryConformanceVector[];
|
|
36
|
+
export declare const ENROLLMENT_AUTHORITY_CONFORMANCE: readonly [{
|
|
37
|
+
readonly name: "ordinary enrollment creates no authority or cube state";
|
|
38
|
+
readonly response: {
|
|
39
|
+
readonly purpose: "client";
|
|
40
|
+
readonly client_id: "00000000-0000-4000-8000-000000000111";
|
|
41
|
+
readonly server_capabilities: readonly [];
|
|
42
|
+
};
|
|
43
|
+
readonly expected_state_delta: {
|
|
44
|
+
readonly cubes: 0;
|
|
45
|
+
readonly roles: 0;
|
|
46
|
+
readonly grants: 0;
|
|
47
|
+
readonly server_capabilities: 0;
|
|
48
|
+
};
|
|
49
|
+
}, {
|
|
50
|
+
readonly name: "owner enrollment grants create-cube authority without cube state";
|
|
51
|
+
readonly response: {
|
|
52
|
+
readonly purpose: "owner";
|
|
53
|
+
readonly client_id: "00000000-0000-4000-8000-000000000111";
|
|
54
|
+
readonly server_capabilities: readonly ["create_cube"];
|
|
55
|
+
};
|
|
56
|
+
readonly expected_state_delta: {
|
|
57
|
+
readonly cubes: 0;
|
|
58
|
+
readonly roles: 0;
|
|
59
|
+
readonly grants: 0;
|
|
60
|
+
readonly server_capabilities: 1;
|
|
61
|
+
};
|
|
62
|
+
}];
|
|
63
|
+
export declare const ENROLLMENT_REDACTION_CONFORMANCE: readonly ConformanceVector<string, string>[];
|
|
15
64
|
//# sourceMappingURL=index.d.ts.map
|