@xyo-network/event-kit-protocol 0.1.9 → 1.0.1
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/neutral/admissionCore.d.ts.map +1 -1
- package/dist/neutral/endpointChallenge.d.ts.map +1 -1
- package/dist/neutral/handshakeConstruction.d.ts.map +1 -1
- package/dist/neutral/index.mjs +106 -152
- package/dist/neutral/index.mjs.map +3 -3
- package/dist/neutral/lifecycleSelection.d.ts.map +1 -1
- package/dist/neutral/memoryStatementGrantGraph.d.ts.map +1 -1
- package/dist/neutral/memoryWakeInbox.d.ts.map +1 -1
- package/dist/neutral/memoryWakeQueue.d.ts.map +1 -1
- package/dist/neutral/publisherSubscription.d.ts.map +1 -1
- package/dist/neutral/wakeSubscriptionHpke.d.ts.map +1 -1
- package/package.json +15 -15
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admissionCore.d.ts","sourceRoot":"","sources":["../../src/admissionCore.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EAGf,oBAAoB,EAGpB,mBAAmB,EAEpB,MAAM,qBAAqB,CAAA;AAE5B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAC9C,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AAEvE,MAAM,WAAW,kBAAkB,CAAC,KAAK,GAAG,YAAY;IACtD,2EAA2E;IAC3E,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAA;IACpC,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC,KAAK,CAAC,CAAA;IACtC,QAAQ,CAAC,QAAQ,EAAE,qBAAqB,CAAA;IACxC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAA;CACrB;AAED,MAAM,MAAM,4BAA4B,GAClC,eAAe,GACf,mBAAmB,GACnB,oBAAoB,GACpB,kBAAkB,GAClB,mBAAmB,GACnB,kBAAkB,GAClB,mBAAmB,CAAA;AAEzB,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACpC,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAA;IAClB,QAAQ,CAAC,MAAM,EAAE,4BAA4B,CAAA;CAC9C;AAED,MAAM,WAAW,sBAAsB,CAAC,KAAK,GAAG,YAAY;IAC1D,QAAQ,CAAC,WAAW,EAAE,WAAW,GAAG,UAAU,CAAA;IAC9C,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAA;IACjB,QAAQ,CAAC,OAAO,EAAE,oBAAoB,CAAA;IACtC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAA;CACrB;AAED,MAAM,MAAM,qBAAqB,CAAC,KAAK,GAAG,YAAY,IAAI,sBAAsB,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAA;AAEhH;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,kBAAkB,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"admissionCore.d.ts","sourceRoot":"","sources":["../../src/admissionCore.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EAGf,oBAAoB,EAGpB,mBAAmB,EAEpB,MAAM,qBAAqB,CAAA;AAE5B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAC9C,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AAEvE,MAAM,WAAW,kBAAkB,CAAC,KAAK,GAAG,YAAY;IACtD,2EAA2E;IAC3E,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAA;IACpC,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC,KAAK,CAAC,CAAA;IACtC,QAAQ,CAAC,QAAQ,EAAE,qBAAqB,CAAA;IACxC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAA;CACrB;AAED,MAAM,MAAM,4BAA4B,GAClC,eAAe,GACf,mBAAmB,GACnB,oBAAoB,GACpB,kBAAkB,GAClB,mBAAmB,GACnB,kBAAkB,GAClB,mBAAmB,CAAA;AAEzB,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACpC,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAA;IAClB,QAAQ,CAAC,MAAM,EAAE,4BAA4B,CAAA;CAC9C;AAED,MAAM,WAAW,sBAAsB,CAAC,KAAK,GAAG,YAAY;IAC1D,QAAQ,CAAC,WAAW,EAAE,WAAW,GAAG,UAAU,CAAA;IAC9C,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAA;IACjB,QAAQ,CAAC,OAAO,EAAE,oBAAoB,CAAA;IACtC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAA;CACrB;AAED,MAAM,MAAM,qBAAqB,CAAC,KAAK,GAAG,YAAY,IAAI,sBAAsB,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAA;AAEhH;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,kBAAkB,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC,CAetH"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"endpointChallenge.d.ts","sourceRoot":"","sources":["../../src/endpointChallenge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,OAAO,EACP,iBAAiB,EACjB,yBAAyB,EACzB,WAAW,EACX,IAAI,EACJ,iBAAiB,EACjB,mBAAmB,EACpB,MAAM,gCAAgC,CAAA;AAevC,MAAM,WAAW,4BAA4B;IAC3C,OAAO,EAAE,OAAO,CAAA;IAChB,aAAa,EAAE,IAAI,CAAA;IACnB,SAAS,EAAE,mBAAmB,CAAA;IAC9B,KAAK,EAAE,IAAI,CAAA;IACX,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,WAAW,CAAA;IAClB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,SAAS,EAAE,iBAAiB,CAAA;IAC5B,OAAO,EAAE,IAAI,CAAA;IACb,UAAU,EAAE,iBAAiB,CAAA;IAC7B,YAAY,EAAE,IAAI,CAAA;CACnB;AAED,MAAM,WAAW,oCAAoC;IACnD,SAAS,EAAE,iBAAiB,CAAA;IAC5B,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,yBAAyB,CAAA;IACnC,MAAM,EAAE,gBAAgB,CAAA;CACzB;AAED,KAAK,iCAAiC,GAAG,IAAI,CAAC,oCAAoC,EAAE,YAAY,CAAC,CAAA;AA6BjG,wBAAsB,qBAAqB,CAAC,SAAS,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAGvF;AAED,uFAAuF;AACvF,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,4BAA4B,GAAG,iBAAiB,
|
|
1
|
+
{"version":3,"file":"endpointChallenge.d.ts","sourceRoot":"","sources":["../../src/endpointChallenge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,OAAO,EACP,iBAAiB,EACjB,yBAAyB,EACzB,WAAW,EACX,IAAI,EACJ,iBAAiB,EACjB,mBAAmB,EACpB,MAAM,gCAAgC,CAAA;AAevC,MAAM,WAAW,4BAA4B;IAC3C,OAAO,EAAE,OAAO,CAAA;IAChB,aAAa,EAAE,IAAI,CAAA;IACnB,SAAS,EAAE,mBAAmB,CAAA;IAC9B,KAAK,EAAE,IAAI,CAAA;IACX,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,WAAW,CAAA;IAClB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,SAAS,EAAE,iBAAiB,CAAA;IAC5B,OAAO,EAAE,IAAI,CAAA;IACb,UAAU,EAAE,iBAAiB,CAAA;IAC7B,YAAY,EAAE,IAAI,CAAA;CACnB;AAED,MAAM,WAAW,oCAAoC;IACnD,SAAS,EAAE,iBAAiB,CAAA;IAC5B,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,yBAAyB,CAAA;IACnC,MAAM,EAAE,gBAAgB,CAAA;CACzB;AAED,KAAK,iCAAiC,GAAG,IAAI,CAAC,oCAAoC,EAAE,YAAY,CAAC,CAAA;AA6BjG,wBAAsB,qBAAqB,CAAC,SAAS,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAGvF;AAED,uFAAuF;AACvF,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,4BAA4B,GAAG,iBAAiB,CA4B9F;AAED,uFAAuF;AACvF,wBAAsB,+BAA+B,CACnD,SAAS,EAAE,iBAAiB,EAC5B,MAAM,EAAE,gBAAgB,GACvB,OAAO,CAAC,yBAAyB,CAAC,CAOpC;AAED;;;;GAIG;AACH,wBAAsB,4BAA4B,CAChD,KAAK,EAAE,iCAAiC,GACvC,OAAO,CAAC,OAAO,CAAC,CASlB;AAED,iGAAiG;AACjG,wBAAsB,+BAA+B,CACnD,KAAK,EAAE,oCAAoC,GAC1C,OAAO,CAAC,OAAO,CAAC,CAUlB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handshakeConstruction.d.ts","sourceRoot":"","sources":["../../src/handshakeConstruction.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"handshakeConstruction.d.ts","sourceRoot":"","sources":["../../src/handshakeConstruction.ts"],"names":[],"mappings":"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"}
|
package/dist/neutral/index.mjs
CHANGED
|
@@ -13,8 +13,7 @@ async function admitVerifiedWake(input) {
|
|
|
13
13
|
return reject("grant-view-invalid", ["expectedHead must be a nonnegative safe integer"]);
|
|
14
14
|
}
|
|
15
15
|
const authorization = await authorize(input);
|
|
16
|
-
|
|
17
|
-
return await commitAuthorizedWake(input.inbox, attempt, authorization.grant, wake);
|
|
16
|
+
return authorization.ok ? await commitAuthorizedWake(input.inbox, attempt, authorization.grant, wake) : authorization.failure;
|
|
18
17
|
}
|
|
19
18
|
async function resolvePriorAttempt(inbox, attempt, wake) {
|
|
20
19
|
let resolution;
|
|
@@ -33,10 +32,7 @@ async function resolvePriorAttempt(inbox, attempt, wake) {
|
|
|
33
32
|
const receiptFailure = validateReceipt(resolution.receipt, attempt);
|
|
34
33
|
return completed(receiptFailure ?? success("duplicate", snapshotReceipt(resolution.receipt), wake));
|
|
35
34
|
}
|
|
36
|
-
|
|
37
|
-
return completed(reject("inbox-unavailable", ["inbox returned an unknown attempt resolution"]));
|
|
38
|
-
}
|
|
39
|
-
return Object.freeze({ pending: true });
|
|
35
|
+
return resolution.kind === "new" ? Object.freeze({ pending: true }) : completed(reject("inbox-unavailable", ["inbox returned an unknown attempt resolution"]));
|
|
40
36
|
}
|
|
41
37
|
async function commitAuthorizedWake(inbox, attempt, grant, wake) {
|
|
42
38
|
let committed;
|
|
@@ -59,8 +55,7 @@ async function commitAuthorizedWake(inbox, attempt, grant, wake) {
|
|
|
59
55
|
return reject("inbox-unavailable", ["inbox returned an unknown commit result"]);
|
|
60
56
|
}
|
|
61
57
|
const receiptFailure = validateReceipt(committed.receipt, attempt);
|
|
62
|
-
|
|
63
|
-
return success(committed.kind, snapshotReceipt(committed.receipt), wake);
|
|
58
|
+
return receiptFailure ?? success(committed.kind, snapshotReceipt(committed.receipt), wake);
|
|
64
59
|
}
|
|
65
60
|
function completed(result) {
|
|
66
61
|
return Object.freeze({ pending: false, result });
|
|
@@ -125,17 +120,14 @@ function validateGrantView(decision, expectedHead, maxGrantLagBlocks) {
|
|
|
125
120
|
if (decision.atBlock > expectedHead) {
|
|
126
121
|
return reject("grant-view-invalid", ["grant view is ahead of the trusted finalized head"]);
|
|
127
122
|
}
|
|
128
|
-
const lag = expectedHead - decision.atBlock;
|
|
129
123
|
if (decision.expectedHead !== void 0 && decision.expectedHead !== expectedHead) {
|
|
130
124
|
return reject("grant-view-invalid", ["grant diagnostic expectedHead disagrees with the trusted head"]);
|
|
131
125
|
}
|
|
126
|
+
const lag = expectedHead - decision.atBlock;
|
|
132
127
|
if (decision.lag !== void 0 && decision.lag !== lag) {
|
|
133
128
|
return reject("grant-view-invalid", ["grant diagnostic lag disagrees with the recomputed lag"]);
|
|
134
129
|
}
|
|
135
|
-
|
|
136
|
-
return reject("grant-view-stale", [`grantLag=${lag} max=${maxGrantLagBlocks}`]);
|
|
137
|
-
}
|
|
138
|
-
return void 0;
|
|
130
|
+
return lag > maxGrantLagBlocks ? reject("grant-view-stale", [`grantLag=${lag} max=${maxGrantLagBlocks}`]) : void 0;
|
|
139
131
|
}
|
|
140
132
|
function validateGrantEvidence(evidence, verified, atBlock) {
|
|
141
133
|
if (!isRecord(evidence)) return reject("grant-view-invalid", ["enabled grant decision omitted evidence"]);
|
|
@@ -170,10 +162,7 @@ function validateGrantEvidence(evidence, verified, atBlock) {
|
|
|
170
162
|
}
|
|
171
163
|
const evidenceHasQueue = Object.hasOwn(evidence, "queueId");
|
|
172
164
|
const routeHasQueue = Object.hasOwn(verified.route, "queueId");
|
|
173
|
-
|
|
174
|
-
return reject("grant-view-invalid", ["grant scope does not exactly match the configured route"]);
|
|
175
|
-
}
|
|
176
|
-
return void 0;
|
|
165
|
+
return evidence.deploymentId !== verified.route.deploymentId || evidenceHasQueue !== routeHasQueue || evidence.queueId !== verified.route.queueId ? reject("grant-view-invalid", ["grant scope does not exactly match the configured route"]) : void 0;
|
|
177
166
|
}
|
|
178
167
|
function validateReceipt(receipt, attempt) {
|
|
179
168
|
const requiredFields = [
|
|
@@ -186,10 +175,7 @@ function validateReceipt(receipt, attempt) {
|
|
|
186
175
|
if (!isRecord(receipt) || requiredFields.some((field) => !Object.hasOwn(receipt, field)) || typeof receipt.id !== "string" || receipt.id.length === 0) {
|
|
187
176
|
return reject("inbox-unavailable", ["inbox returned an invalid receipt"]);
|
|
188
177
|
}
|
|
189
|
-
|
|
190
|
-
return reject("inbox-unavailable", ["inbox receipt is not bound to the verified attempt"]);
|
|
191
|
-
}
|
|
192
|
-
return void 0;
|
|
178
|
+
return receipt.audience !== attempt.audience || receipt.publisher !== attempt.publisher || receipt.eventHash !== attempt.eventHash || receipt.wakeId !== attempt.wakeId ? reject("inbox-unavailable", ["inbox receipt is not bound to the verified attempt"]) : void 0;
|
|
193
179
|
}
|
|
194
180
|
function snapshotGrantEvidence(evidence) {
|
|
195
181
|
return Object.freeze({
|
|
@@ -325,7 +311,7 @@ function canonicalize(value) {
|
|
|
325
311
|
throw new TypeError("Canonical JSON objects must be plain records");
|
|
326
312
|
}
|
|
327
313
|
const record = value;
|
|
328
|
-
const members = Object.keys(record).
|
|
314
|
+
const members = Object.keys(record).toSorted().map((key) => {
|
|
329
315
|
if (hasUnpairedSurrogate(key)) throw new TypeError("Canonical JSON keys must be valid Unicode");
|
|
330
316
|
const member = record[key];
|
|
331
317
|
if (member === void 0) throw new TypeError("Canonical JSON does not permit undefined members");
|
|
@@ -397,7 +383,8 @@ function createEndpointChallenge(input) {
|
|
|
397
383
|
if (input.issuedAt > Number.MAX_SAFE_INTEGER - lifetimeSeconds) {
|
|
398
384
|
throw new RangeError("Challenge expiry exceeds the JSON safe-integer range");
|
|
399
385
|
}
|
|
400
|
-
|
|
386
|
+
const builder = new PayloadBuilder2({ schema: EndpointChallengeSchema });
|
|
387
|
+
return EndpointChallengeZod.parse(builder.fields({
|
|
401
388
|
challengeId: generateHandshakeId(),
|
|
402
389
|
chainId: input.chainId,
|
|
403
390
|
publisher: input.publisher,
|
|
@@ -415,7 +402,8 @@ function createEndpointChallenge(input) {
|
|
|
415
402
|
}
|
|
416
403
|
async function createEndpointChallengeResponse(challenge, secret) {
|
|
417
404
|
const challengeHash = await endpointChallengeHash(challenge);
|
|
418
|
-
|
|
405
|
+
const builder = new PayloadBuilder2({ schema: EndpointChallengeResponseSchema });
|
|
406
|
+
return EndpointChallengeResponseZod.parse(builder.fields({
|
|
419
407
|
challenge: challengeHash,
|
|
420
408
|
proof: await hmacProof(secret, challengeHash)
|
|
421
409
|
}).build());
|
|
@@ -425,8 +413,7 @@ async function verifyEndpointChallengeProof(input) {
|
|
|
425
413
|
const challenge = EndpointChallengeZod.parse(input.challenge);
|
|
426
414
|
const response = EndpointChallengeResponseZod.parse(input.response);
|
|
427
415
|
const challengeHash = await endpointChallengeHash(challenge);
|
|
428
|
-
|
|
429
|
-
return equalProof(response.proof, await hmacProof(input.secret, challengeHash));
|
|
416
|
+
return response.challenge === challengeHash && equalProof(response.proof, await hmacProof(input.secret, challengeHash));
|
|
430
417
|
} catch {
|
|
431
418
|
return false;
|
|
432
419
|
}
|
|
@@ -434,8 +421,7 @@ async function verifyEndpointChallengeProof(input) {
|
|
|
434
421
|
async function verifyEndpointChallengeResponse(input) {
|
|
435
422
|
try {
|
|
436
423
|
const challenge = EndpointChallengeZod.parse(input.challenge);
|
|
437
|
-
|
|
438
|
-
return await verifyEndpointChallengeProof(input);
|
|
424
|
+
return Number.isSafeInteger(input.nowSeconds) && input.nowSeconds >= challenge.issuedAt && input.nowSeconds < challenge.expiresAt && await verifyEndpointChallengeProof(input);
|
|
439
425
|
} catch {
|
|
440
426
|
return false;
|
|
441
427
|
}
|
|
@@ -566,7 +552,8 @@ var suite = new CipherSuite({
|
|
|
566
552
|
kdf: new HkdfSha256(),
|
|
567
553
|
aead: new Aes128Gcm()
|
|
568
554
|
});
|
|
569
|
-
var
|
|
555
|
+
var textEncoder2 = new TextEncoder();
|
|
556
|
+
var hpkeInfo = textEncoder2.encode(WAKE_SUBSCRIPTION_HPKE_PROFILE2);
|
|
570
557
|
function asInternalHpkeKeyPair(value) {
|
|
571
558
|
if (typeof value !== "object" || value === null || !("privateKey" in value) || !("publicKey" in value)) {
|
|
572
559
|
throw new TypeError("HPKE implementation returned an invalid key pair");
|
|
@@ -687,7 +674,8 @@ async function withHandshakeObjectHash(body) {
|
|
|
687
674
|
return Object.freeze({ body, objectHash: await handshakeObjectHash(body) });
|
|
688
675
|
}
|
|
689
676
|
function createPublisherEncryptionKey(input) {
|
|
690
|
-
|
|
677
|
+
const builder = new PayloadBuilder3({ schema: PublisherEncryptionKeySchema });
|
|
678
|
+
return PublisherEncryptionKeyZod.parse(builder.fields({
|
|
691
679
|
keyId: input.keyId ?? generateHandshakeId2(),
|
|
692
680
|
profile: WAKE_SUBSCRIPTION_HPKE_PROFILE3,
|
|
693
681
|
publicKey: input.publicKey,
|
|
@@ -718,7 +706,8 @@ async function generatePublisherEncryptionKey(input) {
|
|
|
718
706
|
});
|
|
719
707
|
}
|
|
720
708
|
function createPublisherService(input) {
|
|
721
|
-
|
|
709
|
+
const builder = new PayloadBuilder3({ schema: PublisherServiceSchema });
|
|
710
|
+
return PublisherServiceZod.parse(builder.fields({
|
|
722
711
|
authorizationChainId: input.authorizationChainId,
|
|
723
712
|
serviceId: input.serviceId ?? generateHandshakeId2(),
|
|
724
713
|
revision: input.revision ?? 1,
|
|
@@ -744,7 +733,8 @@ function createPublisherService(input) {
|
|
|
744
733
|
}).build());
|
|
745
734
|
}
|
|
746
735
|
function createWakeGrant(input) {
|
|
747
|
-
|
|
736
|
+
const builder = new PayloadBuilder3({ schema: WakeGrantObjectSchema });
|
|
737
|
+
return WakeGrantObjectZod.parse(builder.fields({
|
|
748
738
|
grantId: input.grantId ?? generateGrantId(),
|
|
749
739
|
deploymentId: input.deploymentId,
|
|
750
740
|
publisher: input.publisher,
|
|
@@ -758,7 +748,8 @@ function createWakeSubscriptionPlaintext(input) {
|
|
|
758
748
|
globalThis.crypto.getRandomValues(secretBytes);
|
|
759
749
|
}
|
|
760
750
|
const challengeSecret = input.challengeSecret ?? bytesToCanonicalBase64Url3(secretBytes);
|
|
761
|
-
|
|
751
|
+
const builder = new PayloadBuilder3({ schema: WakeSubscriptionPlaintextSchema });
|
|
752
|
+
return WakeSubscriptionPlaintextZod2.parse(builder.fields({
|
|
762
753
|
endpoint: input.endpoint,
|
|
763
754
|
audience: input.audience,
|
|
764
755
|
deploymentId: input.deploymentId,
|
|
@@ -776,21 +767,20 @@ function createWakeSubscriptionPlaintext(input) {
|
|
|
776
767
|
}).build());
|
|
777
768
|
}
|
|
778
769
|
async function createEncryptedWakeSubscription(input) {
|
|
779
|
-
const
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
);
|
|
770
|
+
const builder = new PayloadBuilder3({ schema: EncryptedWakeSubscriptionSchema });
|
|
771
|
+
const cleartext = WakeSubscriptionCleartextZod3.parse(builder.fields({
|
|
772
|
+
subscriptionId: input.subscriptionId ?? generateHandshakeId2(),
|
|
773
|
+
revision: input.revision ?? 1,
|
|
774
|
+
...input.supersedes === void 0 ? {} : { supersedes: input.supersedes },
|
|
775
|
+
chainId: input.chainId,
|
|
776
|
+
publisher: input.publisher,
|
|
777
|
+
service: input.service,
|
|
778
|
+
encryptionKey: input.publisherKey.encryptionKey,
|
|
779
|
+
keyId: input.publisherKey.keyId,
|
|
780
|
+
grant: input.grant,
|
|
781
|
+
eventKind: SOURCE_WAKE_EVENT_KIND,
|
|
782
|
+
expiresAtBlock: input.expiresAtBlock
|
|
783
|
+
}).build());
|
|
794
784
|
return await encryptWakeSubscription({
|
|
795
785
|
plaintext: input.plaintext,
|
|
796
786
|
publisherKey: input.publisherKey,
|
|
@@ -799,7 +789,8 @@ async function createEncryptedWakeSubscription(input) {
|
|
|
799
789
|
});
|
|
800
790
|
}
|
|
801
791
|
function createWakeSubscriptionAcceptance(input) {
|
|
802
|
-
|
|
792
|
+
const builder = new PayloadBuilder3({ schema: WakeSubscriptionAcceptanceSchema });
|
|
793
|
+
return WakeSubscriptionAcceptanceZod.parse(builder.fields({
|
|
803
794
|
challenge: input.challenge,
|
|
804
795
|
encryptionKey: input.encryptionKey,
|
|
805
796
|
grant: input.grant,
|
|
@@ -809,23 +800,24 @@ function createWakeSubscriptionAcceptance(input) {
|
|
|
809
800
|
}).build());
|
|
810
801
|
}
|
|
811
802
|
function createPublisherServiceRevocation(service) {
|
|
812
|
-
|
|
803
|
+
const builder = new PayloadBuilder3({ schema: PublisherServiceRevocationSchema });
|
|
804
|
+
return PublisherServiceRevocationZod.parse(builder.fields({ service }).build());
|
|
813
805
|
}
|
|
814
806
|
function createPublisherEncryptionKeyRevocation(key) {
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
);
|
|
807
|
+
const builder = new PayloadBuilder3({ schema: PublisherEncryptionKeyRevocationSchema });
|
|
808
|
+
return PublisherEncryptionKeyRevocationZod.parse(builder.fields({ key }).build());
|
|
818
809
|
}
|
|
819
810
|
function createWakeGrantRevocation(grant) {
|
|
820
|
-
|
|
811
|
+
const builder = new PayloadBuilder3({ schema: WakeGrantRevocationSchema });
|
|
812
|
+
return WakeGrantRevocationZod.parse(builder.fields({ grant }).build());
|
|
821
813
|
}
|
|
822
814
|
function createWakeSubscriptionRevocation(subscription) {
|
|
823
|
-
|
|
815
|
+
const builder = new PayloadBuilder3({ schema: WakeSubscriptionRevocationSchema });
|
|
816
|
+
return WakeSubscriptionRevocationZod.parse(builder.fields({ subscription }).build());
|
|
824
817
|
}
|
|
825
818
|
function createWakeSubscriptionAcceptanceRevocation(acceptance) {
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
);
|
|
819
|
+
const builder = new PayloadBuilder3({ schema: WakeSubscriptionAcceptanceRevocationSchema });
|
|
820
|
+
return WakeSubscriptionAcceptanceRevocationZod.parse(builder.fields({ acceptance }).build());
|
|
829
821
|
}
|
|
830
822
|
|
|
831
823
|
// src/lifecycleSelection.ts
|
|
@@ -842,12 +834,10 @@ function isUnrevokedEvidence(claimedAtBlock, revokedAtBlock, finalizedHead) {
|
|
|
842
834
|
return isVisible(claimedAtBlock, finalizedHead) && (revokedAtBlock === void 0 || isNonnegativeSafeInteger2(revokedAtBlock) && revokedAtBlock >= claimedAtBlock) && !isRevoked(revokedAtBlock, finalizedHead);
|
|
843
835
|
}
|
|
844
836
|
function isInsideExclusiveWindow(finalizedHead, validFromBlock, expiresAtBlock) {
|
|
845
|
-
|
|
846
|
-
return expiresAtBlock === void 0 || isNonnegativeSafeInteger2(expiresAtBlock) && expiresAtBlock > validFromBlock && finalizedHead < expiresAtBlock;
|
|
837
|
+
return isNonnegativeSafeInteger2(validFromBlock) && finalizedHead >= validFromBlock && (expiresAtBlock === void 0 || isNonnegativeSafeInteger2(expiresAtBlock) && expiresAtBlock > validFromBlock && finalizedHead < expiresAtBlock);
|
|
847
838
|
}
|
|
848
839
|
function isRevisionShapeValid(revision) {
|
|
849
|
-
if (!Number.isSafeInteger(revision.revision) || revision.revision < 1) return false;
|
|
850
|
-
if (!isNonnegativeSafeInteger2(revision.claimedAtBlock)) return false;
|
|
840
|
+
if (!Number.isSafeInteger(revision.revision) || revision.revision < 1 || !isNonnegativeSafeInteger2(revision.claimedAtBlock)) return false;
|
|
851
841
|
if (revision.revokedAtBlock !== void 0 && (!isNonnegativeSafeInteger2(revision.revokedAtBlock) || revision.revokedAtBlock < revision.claimedAtBlock)) return false;
|
|
852
842
|
return revision.revision === 1 ? revision.supersedes === void 0 : revision.supersedes !== void 0;
|
|
853
843
|
}
|
|
@@ -910,7 +900,7 @@ function selectPublisherService(input) {
|
|
|
910
900
|
const groups = groupServicesByIdentity(input.services, input);
|
|
911
901
|
const selectable = [];
|
|
912
902
|
for (const revisions of groups.values()) {
|
|
913
|
-
if (input.serviceId === void 0 &&
|
|
903
|
+
if (input.serviceId === void 0 && revisions.every((service2) => !service2.eventKinds.includes(input.eventKind))) {
|
|
914
904
|
continue;
|
|
915
905
|
}
|
|
916
906
|
const resolution = resolveLinearChain(revisions, input.finalizedHead);
|
|
@@ -921,8 +911,7 @@ function selectPublisherService(input) {
|
|
|
921
911
|
}
|
|
922
912
|
}
|
|
923
913
|
if (selectable.length === 0) return { ok: false, reason: "service-not-found" };
|
|
924
|
-
|
|
925
|
-
return { ok: true, service: selectable[0] };
|
|
914
|
+
return selectable.length > 1 ? { ok: false, reason: "ambiguous-service" } : { ok: true, service: selectable[0] };
|
|
926
915
|
}
|
|
927
916
|
function resolvePreferredEncryptionKey(input) {
|
|
928
917
|
const preferredHash = input.service.preferredEncryptionKey;
|
|
@@ -935,10 +924,7 @@ function resolvePreferredEncryptionKey(input) {
|
|
|
935
924
|
const key = exact[0];
|
|
936
925
|
const sameStableIdentity = input.keys.filter((candidate) => candidate.source === key.source && candidate.keyId === key.keyId && candidate.objectHash !== key.objectHash && isVisible(candidate.claimedAtBlock, input.finalizedHead));
|
|
937
926
|
if (sameStableIdentity.length > 0) return { ok: false, reason: "ambiguous-key" };
|
|
938
|
-
|
|
939
|
-
return { ok: false, reason: "preferred-key-inactive" };
|
|
940
|
-
}
|
|
941
|
-
return { ok: true, key };
|
|
927
|
+
return !isUnrevokedEvidence(key.claimedAtBlock, key.revokedAtBlock, input.finalizedHead) || !isInsideExclusiveWindow(input.finalizedHead, key.validFromBlock, key.expiresAtBlock) ? { ok: false, reason: "preferred-key-inactive" } : { ok: true, key };
|
|
942
928
|
}
|
|
943
929
|
function acceptanceFor(subscription, input) {
|
|
944
930
|
return input.acceptances.filter((acceptance) => acceptance.source === input.publisherSource && acceptance.subscription === subscription.objectHash && isVisible(acceptance.acceptanceBlock, input.finalizedHead));
|
|
@@ -983,10 +969,7 @@ function selectSubscriptionActivation(input) {
|
|
|
983
969
|
if (selected === void 0) return { ok: false, reason: "subscription-pending" };
|
|
984
970
|
const latest = resolution.chain.at(-1);
|
|
985
971
|
if (!isActiveAcceptedSubscription(selected, input.finalizedHead)) {
|
|
986
|
-
|
|
987
|
-
return { ok: false, reason: "subscription-pending" };
|
|
988
|
-
}
|
|
989
|
-
return { ok: false, reason: "subscription-inactive" };
|
|
972
|
+
return { ok: false, reason: latest?.objectHash === selected.subscription.objectHash ? "subscription-inactive" : "subscription-pending" };
|
|
990
973
|
}
|
|
991
974
|
return {
|
|
992
975
|
acceptance: selected.acceptance,
|
|
@@ -1033,9 +1016,7 @@ function createMemoryStatementGrantGraph(initialHead = 0) {
|
|
|
1033
1016
|
if (input.block > head) head = input.block;
|
|
1034
1017
|
}
|
|
1035
1018
|
return {
|
|
1036
|
-
async
|
|
1037
|
-
return head;
|
|
1038
|
-
},
|
|
1019
|
+
head: async () => head,
|
|
1039
1020
|
setHead(block) {
|
|
1040
1021
|
head = block;
|
|
1041
1022
|
},
|
|
@@ -1053,9 +1034,7 @@ function createMemoryStatementGrantGraph(initialHead = 0) {
|
|
|
1053
1034
|
}
|
|
1054
1035
|
return records;
|
|
1055
1036
|
},
|
|
1056
|
-
async
|
|
1057
|
-
return objects.get(objectHash);
|
|
1058
|
-
},
|
|
1037
|
+
object: async (objectHash) => objects.get(objectHash),
|
|
1059
1038
|
claim(input) {
|
|
1060
1039
|
if (input.grant.schema !== WakeGrantObjectSchema2) {
|
|
1061
1040
|
throw new Error(`expected ${WakeGrantObjectSchema2}`);
|
|
@@ -1077,7 +1056,7 @@ function createMemoryStatementGrantGraph(initialHead = 0) {
|
|
|
1077
1056
|
revoke(input) {
|
|
1078
1057
|
const revocation = { grant: input.grantObjectHash };
|
|
1079
1058
|
const source = normalizeAddress(input.source);
|
|
1080
|
-
const subjects =
|
|
1059
|
+
const subjects = claims.values().filter((claim) => claim.source === source && claim.objectHash === input.grantObjectHash).map((claim) => claim.subject).toArray();
|
|
1081
1060
|
const uniqueSubjects = [...new Set(subjects)];
|
|
1082
1061
|
if (input.subject === void 0 && uniqueSubjects.length > 1) {
|
|
1083
1062
|
throw new Error(`cannot infer one subject for ambiguous grant Claim ${input.grantObjectHash}`);
|
|
@@ -1107,7 +1086,14 @@ function createMemoryWakeInbox(options = {}) {
|
|
|
1107
1086
|
let receiptSequence = 0;
|
|
1108
1087
|
let tail = Promise.resolve();
|
|
1109
1088
|
function exclusive(work) {
|
|
1110
|
-
const
|
|
1089
|
+
const previous = tail;
|
|
1090
|
+
const run = (async () => {
|
|
1091
|
+
try {
|
|
1092
|
+
await previous;
|
|
1093
|
+
} catch {
|
|
1094
|
+
}
|
|
1095
|
+
return await work();
|
|
1096
|
+
})();
|
|
1111
1097
|
tail = Promise.allSettled([run]);
|
|
1112
1098
|
return run;
|
|
1113
1099
|
}
|
|
@@ -1140,36 +1126,32 @@ function createMemoryWakeInbox(options = {}) {
|
|
|
1140
1126
|
get wakeRecordCount() {
|
|
1141
1127
|
return wakeRecords.size;
|
|
1142
1128
|
},
|
|
1143
|
-
async
|
|
1144
|
-
|
|
1145
|
-
|
|
1146
|
-
|
|
1147
|
-
|
|
1148
|
-
|
|
1149
|
-
|
|
1150
|
-
|
|
1151
|
-
|
|
1152
|
-
|
|
1153
|
-
|
|
1154
|
-
|
|
1155
|
-
|
|
1156
|
-
|
|
1157
|
-
id: `receipt-${receiptSequence += 1}`,
|
|
1158
|
-
publisher: attempt.publisher,
|
|
1159
|
-
wakeId: attempt.wakeId
|
|
1160
|
-
});
|
|
1161
|
-
await options.enqueue?.(wake);
|
|
1162
|
-
queued.push(wake);
|
|
1163
|
-
const binding = {
|
|
1164
|
-
eventHash: attempt.eventHash,
|
|
1165
|
-
receipt,
|
|
1166
|
-
wakeId: attempt.wakeId
|
|
1167
|
-
};
|
|
1168
|
-
tokenRecords.set(tokenKey(attempt), { ...binding, retainJwtUntil: attempt.retainJwtUntil });
|
|
1169
|
-
wakeRecords.set(wakeKey(attempt), binding);
|
|
1170
|
-
return { kind: "enqueued", receipt };
|
|
1129
|
+
resolveAttempt: async (attempt) => await exclusive(async () => {
|
|
1130
|
+
pruneExpiredTokens();
|
|
1131
|
+
return matchRecorded(attempt) ?? { kind: "new" };
|
|
1132
|
+
}),
|
|
1133
|
+
commitAuthorized: async ({ attempt, wake }) => await exclusive(async () => {
|
|
1134
|
+
pruneExpiredTokens();
|
|
1135
|
+
const recorded = matchRecorded(attempt);
|
|
1136
|
+
if (recorded !== void 0) return recorded;
|
|
1137
|
+
const receipt = Object.freeze({
|
|
1138
|
+
audience: attempt.audience,
|
|
1139
|
+
eventHash: attempt.eventHash,
|
|
1140
|
+
id: `receipt-${receiptSequence += 1}`,
|
|
1141
|
+
publisher: attempt.publisher,
|
|
1142
|
+
wakeId: attempt.wakeId
|
|
1171
1143
|
});
|
|
1172
|
-
|
|
1144
|
+
await options.enqueue?.(wake);
|
|
1145
|
+
queued.push(wake);
|
|
1146
|
+
const binding = {
|
|
1147
|
+
eventHash: attempt.eventHash,
|
|
1148
|
+
receipt,
|
|
1149
|
+
wakeId: attempt.wakeId
|
|
1150
|
+
};
|
|
1151
|
+
tokenRecords.set(tokenKey(attempt), { ...binding, retainJwtUntil: attempt.retainJwtUntil });
|
|
1152
|
+
wakeRecords.set(wakeKey(attempt), binding);
|
|
1153
|
+
return { kind: "enqueued", receipt };
|
|
1154
|
+
})
|
|
1173
1155
|
};
|
|
1174
1156
|
}
|
|
1175
1157
|
function tokenKey(attempt) {
|
|
@@ -1204,12 +1186,8 @@ function createMemoryWakeQueue() {
|
|
|
1204
1186
|
}
|
|
1205
1187
|
};
|
|
1206
1188
|
},
|
|
1207
|
-
async
|
|
1208
|
-
|
|
1209
|
-
},
|
|
1210
|
-
async pendingCount() {
|
|
1211
|
-
return pending.length;
|
|
1212
|
-
},
|
|
1189
|
+
inflightCount: async () => inflight.size,
|
|
1190
|
+
pendingCount: async () => pending.length,
|
|
1213
1191
|
async recoverInflight() {
|
|
1214
1192
|
const recovered = inflight.size;
|
|
1215
1193
|
for (const entry of inflight.values()) pending.push(entry);
|
|
@@ -1320,8 +1298,7 @@ function publicBindingFailure(candidate, parsed) {
|
|
|
1320
1298
|
if (!hasExactKeyBinding(parsed.service, hashedKey, parsed.subscription)) return "key-binding-invalid";
|
|
1321
1299
|
if (!isActiveAt(parsed.service, candidate.tupleBlock) || !isActiveAt(parsed.service, candidate.finalizedHead)) return "service-inactive";
|
|
1322
1300
|
if (!isActiveAt(parsed.key, candidate.tupleBlock) || !isActiveAt(parsed.key, candidate.finalizedHead)) return "key-inactive";
|
|
1323
|
-
|
|
1324
|
-
return void 0;
|
|
1301
|
+
return !expiryWithinServicePolicy(parsed.subscription, parsed.service, candidate.tupleBlock) || parsed.subscription.expiresAtBlock - candidate.finalizedHead <= 2 ? "subscription-expiry-invalid" : void 0;
|
|
1325
1302
|
}
|
|
1326
1303
|
async function decryptCandidate(candidate, parsed) {
|
|
1327
1304
|
let privateKey;
|
|
@@ -1385,19 +1362,14 @@ async function validateAndDecryptPublisherSubscription(candidate) {
|
|
|
1385
1362
|
if (!hasExactQueueScope(parsed.grant, decrypted.plaintext)) {
|
|
1386
1363
|
return rejectPublisherSubscription("grant-scope-invalid");
|
|
1387
1364
|
}
|
|
1388
|
-
|
|
1389
|
-
return rejectPublisherSubscription("service-limit-invalid");
|
|
1390
|
-
}
|
|
1391
|
-
return validatedPublisherSubscription(candidate, parsed, decrypted.plaintext);
|
|
1365
|
+
return filterWithinServicePolicy(parsed.service, decrypted.plaintext) ? validatedPublisherSubscription(candidate, parsed, decrypted.plaintext) : rejectPublisherSubscription("service-limit-invalid");
|
|
1392
1366
|
}
|
|
1393
1367
|
function endpointChallengeMatchesPublisherContext(challenge, context) {
|
|
1394
1368
|
const parsed = EndpointChallengeZod3.safeParse(challenge);
|
|
1395
|
-
|
|
1396
|
-
return parsed.data.chainId === context.chainId && parsed.data.publisher === context.publisher && parsed.data.subscriber === context.subscriber && parsed.data.service === context.service && parsed.data.encryptionKey === context.encryptionKey && parsed.data.keyId === context.keyId && parsed.data.subscription === context.subscription && parsed.data.grant === context.grant && parsed.data.eventKind === context.eventKind;
|
|
1369
|
+
return parsed.success && parsed.data.chainId === context.chainId && parsed.data.publisher === context.publisher && parsed.data.subscriber === context.subscriber && parsed.data.service === context.service && parsed.data.encryptionKey === context.encryptionKey && parsed.data.keyId === context.keyId && parsed.data.subscription === context.subscription && parsed.data.grant === context.grant && parsed.data.eventKind === context.eventKind;
|
|
1397
1370
|
}
|
|
1398
1371
|
async function challengeRecordMatches(record, challenge, challengeHash, responseHash) {
|
|
1399
|
-
|
|
1400
|
-
return responseHash === void 0 || record.responseHash === responseHash;
|
|
1372
|
+
return record.challengeHash === challengeHash && await endpointChallengeHash(record.challenge) === challengeHash && await endpointChallengeHash(challenge) === challengeHash && (responseHash === void 0 || record.responseHash === responseHash);
|
|
1401
1373
|
}
|
|
1402
1374
|
async function issuePublisherEndpointChallenge(input) {
|
|
1403
1375
|
const context = input.subscription.context;
|
|
@@ -1440,8 +1412,7 @@ async function beginPublisherEndpointChallengeAttempt(input) {
|
|
|
1440
1412
|
HashZod4.parse(input.challengeHash)
|
|
1441
1413
|
)) return { kind: "store-invalid" };
|
|
1442
1414
|
if ((result.kind === "started" || result.kind === "already-attempted") && result.record.state !== "attempted") return { kind: "store-invalid" };
|
|
1443
|
-
|
|
1444
|
-
return result;
|
|
1415
|
+
return result.kind === "verified" && result.record.state !== "verified" ? { kind: "store-invalid" } : result;
|
|
1445
1416
|
} catch {
|
|
1446
1417
|
return { kind: "store-unavailable" };
|
|
1447
1418
|
}
|
|
@@ -1458,10 +1429,7 @@ async function validateChallengeCompletion(input, result, challengeHash, respons
|
|
|
1458
1429
|
if (result.kind === "expired") return completeFailure("challenge-expired");
|
|
1459
1430
|
if (result.kind === "not-attempted") return completeFailure("challenge-not-attempted");
|
|
1460
1431
|
if (result.kind === "collision") return completeFailure("challenge-response-collision");
|
|
1461
|
-
|
|
1462
|
-
return completeFailure("challenge-store-invalid");
|
|
1463
|
-
}
|
|
1464
|
-
return result;
|
|
1432
|
+
return result.kind !== "duplicate" && result.kind !== "verified" || !await challengeRecordMatches(result.record, input.challenge, challengeHash, responseHash) ? completeFailure("challenge-store-invalid") : result;
|
|
1465
1433
|
}
|
|
1466
1434
|
async function completePublisherEndpointChallenge(input) {
|
|
1467
1435
|
if (!endpointChallengeMatchesPublisherContext(input.challenge, input.subscription.context)) {
|
|
@@ -1617,9 +1585,7 @@ async function readRevocations(viewer, controller, subject, atBlock) {
|
|
|
1617
1585
|
for (const claim of claims) {
|
|
1618
1586
|
if (!isLiveClaim(claim, controller, subject, WakeGrantRevocationSchema3, atBlock)) continue;
|
|
1619
1587
|
const object = await viewer.object(claim.objectHash);
|
|
1620
|
-
if (object?.assurance !== "resolved") continue;
|
|
1621
|
-
if (object.declaredSchema !== WakeGrantRevocationSchema3 || object.objectHash !== claim.objectHash) continue;
|
|
1622
|
-
if (!isRecord2(object.params) || Object.hasOwn(object.params, "schema")) continue;
|
|
1588
|
+
if (object?.assurance !== "resolved" || object.declaredSchema !== WakeGrantRevocationSchema3 || object.objectHash !== claim.objectHash || !isRecord2(object.params) || Object.hasOwn(object.params, "schema")) continue;
|
|
1623
1589
|
const revocation = asWakeGrantRevocation({ ...object.params, schema: object.declaredSchema });
|
|
1624
1590
|
if (revocation !== void 0) revoked.add(revocation.grant);
|
|
1625
1591
|
}
|
|
@@ -1651,13 +1617,7 @@ async function resolveEvidence(viewer, claim, request, atBlock, revokedGrantHash
|
|
|
1651
1617
|
});
|
|
1652
1618
|
}
|
|
1653
1619
|
function isLiveClaim(claim, controller, subject, declaredObjectSchema, atBlock) {
|
|
1654
|
-
|
|
1655
|
-
if (claim.subject !== subject) return false;
|
|
1656
|
-
if (claim.declaredObjectSchema !== declaredObjectSchema) return false;
|
|
1657
|
-
if (!isNonnegativeSafeInteger4(claim.firstBlock) || claim.firstBlock > atBlock) return false;
|
|
1658
|
-
if (!isNonnegativeSafeInteger4(claim.lastBlock) || claim.lastBlock < claim.firstBlock) return false;
|
|
1659
|
-
if (!HashZod6.safeParse(claim.firstEventHash).success) return false;
|
|
1660
|
-
return HashZod6.safeParse(claim.objectHash).success;
|
|
1620
|
+
return claim.source === controller && claim.subject === subject && claim.declaredObjectSchema === declaredObjectSchema && isNonnegativeSafeInteger4(claim.firstBlock) && claim.firstBlock <= atBlock && isNonnegativeSafeInteger4(claim.lastBlock) && claim.lastBlock >= claim.firstBlock && HashZod6.safeParse(claim.firstEventHash).success && HashZod6.safeParse(claim.objectHash).success;
|
|
1661
1621
|
}
|
|
1662
1622
|
function parseExactGrantObject(object, expectedObjectHash) {
|
|
1663
1623
|
if (object?.assurance !== "resolved") return void 0;
|
|
@@ -1841,8 +1801,7 @@ async function verifyJwtProfile(token, audience, nowSeconds) {
|
|
|
1841
1801
|
return reject2("jwt-malformed", [errorMessage2(error)]);
|
|
1842
1802
|
}
|
|
1843
1803
|
if (!verified.ok) {
|
|
1844
|
-
|
|
1845
|
-
return reject2(classifySdkJwtFailure(verified.reasons), verified.reasons);
|
|
1804
|
+
return Object.hasOwn(verified.payload ?? {}, "nbf") ? reject2("jwt-nbf-not-allowed") : reject2(classifySdkJwtFailure(verified.reasons), verified.reasons);
|
|
1846
1805
|
}
|
|
1847
1806
|
const wireResult = parseStrictJwtWire(verified.header, verified.payload, audience);
|
|
1848
1807
|
if (!wireResult.ok) return wireResult;
|
|
@@ -1863,8 +1822,7 @@ async function verifyJwtProfile(token, audience, nowSeconds) {
|
|
|
1863
1822
|
function parseStrictJwtWire(header, payload, audience) {
|
|
1864
1823
|
const headerResult = WakeJwtHeaderZod.safeParse(header);
|
|
1865
1824
|
if (!headerResult.success) {
|
|
1866
|
-
|
|
1867
|
-
return reject2("jwt-header-invalid", zodDetails(headerResult.error.issues));
|
|
1825
|
+
return NormalizedAddressZod7.safeParse(header.kid).success ? reject2("jwt-header-invalid", zodDetails(headerResult.error.issues)) : reject2("jwt-identity-invalid");
|
|
1868
1826
|
}
|
|
1869
1827
|
if (Object.hasOwn(payload, "nbf")) return reject2("jwt-nbf-not-allowed");
|
|
1870
1828
|
if (!NormalizedAddressZod7.safeParse(payload.iss).success) return reject2("jwt-identity-invalid");
|
|
@@ -1887,16 +1845,12 @@ function classifySdkJwtFailure(reasons) {
|
|
|
1887
1845
|
if (reasons.some((reason) => reason.startsWith("unsupported alg:") || reason.startsWith("unsupported typ:"))) {
|
|
1888
1846
|
return "jwt-header-invalid";
|
|
1889
1847
|
}
|
|
1890
|
-
|
|
1891
|
-
return "jwt-identity-invalid";
|
|
1892
|
-
}
|
|
1893
|
-
return "jwt-invalid";
|
|
1848
|
+
return reasons.some((reason) => reason.startsWith("invalid public key:") || reason.startsWith("public key does not derive to kid:") || reason === "header.kid does not match payload.iss") ? "jwt-identity-invalid" : "jwt-invalid";
|
|
1894
1849
|
}
|
|
1895
1850
|
function malformedWake(body, issues) {
|
|
1896
1851
|
const details = zodDetails(issues);
|
|
1897
1852
|
if (hasInvertedSafeRange(body)) return reject2("range-invalid", details);
|
|
1898
|
-
|
|
1899
|
-
return reject2("event-malformed", details);
|
|
1853
|
+
return reject2(isRecord3(body) && Object.hasOwn(body, "wakeId") && issues.some((issue) => issue.path[0] === "wakeId") ? "wake-id-invalid" : "event-malformed", details);
|
|
1900
1854
|
}
|
|
1901
1855
|
function hasInvertedSafeRange(value) {
|
|
1902
1856
|
if (!isRecord3(value)) return false;
|