@mcp-i/core 0.1.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/LICENSE +21 -0
- package/README.md +390 -0
- package/dist/auth/handshake.d.ts +104 -0
- package/dist/auth/handshake.d.ts.map +1 -0
- package/dist/auth/handshake.js +230 -0
- package/dist/auth/handshake.js.map +1 -0
- package/dist/auth/index.d.ts +3 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +2 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/types.d.ts +31 -0
- package/dist/auth/types.d.ts.map +1 -0
- package/dist/auth/types.js +7 -0
- package/dist/auth/types.js.map +1 -0
- package/dist/delegation/audience-validator.d.ts +9 -0
- package/dist/delegation/audience-validator.d.ts.map +1 -0
- package/dist/delegation/audience-validator.js +17 -0
- package/dist/delegation/audience-validator.js.map +1 -0
- package/dist/delegation/bitstring.d.ts +37 -0
- package/dist/delegation/bitstring.d.ts.map +1 -0
- package/dist/delegation/bitstring.js +117 -0
- package/dist/delegation/bitstring.js.map +1 -0
- package/dist/delegation/cascading-revocation.d.ts +45 -0
- package/dist/delegation/cascading-revocation.d.ts.map +1 -0
- package/dist/delegation/cascading-revocation.js +148 -0
- package/dist/delegation/cascading-revocation.js.map +1 -0
- package/dist/delegation/delegation-graph.d.ts +49 -0
- package/dist/delegation/delegation-graph.d.ts.map +1 -0
- package/dist/delegation/delegation-graph.js +99 -0
- package/dist/delegation/delegation-graph.js.map +1 -0
- package/dist/delegation/did-key-resolver.d.ts +64 -0
- package/dist/delegation/did-key-resolver.d.ts.map +1 -0
- package/dist/delegation/did-key-resolver.js +154 -0
- package/dist/delegation/did-key-resolver.js.map +1 -0
- package/dist/delegation/did-web-resolver.d.ts +83 -0
- package/dist/delegation/did-web-resolver.d.ts.map +1 -0
- package/dist/delegation/did-web-resolver.js +218 -0
- package/dist/delegation/did-web-resolver.js.map +1 -0
- package/dist/delegation/index.d.ts +21 -0
- package/dist/delegation/index.d.ts.map +1 -0
- package/dist/delegation/index.js +21 -0
- package/dist/delegation/index.js.map +1 -0
- package/dist/delegation/outbound-headers.d.ts +81 -0
- package/dist/delegation/outbound-headers.d.ts.map +1 -0
- package/dist/delegation/outbound-headers.js +139 -0
- package/dist/delegation/outbound-headers.js.map +1 -0
- package/dist/delegation/outbound-proof.d.ts +43 -0
- package/dist/delegation/outbound-proof.d.ts.map +1 -0
- package/dist/delegation/outbound-proof.js +52 -0
- package/dist/delegation/outbound-proof.js.map +1 -0
- package/dist/delegation/statuslist-manager.d.ts +44 -0
- package/dist/delegation/statuslist-manager.d.ts.map +1 -0
- package/dist/delegation/statuslist-manager.js +126 -0
- package/dist/delegation/statuslist-manager.js.map +1 -0
- package/dist/delegation/storage/memory-graph-storage.d.ts +70 -0
- package/dist/delegation/storage/memory-graph-storage.d.ts.map +1 -0
- package/dist/delegation/storage/memory-graph-storage.js +145 -0
- package/dist/delegation/storage/memory-graph-storage.js.map +1 -0
- package/dist/delegation/storage/memory-statuslist-storage.d.ts +19 -0
- package/dist/delegation/storage/memory-statuslist-storage.d.ts.map +1 -0
- package/dist/delegation/storage/memory-statuslist-storage.js +33 -0
- package/dist/delegation/storage/memory-statuslist-storage.js.map +1 -0
- package/dist/delegation/utils.d.ts +49 -0
- package/dist/delegation/utils.d.ts.map +1 -0
- package/dist/delegation/utils.js +131 -0
- package/dist/delegation/utils.js.map +1 -0
- package/dist/delegation/vc-issuer.d.ts +56 -0
- package/dist/delegation/vc-issuer.d.ts.map +1 -0
- package/dist/delegation/vc-issuer.js +80 -0
- package/dist/delegation/vc-issuer.js.map +1 -0
- package/dist/delegation/vc-verifier.d.ts +112 -0
- package/dist/delegation/vc-verifier.d.ts.map +1 -0
- package/dist/delegation/vc-verifier.js +280 -0
- package/dist/delegation/vc-verifier.js.map +1 -0
- package/dist/index.d.ts +45 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +53 -0
- package/dist/index.js.map +1 -0
- package/dist/logging/index.d.ts +2 -0
- package/dist/logging/index.d.ts.map +1 -0
- package/dist/logging/index.js +2 -0
- package/dist/logging/index.js.map +1 -0
- package/dist/logging/logger.d.ts +23 -0
- package/dist/logging/logger.d.ts.map +1 -0
- package/dist/logging/logger.js +82 -0
- package/dist/logging/logger.js.map +1 -0
- package/dist/middleware/index.d.ts +7 -0
- package/dist/middleware/index.d.ts.map +1 -0
- package/dist/middleware/index.js +7 -0
- package/dist/middleware/index.js.map +1 -0
- package/dist/middleware/with-mcpi.d.ts +152 -0
- package/dist/middleware/with-mcpi.d.ts.map +1 -0
- package/dist/middleware/with-mcpi.js +472 -0
- package/dist/middleware/with-mcpi.js.map +1 -0
- package/dist/proof/errors.d.ts +49 -0
- package/dist/proof/errors.d.ts.map +1 -0
- package/dist/proof/errors.js +61 -0
- package/dist/proof/errors.js.map +1 -0
- package/dist/proof/generator.d.ts +65 -0
- package/dist/proof/generator.d.ts.map +1 -0
- package/dist/proof/generator.js +163 -0
- package/dist/proof/generator.js.map +1 -0
- package/dist/proof/index.d.ts +4 -0
- package/dist/proof/index.d.ts.map +1 -0
- package/dist/proof/index.js +4 -0
- package/dist/proof/index.js.map +1 -0
- package/dist/proof/verifier.d.ts +108 -0
- package/dist/proof/verifier.d.ts.map +1 -0
- package/dist/proof/verifier.js +299 -0
- package/dist/proof/verifier.js.map +1 -0
- package/dist/providers/base.d.ts +64 -0
- package/dist/providers/base.d.ts.map +1 -0
- package/dist/providers/base.js +19 -0
- package/dist/providers/base.js.map +1 -0
- package/dist/providers/index.d.ts +3 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +3 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/providers/memory.d.ts +33 -0
- package/dist/providers/memory.d.ts.map +1 -0
- package/dist/providers/memory.js +102 -0
- package/dist/providers/memory.js.map +1 -0
- package/dist/session/index.d.ts +2 -0
- package/dist/session/index.d.ts.map +1 -0
- package/dist/session/index.js +2 -0
- package/dist/session/index.js.map +1 -0
- package/dist/session/manager.d.ts +77 -0
- package/dist/session/manager.d.ts.map +1 -0
- package/dist/session/manager.js +251 -0
- package/dist/session/manager.js.map +1 -0
- package/dist/types/protocol.d.ts +320 -0
- package/dist/types/protocol.d.ts.map +1 -0
- package/dist/types/protocol.js +229 -0
- package/dist/types/protocol.js.map +1 -0
- package/dist/utils/base58.d.ts +31 -0
- package/dist/utils/base58.d.ts.map +1 -0
- package/dist/utils/base58.js +104 -0
- package/dist/utils/base58.js.map +1 -0
- package/dist/utils/base64.d.ts +13 -0
- package/dist/utils/base64.d.ts.map +1 -0
- package/dist/utils/base64.js +99 -0
- package/dist/utils/base64.js.map +1 -0
- package/dist/utils/crypto-service.d.ts +37 -0
- package/dist/utils/crypto-service.d.ts.map +1 -0
- package/dist/utils/crypto-service.js +153 -0
- package/dist/utils/crypto-service.js.map +1 -0
- package/dist/utils/did-helpers.d.ts +156 -0
- package/dist/utils/did-helpers.d.ts.map +1 -0
- package/dist/utils/did-helpers.js +193 -0
- package/dist/utils/did-helpers.js.map +1 -0
- package/dist/utils/ed25519-constants.d.ts +18 -0
- package/dist/utils/ed25519-constants.d.ts.map +1 -0
- package/dist/utils/ed25519-constants.js +21 -0
- package/dist/utils/ed25519-constants.js.map +1 -0
- package/dist/utils/index.d.ts +5 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +5 -0
- package/dist/utils/index.js.map +1 -0
- package/package.json +105 -0
- package/src/__tests__/integration/full-flow.test.ts +362 -0
- package/src/__tests__/providers/base.test.ts +173 -0
- package/src/__tests__/providers/memory.test.ts +332 -0
- package/src/__tests__/utils/mock-providers.ts +319 -0
- package/src/__tests__/utils/node-crypto-provider.ts +93 -0
- package/src/auth/handshake.ts +411 -0
- package/src/auth/index.ts +11 -0
- package/src/auth/types.ts +40 -0
- package/src/delegation/__tests__/audience-validator.test.ts +110 -0
- package/src/delegation/__tests__/bitstring.test.ts +346 -0
- package/src/delegation/__tests__/cascading-revocation.test.ts +624 -0
- package/src/delegation/__tests__/delegation-graph.test.ts +623 -0
- package/src/delegation/__tests__/did-key-resolver.test.ts +265 -0
- package/src/delegation/__tests__/did-web-resolver.test.ts +467 -0
- package/src/delegation/__tests__/outbound-headers.test.ts +230 -0
- package/src/delegation/__tests__/outbound-proof.test.ts +179 -0
- package/src/delegation/__tests__/statuslist-manager.test.ts +515 -0
- package/src/delegation/__tests__/utils.test.ts +185 -0
- package/src/delegation/__tests__/vc-issuer.test.ts +487 -0
- package/src/delegation/__tests__/vc-verifier.test.ts +1029 -0
- package/src/delegation/audience-validator.ts +24 -0
- package/src/delegation/bitstring.ts +160 -0
- package/src/delegation/cascading-revocation.ts +224 -0
- package/src/delegation/delegation-graph.ts +143 -0
- package/src/delegation/did-key-resolver.ts +181 -0
- package/src/delegation/did-web-resolver.ts +270 -0
- package/src/delegation/index.ts +33 -0
- package/src/delegation/outbound-headers.ts +193 -0
- package/src/delegation/outbound-proof.ts +90 -0
- package/src/delegation/statuslist-manager.ts +219 -0
- package/src/delegation/storage/__tests__/memory-graph-storage.test.ts +366 -0
- package/src/delegation/storage/__tests__/memory-statuslist-storage.test.ts +228 -0
- package/src/delegation/storage/memory-graph-storage.ts +178 -0
- package/src/delegation/storage/memory-statuslist-storage.ts +42 -0
- package/src/delegation/utils.ts +189 -0
- package/src/delegation/vc-issuer.ts +137 -0
- package/src/delegation/vc-verifier.ts +440 -0
- package/src/index.ts +264 -0
- package/src/logging/__tests__/logger.test.ts +366 -0
- package/src/logging/index.ts +6 -0
- package/src/logging/logger.ts +91 -0
- package/src/middleware/__tests__/with-mcpi.test.ts +504 -0
- package/src/middleware/index.ts +16 -0
- package/src/middleware/with-mcpi.ts +766 -0
- package/src/proof/__tests__/proof-generator.test.ts +483 -0
- package/src/proof/__tests__/verifier.test.ts +488 -0
- package/src/proof/errors.ts +75 -0
- package/src/proof/generator.ts +255 -0
- package/src/proof/index.ts +22 -0
- package/src/proof/verifier.ts +449 -0
- package/src/providers/base.ts +68 -0
- package/src/providers/index.ts +15 -0
- package/src/providers/memory.ts +130 -0
- package/src/session/__tests__/session-manager.test.ts +342 -0
- package/src/session/index.ts +7 -0
- package/src/session/manager.ts +332 -0
- package/src/types/protocol.ts +596 -0
- package/src/utils/__tests__/base58.test.ts +281 -0
- package/src/utils/__tests__/base64.test.ts +239 -0
- package/src/utils/__tests__/crypto-service.test.ts +530 -0
- package/src/utils/__tests__/did-helpers.test.ts +156 -0
- package/src/utils/base58.ts +115 -0
- package/src/utils/base64.ts +116 -0
- package/src/utils/crypto-service.ts +209 -0
- package/src/utils/did-helpers.ts +210 -0
- package/src/utils/ed25519-constants.ts +23 -0
- package/src/utils/index.ts +9 -0
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Authorization Handshake — Platform-agnostic Protocol Reference
|
|
3
|
+
*
|
|
4
|
+
* Orchestrates the MCP-I authorization flow:
|
|
5
|
+
* 1. Check agent reputation (optional)
|
|
6
|
+
* 2. Verify delegation exists
|
|
7
|
+
* 3. Return needs_authorization error if missing
|
|
8
|
+
*
|
|
9
|
+
* Uses only the global fetch API — no Node-specific imports.
|
|
10
|
+
* Safe to run on Node.js, Cloudflare Workers, and any fetch-capable runtime.
|
|
11
|
+
*/
|
|
12
|
+
import { createNeedsAuthorizationError } from '../types/protocol.js';
|
|
13
|
+
import { logger } from '../logging/index.js';
|
|
14
|
+
export class MemoryResumeTokenStore {
|
|
15
|
+
tokens = new Map();
|
|
16
|
+
ttl;
|
|
17
|
+
constructor(ttlMs = 600_000) {
|
|
18
|
+
this.ttl = ttlMs;
|
|
19
|
+
}
|
|
20
|
+
async create(agentDid, scopes, metadata) {
|
|
21
|
+
const token = `rt_${Date.now()}_${Math.random().toString(36).substring(2, 18)}`;
|
|
22
|
+
const now = Date.now();
|
|
23
|
+
this.tokens.set(token, {
|
|
24
|
+
agentDid,
|
|
25
|
+
scopes,
|
|
26
|
+
createdAt: now,
|
|
27
|
+
expiresAt: now + this.ttl,
|
|
28
|
+
metadata,
|
|
29
|
+
fulfilled: false,
|
|
30
|
+
});
|
|
31
|
+
return token;
|
|
32
|
+
}
|
|
33
|
+
async get(token) {
|
|
34
|
+
const data = this.tokens.get(token);
|
|
35
|
+
if (!data)
|
|
36
|
+
return null;
|
|
37
|
+
if (Date.now() > data.expiresAt) {
|
|
38
|
+
this.tokens.delete(token);
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
if (data.fulfilled)
|
|
42
|
+
return null;
|
|
43
|
+
return {
|
|
44
|
+
agentDid: data.agentDid,
|
|
45
|
+
scopes: data.scopes,
|
|
46
|
+
createdAt: data.createdAt,
|
|
47
|
+
expiresAt: data.expiresAt,
|
|
48
|
+
metadata: data.metadata,
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
async fulfill(token) {
|
|
52
|
+
const data = this.tokens.get(token);
|
|
53
|
+
if (data) {
|
|
54
|
+
data.fulfilled = true;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
clear() {
|
|
58
|
+
this.tokens.clear();
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Verify agent delegation or return authorization hints.
|
|
63
|
+
*
|
|
64
|
+
* Orchestrates the authorization flow:
|
|
65
|
+
* 1. Optionally check agent reputation against threshold
|
|
66
|
+
* 2. Verify existing delegation via DelegationVerifier
|
|
67
|
+
* 3. Return authorization hints if delegation is missing/invalid
|
|
68
|
+
*
|
|
69
|
+
* @param agentDid - The agent's DID to verify
|
|
70
|
+
* @param scopes - Required scopes for the operation
|
|
71
|
+
* @param config - Authorization configuration including verifier, token store, etc.
|
|
72
|
+
* @param _resumeToken - Optional resume token from previous authorization attempt
|
|
73
|
+
* @returns Result indicating authorization status, delegation, or auth hints
|
|
74
|
+
*/
|
|
75
|
+
export async function verifyOrHints(agentDid, scopes, config, _resumeToken) {
|
|
76
|
+
const startTime = Date.now();
|
|
77
|
+
if (config.debug) {
|
|
78
|
+
logger.debug(`[AuthHandshake] Verifying ${agentDid} for scopes: ${scopes.join(', ')}`);
|
|
79
|
+
}
|
|
80
|
+
let reputation;
|
|
81
|
+
if (config.reputationService && config.authorization.minReputationScore !== undefined) {
|
|
82
|
+
try {
|
|
83
|
+
reputation = await fetchAgentReputation(agentDid, config.reputationService);
|
|
84
|
+
if (config.debug) {
|
|
85
|
+
logger.debug(`[AuthHandshake] Reputation score: ${reputation.score}`);
|
|
86
|
+
}
|
|
87
|
+
if (reputation.score < config.authorization.minReputationScore) {
|
|
88
|
+
if (config.debug) {
|
|
89
|
+
logger.debug(`[AuthHandshake] Reputation ${reputation.score} < ${config.authorization.minReputationScore}, requiring authorization`);
|
|
90
|
+
}
|
|
91
|
+
const authError = await buildNeedsAuthorizationError(agentDid, scopes, config, 'Agent reputation score below threshold');
|
|
92
|
+
return {
|
|
93
|
+
authorized: false,
|
|
94
|
+
authError,
|
|
95
|
+
reputation,
|
|
96
|
+
reason: 'Low reputation score',
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
catch (error) {
|
|
101
|
+
logger.warn('[AuthHandshake] Failed to check reputation:', error);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
let delegationResult;
|
|
105
|
+
try {
|
|
106
|
+
delegationResult = await config.delegationVerifier.verify(agentDid, scopes);
|
|
107
|
+
}
|
|
108
|
+
catch (error) {
|
|
109
|
+
logger.error('[AuthHandshake] Delegation verification failed:', error);
|
|
110
|
+
const errorMessage = `Delegation verification error: ${error instanceof Error ? error.message : 'Unknown error'}`;
|
|
111
|
+
const authError = await buildNeedsAuthorizationError(agentDid, scopes, config, errorMessage);
|
|
112
|
+
return {
|
|
113
|
+
authorized: false,
|
|
114
|
+
authError,
|
|
115
|
+
reason: errorMessage,
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
if (delegationResult.valid && delegationResult.delegation) {
|
|
119
|
+
if (config.debug) {
|
|
120
|
+
logger.debug(`[AuthHandshake] Delegation valid, authorized (${Date.now() - startTime}ms)`);
|
|
121
|
+
}
|
|
122
|
+
return {
|
|
123
|
+
authorized: true,
|
|
124
|
+
delegation: delegationResult.delegation,
|
|
125
|
+
credential: delegationResult.credential,
|
|
126
|
+
reputation,
|
|
127
|
+
reason: 'Valid delegation found',
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
if (config.debug) {
|
|
131
|
+
logger.debug(`[AuthHandshake] No delegation found, returning needs_authorization (${Date.now() - startTime}ms)`);
|
|
132
|
+
}
|
|
133
|
+
const authError = await buildNeedsAuthorizationError(agentDid, scopes, config, delegationResult.reason ?? 'No valid delegation found');
|
|
134
|
+
return {
|
|
135
|
+
authorized: false,
|
|
136
|
+
authError,
|
|
137
|
+
reputation,
|
|
138
|
+
reason: delegationResult.reason ?? 'No delegation',
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
async function fetchAgentReputation(agentDid, reputationConfig) {
|
|
142
|
+
const apiUrl = reputationConfig.apiUrl.replace(/\/$/, '');
|
|
143
|
+
const headers = {
|
|
144
|
+
'Content-Type': 'application/json',
|
|
145
|
+
};
|
|
146
|
+
if (reputationConfig.apiKey) {
|
|
147
|
+
headers['X-API-Key'] = reputationConfig.apiKey;
|
|
148
|
+
}
|
|
149
|
+
const isV2Format = reputationConfig.apiFormat === 'v2';
|
|
150
|
+
let response;
|
|
151
|
+
if (isV2Format) {
|
|
152
|
+
response = await fetch(`${apiUrl}/v1/reputation/${encodeURIComponent(agentDid)}`, {
|
|
153
|
+
method: 'POST',
|
|
154
|
+
headers,
|
|
155
|
+
body: JSON.stringify({ include_details: false }),
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
else {
|
|
159
|
+
response = await fetch(`${apiUrl}/api/v1/reputation/${encodeURIComponent(agentDid)}`, { method: 'GET', headers });
|
|
160
|
+
}
|
|
161
|
+
if (!response.ok) {
|
|
162
|
+
if (response.status === 404) {
|
|
163
|
+
return {
|
|
164
|
+
agentDid,
|
|
165
|
+
score: 50,
|
|
166
|
+
totalInteractions: 0,
|
|
167
|
+
successRate: 0,
|
|
168
|
+
riskLevel: 'unknown',
|
|
169
|
+
updatedAt: Date.now(),
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
throw new Error(`Reputation API error: ${response.status} ${response.statusText}`);
|
|
173
|
+
}
|
|
174
|
+
const data = (await response.json());
|
|
175
|
+
const score = data['score'] ?? 50;
|
|
176
|
+
const levelRaw = (data['level'] ??
|
|
177
|
+
data['riskLevel'] ??
|
|
178
|
+
'unknown').toLowerCase();
|
|
179
|
+
const riskLevel = levelRaw === 'low' || levelRaw === 'medium' || levelRaw === 'high' ? levelRaw : 'unknown';
|
|
180
|
+
return {
|
|
181
|
+
agentDid: data['agent_did'] ??
|
|
182
|
+
data['agentDid'] ??
|
|
183
|
+
agentDid,
|
|
184
|
+
score,
|
|
185
|
+
totalInteractions: data['totalInteractions'] ?? 0,
|
|
186
|
+
successRate: data['successRate'] ?? 0,
|
|
187
|
+
riskLevel,
|
|
188
|
+
updatedAt: data['calculatedAt']
|
|
189
|
+
? new Date(data['calculatedAt']).getTime()
|
|
190
|
+
: (data['updatedAt'] ?? Date.now()),
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
async function buildNeedsAuthorizationError(agentDid, scopes, config, message) {
|
|
194
|
+
const resumeToken = await config.resumeTokenStore.create(agentDid, scopes, {
|
|
195
|
+
requestedAt: Date.now(),
|
|
196
|
+
});
|
|
197
|
+
const expiresAt = Date.now() + (config.authorization.resumeTokenTtl ?? 600_000);
|
|
198
|
+
const authUrl = new URL(config.authorization.authorizationUrl);
|
|
199
|
+
authUrl.searchParams.set('agent_did', agentDid);
|
|
200
|
+
authUrl.searchParams.set('scopes', scopes.join(','));
|
|
201
|
+
authUrl.searchParams.set('resume_token', resumeToken);
|
|
202
|
+
const authCode = resumeToken.substring(0, 8).toUpperCase();
|
|
203
|
+
const display = {
|
|
204
|
+
title: 'Authorization Required',
|
|
205
|
+
hint: ['link', 'qr'],
|
|
206
|
+
authorizationCode: authCode,
|
|
207
|
+
qrUrl: `https://api.qrserver.com/v1/create-qr-code/?data=${encodeURIComponent(authUrl.toString())}`,
|
|
208
|
+
};
|
|
209
|
+
return createNeedsAuthorizationError({
|
|
210
|
+
message,
|
|
211
|
+
authorizationUrl: authUrl.toString(),
|
|
212
|
+
resumeToken,
|
|
213
|
+
expiresAt,
|
|
214
|
+
scopes,
|
|
215
|
+
display,
|
|
216
|
+
});
|
|
217
|
+
}
|
|
218
|
+
export function hasSensitiveScopes(scopes) {
|
|
219
|
+
const sensitivePatterns = [
|
|
220
|
+
'write',
|
|
221
|
+
'delete',
|
|
222
|
+
'admin',
|
|
223
|
+
'payment',
|
|
224
|
+
'transfer',
|
|
225
|
+
'execute',
|
|
226
|
+
'modify',
|
|
227
|
+
];
|
|
228
|
+
return scopes.some((scope) => sensitivePatterns.some((pattern) => scope.toLowerCase().includes(pattern)));
|
|
229
|
+
}
|
|
230
|
+
//# sourceMappingURL=handshake.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handshake.js","sourceRoot":"","sources":["../../src/auth/handshake.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export { verifyOrHints, hasSensitiveScopes, MemoryResumeTokenStore, type AuthHandshakeConfig, type VerifyOrHintsResult, type AgentReputation, type ResumeTokenStore, } from './handshake.js';
|
|
2
|
+
export type { DelegationVerifier, VerifyDelegationResult } from './types.js';
|
|
3
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,sBAAsB,EACtB,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACpB,KAAK,gBAAgB,GACtB,MAAM,gBAAgB,CAAC;AAExB,YAAY,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,sBAAsB,GAKvB,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Authorization types for the auth module.
|
|
3
|
+
*
|
|
4
|
+
* Minimal interfaces required by the auth handshake.
|
|
5
|
+
*/
|
|
6
|
+
import type { DelegationRecord } from '../types/protocol.js';
|
|
7
|
+
export interface VerifyDelegationResult {
|
|
8
|
+
valid: boolean;
|
|
9
|
+
delegation?: DelegationRecord;
|
|
10
|
+
credential?: {
|
|
11
|
+
agent_did: string;
|
|
12
|
+
user_did: string;
|
|
13
|
+
scopes: string[];
|
|
14
|
+
authorization: {
|
|
15
|
+
type: 'oauth' | 'oauth2' | 'password' | 'credential' | 'webauthn' | 'siwe' | 'none';
|
|
16
|
+
provider?: string;
|
|
17
|
+
credentialType?: string;
|
|
18
|
+
rpId?: string;
|
|
19
|
+
userVerification?: 'required' | 'preferred' | 'discouraged';
|
|
20
|
+
chainId?: number;
|
|
21
|
+
domain?: string;
|
|
22
|
+
};
|
|
23
|
+
[key: string]: unknown;
|
|
24
|
+
};
|
|
25
|
+
reason?: string;
|
|
26
|
+
cached?: boolean;
|
|
27
|
+
}
|
|
28
|
+
export interface DelegationVerifier {
|
|
29
|
+
verify(agentDid: string, scopes: string[]): Promise<VerifyDelegationResult>;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/auth/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAE7D,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,OAAO,CAAC;IACf,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,UAAU,CAAC,EAAE;QACX,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,aAAa,EAAE;YACb,IAAI,EACA,OAAO,GACP,QAAQ,GACR,UAAU,GACV,YAAY,GACZ,UAAU,GACV,MAAM,GACN,MAAM,CAAC;YACX,QAAQ,CAAC,EAAE,MAAM,CAAC;YAClB,cAAc,CAAC,EAAE,MAAM,CAAC;YACxB,IAAI,CAAC,EAAE,MAAM,CAAC;YACd,gBAAgB,CAAC,EAAE,UAAU,GAAG,WAAW,GAAG,aAAa,CAAC;YAC5D,OAAO,CAAC,EAAE,MAAM,CAAC;YACjB,MAAM,CAAC,EAAE,MAAM,CAAC;SACjB,CAAC;QACF,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACxB,CAAC;IACF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAC;CAC7E"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/auth/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Delegation Audience Validation
|
|
3
|
+
*
|
|
4
|
+
* Validates if a delegation's audience matches the server DID.
|
|
5
|
+
* Supports both single server DID and multiple server DIDs.
|
|
6
|
+
*/
|
|
7
|
+
import type { DelegationRecord } from '../types/protocol.js';
|
|
8
|
+
export declare function verifyDelegationAudience(delegation: DelegationRecord, serverDid: string): boolean;
|
|
9
|
+
//# sourceMappingURL=audience-validator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audience-validator.d.ts","sourceRoot":"","sources":["../../src/delegation/audience-validator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAE7D,wBAAgB,wBAAwB,CACtC,UAAU,EAAE,gBAAgB,EAC5B,SAAS,EAAE,MAAM,GAChB,OAAO,CAWT"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Delegation Audience Validation
|
|
3
|
+
*
|
|
4
|
+
* Validates if a delegation's audience matches the server DID.
|
|
5
|
+
* Supports both single server DID and multiple server DIDs.
|
|
6
|
+
*/
|
|
7
|
+
export function verifyDelegationAudience(delegation, serverDid) {
|
|
8
|
+
if (!delegation.constraints.audience) {
|
|
9
|
+
return true;
|
|
10
|
+
}
|
|
11
|
+
const audience = delegation.constraints.audience;
|
|
12
|
+
if (typeof audience === 'string') {
|
|
13
|
+
return audience === serverDid;
|
|
14
|
+
}
|
|
15
|
+
return audience.includes(serverDid);
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=audience-validator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audience-validator.js","sourceRoot":"","sources":["../../src/delegation/audience-validator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,MAAM,UAAU,wBAAwB,CACtC,UAA4B,EAC5B,SAAiB;IAEjB,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;QACrC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,QAAQ,GAAG,UAAU,CAAC,WAAW,CAAC,QAAQ,CAAC;IACjD,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACjC,OAAO,QAAQ,KAAK,SAAS,CAAC;IAChC,CAAC;IAED,OAAO,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AACtC,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bitstring Utilities for StatusList2021
|
|
3
|
+
*
|
|
4
|
+
* Implements GZIP compression + base64url encoding for efficient status lists.
|
|
5
|
+
* Per W3C StatusList2021 spec, each bit represents credential status:
|
|
6
|
+
* - 0: Not revoked/suspended
|
|
7
|
+
* - 1: Revoked/suspended
|
|
8
|
+
*
|
|
9
|
+
* Related Spec: W3C StatusList2021
|
|
10
|
+
*/
|
|
11
|
+
export interface CompressionFunction {
|
|
12
|
+
compress(data: Uint8Array): Promise<Uint8Array>;
|
|
13
|
+
}
|
|
14
|
+
export interface DecompressionFunction {
|
|
15
|
+
decompress(data: Uint8Array): Promise<Uint8Array>;
|
|
16
|
+
}
|
|
17
|
+
export declare class BitstringManager {
|
|
18
|
+
private compressor;
|
|
19
|
+
private decompressor;
|
|
20
|
+
private bits;
|
|
21
|
+
private size;
|
|
22
|
+
constructor(size: number, compressor: CompressionFunction, decompressor: DecompressionFunction);
|
|
23
|
+
setBit(index: number, value: boolean): void;
|
|
24
|
+
getBit(index: number): boolean;
|
|
25
|
+
getSetBits(): number[];
|
|
26
|
+
encode(): Promise<string>;
|
|
27
|
+
static decode(encodedList: string, compressor: CompressionFunction, decompressor: DecompressionFunction): Promise<BitstringManager>;
|
|
28
|
+
getRawBits(): Uint8Array;
|
|
29
|
+
getSize(): number;
|
|
30
|
+
private base64urlEncode;
|
|
31
|
+
private static base64urlDecode;
|
|
32
|
+
private bytesToBase64;
|
|
33
|
+
private static base64ToBytes;
|
|
34
|
+
static fromSetBits(size: number, setBits: number[], compressor: CompressionFunction, decompressor: DecompressionFunction): BitstringManager;
|
|
35
|
+
}
|
|
36
|
+
export declare function isIndexSet(encodedList: string, index: number, decompressor: DecompressionFunction): Promise<boolean>;
|
|
37
|
+
//# sourceMappingURL=bitstring.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bitstring.d.ts","sourceRoot":"","sources":["../../src/delegation/bitstring.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;CACjD;AAED,MAAM,WAAW,qBAAqB;IACpC,UAAU,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;CACnD;AAED,qBAAa,gBAAgB;IAMzB,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,YAAY;IANtB,OAAO,CAAC,IAAI,CAAa;IACzB,OAAO,CAAC,IAAI,CAAS;gBAGnB,IAAI,EAAE,MAAM,EACJ,UAAU,EAAE,mBAAmB,EAC/B,YAAY,EAAE,qBAAqB;IAO7C,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IAe3C,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAW9B,UAAU,IAAI,MAAM,EAAE;IAUhB,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC;WAKlB,MAAM,CACjB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,mBAAmB,EAC/B,YAAY,EAAE,qBAAqB,GAClC,OAAO,CAAC,gBAAgB,CAAC;IAU5B,UAAU,IAAI,UAAU;IAIxB,OAAO,IAAI,MAAM;IAIjB,OAAO,CAAC,eAAe;IAKvB,OAAO,CAAC,MAAM,CAAC,eAAe;IAQ9B,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,MAAM,CAAC,aAAa;IAa5B,MAAM,CAAC,WAAW,CAChB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EAAE,EACjB,UAAU,EAAE,mBAAmB,EAC/B,YAAY,EAAE,qBAAqB,GAClC,gBAAgB;CAOpB;AAED,wBAAsB,UAAU,CAC9B,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,qBAAqB,GAClC,OAAO,CAAC,OAAO,CAAC,CAYlB"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bitstring Utilities for StatusList2021
|
|
3
|
+
*
|
|
4
|
+
* Implements GZIP compression + base64url encoding for efficient status lists.
|
|
5
|
+
* Per W3C StatusList2021 spec, each bit represents credential status:
|
|
6
|
+
* - 0: Not revoked/suspended
|
|
7
|
+
* - 1: Revoked/suspended
|
|
8
|
+
*
|
|
9
|
+
* Related Spec: W3C StatusList2021
|
|
10
|
+
*/
|
|
11
|
+
export class BitstringManager {
|
|
12
|
+
compressor;
|
|
13
|
+
decompressor;
|
|
14
|
+
bits;
|
|
15
|
+
size;
|
|
16
|
+
constructor(size, compressor, decompressor) {
|
|
17
|
+
this.compressor = compressor;
|
|
18
|
+
this.decompressor = decompressor;
|
|
19
|
+
this.size = size;
|
|
20
|
+
const byteCount = Math.ceil(size / 8);
|
|
21
|
+
this.bits = new Uint8Array(byteCount);
|
|
22
|
+
}
|
|
23
|
+
setBit(index, value) {
|
|
24
|
+
if (index < 0 || index >= this.size) {
|
|
25
|
+
throw new Error(`Bit index ${index} out of range (0-${this.size - 1})`);
|
|
26
|
+
}
|
|
27
|
+
const byteIndex = Math.floor(index / 8);
|
|
28
|
+
const bitIndex = index % 8;
|
|
29
|
+
if (value) {
|
|
30
|
+
this.bits[byteIndex] |= 1 << bitIndex;
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
this.bits[byteIndex] &= ~(1 << bitIndex);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
getBit(index) {
|
|
37
|
+
if (index < 0 || index >= this.size) {
|
|
38
|
+
throw new Error(`Bit index ${index} out of range (0-${this.size - 1})`);
|
|
39
|
+
}
|
|
40
|
+
const byteIndex = Math.floor(index / 8);
|
|
41
|
+
const bitIndex = index % 8;
|
|
42
|
+
return (this.bits[byteIndex] & (1 << bitIndex)) !== 0;
|
|
43
|
+
}
|
|
44
|
+
getSetBits() {
|
|
45
|
+
const setBits = [];
|
|
46
|
+
for (let i = 0; i < this.size; i++) {
|
|
47
|
+
if (this.getBit(i)) {
|
|
48
|
+
setBits.push(i);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
return setBits;
|
|
52
|
+
}
|
|
53
|
+
async encode() {
|
|
54
|
+
const compressed = await this.compressor.compress(this.bits);
|
|
55
|
+
return this.base64urlEncode(compressed);
|
|
56
|
+
}
|
|
57
|
+
static async decode(encodedList, compressor, decompressor) {
|
|
58
|
+
const compressed = BitstringManager.base64urlDecode(encodedList);
|
|
59
|
+
const decompressed = await decompressor.decompress(compressed);
|
|
60
|
+
const size = decompressed.length * 8;
|
|
61
|
+
const manager = new BitstringManager(size, compressor, decompressor);
|
|
62
|
+
manager.bits = decompressed;
|
|
63
|
+
return manager;
|
|
64
|
+
}
|
|
65
|
+
getRawBits() {
|
|
66
|
+
return this.bits;
|
|
67
|
+
}
|
|
68
|
+
getSize() {
|
|
69
|
+
return this.size;
|
|
70
|
+
}
|
|
71
|
+
base64urlEncode(data) {
|
|
72
|
+
const base64 = this.bytesToBase64(data);
|
|
73
|
+
return base64.replace(/\+/g, '-').replace(/\//g, '_').replace(/=/g, '');
|
|
74
|
+
}
|
|
75
|
+
static base64urlDecode(encoded) {
|
|
76
|
+
let base64 = encoded.replace(/-/g, '+').replace(/_/g, '/');
|
|
77
|
+
while (base64.length % 4 !== 0) {
|
|
78
|
+
base64 += '=';
|
|
79
|
+
}
|
|
80
|
+
return BitstringManager.base64ToBytes(base64);
|
|
81
|
+
}
|
|
82
|
+
bytesToBase64(bytes) {
|
|
83
|
+
const binary = Array.from(bytes)
|
|
84
|
+
.map((byte) => String.fromCharCode(byte))
|
|
85
|
+
.join('');
|
|
86
|
+
return btoa(binary);
|
|
87
|
+
}
|
|
88
|
+
static base64ToBytes(base64) {
|
|
89
|
+
let standardBase64 = base64.replace(/-/g, '+').replace(/_/g, '/');
|
|
90
|
+
const paddingNeeded = (4 - (standardBase64.length % 4)) % 4;
|
|
91
|
+
standardBase64 += '='.repeat(paddingNeeded);
|
|
92
|
+
const binary = atob(standardBase64);
|
|
93
|
+
const bytes = new Uint8Array(binary.length);
|
|
94
|
+
for (let i = 0; i < binary.length; i++) {
|
|
95
|
+
bytes[i] = binary.charCodeAt(i);
|
|
96
|
+
}
|
|
97
|
+
return bytes;
|
|
98
|
+
}
|
|
99
|
+
static fromSetBits(size, setBits, compressor, decompressor) {
|
|
100
|
+
const manager = new BitstringManager(size, compressor, decompressor);
|
|
101
|
+
for (const index of setBits) {
|
|
102
|
+
manager.setBit(index, true);
|
|
103
|
+
}
|
|
104
|
+
return manager;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
export async function isIndexSet(encodedList, index, decompressor) {
|
|
108
|
+
const compressed = BitstringManager['base64urlDecode'](encodedList);
|
|
109
|
+
const decompressed = await decompressor.decompress(compressed);
|
|
110
|
+
const byteIndex = Math.floor(index / 8);
|
|
111
|
+
const bitIndex = index % 8;
|
|
112
|
+
if (byteIndex >= decompressed.length) {
|
|
113
|
+
return false;
|
|
114
|
+
}
|
|
115
|
+
return (decompressed[byteIndex] & (1 << bitIndex)) !== 0;
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=bitstring.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bitstring.js","sourceRoot":"","sources":["../../src/delegation/bitstring.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAUH,MAAM,OAAO,gBAAgB;IAMjB;IACA;IANF,IAAI,CAAa;IACjB,IAAI,CAAS;IAErB,YACE,IAAY,EACJ,UAA+B,EAC/B,YAAmC;QADnC,eAAU,GAAV,UAAU,CAAqB;QAC/B,iBAAY,GAAZ,YAAY,CAAuB;QAE3C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;QACtC,IAAI,CAAC,IAAI,GAAG,IAAI,UAAU,CAAC,SAAS,CAAC,CAAC;IACxC,CAAC;IAED,MAAM,CAAC,KAAa,EAAE,KAAc;QAClC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,aAAa,KAAK,oBAAoB,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QAC1E,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QACxC,MAAM,QAAQ,GAAG,KAAK,GAAG,CAAC,CAAC;QAE3B,IAAI,KAAK,EAAE,CAAC;YACV,IAAI,CAAC,IAAI,CAAC,SAAS,CAAE,IAAI,CAAC,IAAI,QAAQ,CAAC;QACzC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,CAAC,SAAS,CAAE,IAAI,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAED,MAAM,CAAC,KAAa;QAClB,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,aAAa,KAAK,oBAAoB,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QAC1E,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QACxC,MAAM,QAAQ,GAAG,KAAK,GAAG,CAAC,CAAC;QAE3B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAE,GAAG,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC;IACzD,CAAC;IAED,UAAU;QACR,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;YACnC,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,MAAM;QACV,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7D,OAAO,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,MAAM,CACjB,WAAmB,EACnB,UAA+B,EAC/B,YAAmC;QAEnC,MAAM,UAAU,GAAG,gBAAgB,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;QACjE,MAAM,YAAY,GAAG,MAAM,YAAY,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAE/D,MAAM,IAAI,GAAG,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;QACrC,MAAM,OAAO,GAAG,IAAI,gBAAgB,CAAC,IAAI,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC;QACrE,OAAO,CAAC,IAAI,GAAG,YAAY,CAAC;QAC5B,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAEO,eAAe,CAAC,IAAgB;QACtC,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QACxC,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAC1E,CAAC;IAEO,MAAM,CAAC,eAAe,CAAC,OAAe;QAC5C,IAAI,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAC3D,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,GAAG,CAAC;QAChB,CAAC;QACD,OAAO,gBAAgB,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAChD,CAAC;IAEO,aAAa,CAAC,KAAiB;QACrC,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;aAC7B,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;aACxC,IAAI,CAAC,EAAE,CAAC,CAAC;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC;IACtB,CAAC;IAEO,MAAM,CAAC,aAAa,CAAC,MAAc;QACzC,IAAI,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAClE,MAAM,aAAa,GAAG,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAC5D,cAAc,IAAI,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QAE5C,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC;QACpC,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAClC,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,CAAC,WAAW,CAChB,IAAY,EACZ,OAAiB,EACjB,UAA+B,EAC/B,YAAmC;QAEnC,MAAM,OAAO,GAAG,IAAI,gBAAgB,CAAC,IAAI,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC;QACrE,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC9B,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;CACF;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,WAAmB,EACnB,KAAa,EACb,YAAmC;IAEnC,MAAM,UAAU,GAAI,gBAA8E,CAAC,iBAAiB,CAAC,CAAC,WAAW,CAAC,CAAC;IACnI,MAAM,YAAY,GAAG,MAAM,YAAY,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;IAE/D,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IACxC,MAAM,QAAQ,GAAG,KAAK,GAAG,CAAC,CAAC;IAE3B,IAAI,SAAS,IAAI,YAAY,CAAC,MAAM,EAAE,CAAC;QACrC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,CAAC,YAAY,CAAC,SAAS,CAAE,GAAG,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC;AAC5D,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cascading Revocation Manager
|
|
3
|
+
*
|
|
4
|
+
* Implements cascading revocation per Python POC design.
|
|
5
|
+
* When a parent delegation is revoked, all children are automatically revoked.
|
|
6
|
+
*
|
|
7
|
+
* Related Spec: MCP-I §4.4, Delegation Chains
|
|
8
|
+
*/
|
|
9
|
+
import { DelegationGraphManager } from './delegation-graph.js';
|
|
10
|
+
import { StatusList2021Manager } from './statuslist-manager.js';
|
|
11
|
+
export interface RevocationEvent {
|
|
12
|
+
delegationId: string;
|
|
13
|
+
isRoot: boolean;
|
|
14
|
+
parentId?: string;
|
|
15
|
+
timestamp: number;
|
|
16
|
+
reason?: string;
|
|
17
|
+
}
|
|
18
|
+
export type RevocationHook = (event: RevocationEvent) => Promise<void> | void;
|
|
19
|
+
export interface CascadingRevocationOptions {
|
|
20
|
+
reason?: string;
|
|
21
|
+
onRevoke?: RevocationHook;
|
|
22
|
+
maxDepth?: number;
|
|
23
|
+
dryRun?: boolean;
|
|
24
|
+
}
|
|
25
|
+
export declare class CascadingRevocationManager {
|
|
26
|
+
private graph;
|
|
27
|
+
private statusList;
|
|
28
|
+
constructor(graph: DelegationGraphManager, statusList: StatusList2021Manager);
|
|
29
|
+
revokeDelegation(delegationId: string, options?: CascadingRevocationOptions): Promise<RevocationEvent[]>;
|
|
30
|
+
private revokeNode;
|
|
31
|
+
restoreDelegation(delegationId: string): Promise<RevocationEvent>;
|
|
32
|
+
isRevoked(delegationId: string): Promise<{
|
|
33
|
+
revoked: boolean;
|
|
34
|
+
reason?: string;
|
|
35
|
+
revokedAncestor?: string;
|
|
36
|
+
}>;
|
|
37
|
+
getRevokedInSubtree(rootId: string): Promise<string[]>;
|
|
38
|
+
private parseCredentialStatus;
|
|
39
|
+
validateDelegation(delegationId: string): Promise<{
|
|
40
|
+
valid: boolean;
|
|
41
|
+
reason?: string;
|
|
42
|
+
}>;
|
|
43
|
+
}
|
|
44
|
+
export declare function createCascadingRevocationManager(graph: DelegationGraphManager, statusList: StatusList2021Manager): CascadingRevocationManager;
|
|
45
|
+
//# sourceMappingURL=cascading-revocation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cascading-revocation.d.ts","sourceRoot":"","sources":["../../src/delegation/cascading-revocation.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,sBAAsB,EAAuB,MAAM,uBAAuB,CAAC;AACpF,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,cAAc,GAAG,CAAC,KAAK,EAAE,eAAe,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAE9E,MAAM,WAAW,0BAA0B;IACzC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,qBAAa,0BAA0B;IAEnC,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,UAAU;gBADV,KAAK,EAAE,sBAAsB,EAC7B,UAAU,EAAE,qBAAqB;IAGrC,gBAAgB,CACpB,YAAY,EAAE,MAAM,EACpB,OAAO,GAAE,0BAA+B,GACvC,OAAO,CAAC,eAAe,EAAE,CAAC;YA8Cf,UAAU;IA6BlB,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAuBjE,SAAS,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC;QAC7C,OAAO,EAAE,OAAO,CAAC;QACjB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,eAAe,CAAC,EAAE,MAAM,CAAC;KAC1B,CAAC;IAsBI,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAmB5D,OAAO,CAAC,qBAAqB;IAgBvB,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAkB7F;AAED,wBAAgB,gCAAgC,CAC9C,KAAK,EAAE,sBAAsB,EAC7B,UAAU,EAAE,qBAAqB,GAChC,0BAA0B,CAE5B"}
|