@kya-os/mcp-i-core 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +302 -0
- package/dist/did/resolver.d.ts +92 -0
- package/dist/did/resolver.d.ts.map +1 -0
- package/dist/did/resolver.js +203 -0
- package/dist/did/resolver.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +26 -0
- package/dist/index.js.map +1 -0
- package/dist/proof/proof-engine.d.ts +89 -0
- package/dist/proof/proof-engine.d.ts.map +1 -0
- package/dist/proof/proof-engine.js +249 -0
- package/dist/proof/proof-engine.js.map +1 -0
- package/dist/providers/base.d.ts +76 -0
- package/dist/providers/base.d.ts.map +1 -0
- package/dist/providers/base.js +43 -0
- package/dist/providers/base.js.map +1 -0
- package/dist/providers/memory.d.ts +42 -0
- package/dist/providers/memory.d.ts.map +1 -0
- package/dist/providers/memory.js +117 -0
- package/dist/providers/memory.js.map +1 -0
- package/dist/runtime/base-v2.d.ts +117 -0
- package/dist/runtime/base-v2.d.ts.map +1 -0
- package/dist/runtime/base-v2.js +328 -0
- package/dist/runtime/base-v2.js.map +1 -0
- package/dist/runtime/base.d.ts +97 -0
- package/dist/runtime/base.d.ts.map +1 -0
- package/dist/runtime/base.js +316 -0
- package/dist/runtime/base.js.map +1 -0
- package/dist/types/providers.d.ts +142 -0
- package/dist/types/providers.d.ts.map +1 -0
- package/dist/types/providers.js +43 -0
- package/dist/types/providers.js.map +1 -0
- package/dist/verification/interfaces.d.ts +125 -0
- package/dist/verification/interfaces.d.ts.map +1 -0
- package/dist/verification/interfaces.js +101 -0
- package/dist/verification/interfaces.js.map +1 -0
- package/package.json +59 -0
|
@@ -0,0 +1,316 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* MCPIRuntimeBase - Provider-based runtime
|
|
4
|
+
*
|
|
5
|
+
* Core runtime that accepts providers for all platform-specific operations.
|
|
6
|
+
* This enables the same runtime logic to work across Node.js, Cloudflare Workers,
|
|
7
|
+
* and other platforms.
|
|
8
|
+
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.MCPIRuntimeBase = void 0;
|
|
11
|
+
class MCPIRuntimeBase {
|
|
12
|
+
crypto;
|
|
13
|
+
clock;
|
|
14
|
+
fetch;
|
|
15
|
+
storage;
|
|
16
|
+
nonceCache;
|
|
17
|
+
identity;
|
|
18
|
+
config;
|
|
19
|
+
cachedIdentity;
|
|
20
|
+
sessions = new Map();
|
|
21
|
+
constructor(config) {
|
|
22
|
+
this.config = config;
|
|
23
|
+
this.crypto = config.cryptoProvider;
|
|
24
|
+
this.clock = config.clockProvider;
|
|
25
|
+
this.fetch = config.fetchProvider;
|
|
26
|
+
this.storage = config.storageProvider;
|
|
27
|
+
this.nonceCache = config.nonceCacheProvider;
|
|
28
|
+
this.identity = config.identityProvider;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Initialize the runtime
|
|
32
|
+
*/
|
|
33
|
+
async initialize() {
|
|
34
|
+
// Load or generate identity
|
|
35
|
+
this.cachedIdentity = await this.identity.getIdentity();
|
|
36
|
+
// Initialize nonce cache if it has an initialize method
|
|
37
|
+
if ('initialize' in this.nonceCache && typeof this.nonceCache.initialize === 'function') {
|
|
38
|
+
await this.nonceCache.initialize();
|
|
39
|
+
}
|
|
40
|
+
// Log initialization if audit is enabled
|
|
41
|
+
if (this.config.audit?.enabled) {
|
|
42
|
+
this.logAudit('runtime_initialized', {
|
|
43
|
+
did: this.cachedIdentity.did,
|
|
44
|
+
environment: this.config.environment || 'development'
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Get the current agent identity
|
|
50
|
+
*/
|
|
51
|
+
async getIdentity() {
|
|
52
|
+
if (!this.cachedIdentity) {
|
|
53
|
+
this.cachedIdentity = await this.identity.getIdentity();
|
|
54
|
+
}
|
|
55
|
+
return this.cachedIdentity;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Handle handshake request
|
|
59
|
+
*/
|
|
60
|
+
async handleHandshake(request) {
|
|
61
|
+
const identity = await this.getIdentity();
|
|
62
|
+
const timestamp = this.clock.now();
|
|
63
|
+
const sessionId = await this.generateSessionId();
|
|
64
|
+
// Create session
|
|
65
|
+
const session = {
|
|
66
|
+
id: sessionId,
|
|
67
|
+
clientDid: request.clientDid,
|
|
68
|
+
agentDid: identity.did,
|
|
69
|
+
createdAt: timestamp,
|
|
70
|
+
expiresAt: this.clock.calculateExpiry((this.config.sessionTtlMinutes || 30) * 60)
|
|
71
|
+
};
|
|
72
|
+
this.sessions.set(sessionId, session);
|
|
73
|
+
// Create handshake response
|
|
74
|
+
const response = {
|
|
75
|
+
sessionId,
|
|
76
|
+
agentDid: identity.did,
|
|
77
|
+
timestamp,
|
|
78
|
+
capabilities: ['identity', 'proof', 'audit']
|
|
79
|
+
};
|
|
80
|
+
// Sign the response
|
|
81
|
+
const signature = await this.signData(response);
|
|
82
|
+
return {
|
|
83
|
+
...response,
|
|
84
|
+
signature
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Process tool call with automatic proof generation
|
|
89
|
+
*/
|
|
90
|
+
async processToolCall(toolName, args, handler, session) {
|
|
91
|
+
// Execute the tool
|
|
92
|
+
const result = await handler(args);
|
|
93
|
+
// Create proof
|
|
94
|
+
const proof = await this.createProof(result, session);
|
|
95
|
+
// Log if audit is enabled
|
|
96
|
+
if (this.config.audit?.enabled) {
|
|
97
|
+
this.logAudit('tool_executed', {
|
|
98
|
+
tool: toolName,
|
|
99
|
+
sessionId: session?.id,
|
|
100
|
+
timestamp: this.clock.now()
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
return {
|
|
104
|
+
result,
|
|
105
|
+
proof
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Create cryptographic proof for data
|
|
110
|
+
*/
|
|
111
|
+
async createProof(data, session) {
|
|
112
|
+
const identity = await this.getIdentity();
|
|
113
|
+
const timestamp = this.clock.now();
|
|
114
|
+
const nonce = await this.generateNonce();
|
|
115
|
+
// Add nonce to cache to prevent replay
|
|
116
|
+
await this.nonceCache.add(nonce, this.clock.calculateExpiry(300) // 5 minute expiry
|
|
117
|
+
);
|
|
118
|
+
const proofData = {
|
|
119
|
+
data,
|
|
120
|
+
timestamp,
|
|
121
|
+
nonce,
|
|
122
|
+
did: identity.did,
|
|
123
|
+
sessionId: session?.id
|
|
124
|
+
};
|
|
125
|
+
const signature = await this.signData(proofData);
|
|
126
|
+
return {
|
|
127
|
+
timestamp,
|
|
128
|
+
nonce,
|
|
129
|
+
did: identity.did,
|
|
130
|
+
signature,
|
|
131
|
+
algorithm: 'Ed25519'
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Verify a proof
|
|
136
|
+
*/
|
|
137
|
+
async verifyProof(data, proof) {
|
|
138
|
+
try {
|
|
139
|
+
// Check nonce hasn't been used
|
|
140
|
+
if (await this.nonceCache.has(proof.nonce)) {
|
|
141
|
+
return false;
|
|
142
|
+
}
|
|
143
|
+
// Check timestamp is within skew
|
|
144
|
+
if (!this.clock.isWithinSkew(proof.timestamp, this.config.timestampSkewSeconds || 120)) {
|
|
145
|
+
return false;
|
|
146
|
+
}
|
|
147
|
+
// Resolve DID to get public key
|
|
148
|
+
const didDoc = await this.fetch.resolveDID(proof.did);
|
|
149
|
+
const publicKey = this.extractPublicKey(didDoc);
|
|
150
|
+
// Verify signature
|
|
151
|
+
const proofData = {
|
|
152
|
+
data,
|
|
153
|
+
timestamp: proof.timestamp,
|
|
154
|
+
nonce: proof.nonce,
|
|
155
|
+
did: proof.did,
|
|
156
|
+
sessionId: proof.sessionId
|
|
157
|
+
};
|
|
158
|
+
const dataBytes = new TextEncoder().encode(JSON.stringify(proofData));
|
|
159
|
+
const signatureBytes = this.base64ToBytes(proof.signature);
|
|
160
|
+
return await this.crypto.verify(dataBytes, signatureBytes, publicKey);
|
|
161
|
+
}
|
|
162
|
+
catch (error) {
|
|
163
|
+
console.error('Proof verification failed:', error);
|
|
164
|
+
return false;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Get current session
|
|
169
|
+
*/
|
|
170
|
+
async getCurrentSession() {
|
|
171
|
+
// Find non-expired session
|
|
172
|
+
for (const [id, session] of this.sessions) {
|
|
173
|
+
if (!this.clock.hasExpired(session.expiresAt)) {
|
|
174
|
+
return session;
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
return null;
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Create well-known handler for identity verification
|
|
181
|
+
*/
|
|
182
|
+
createWellKnownHandler(config) {
|
|
183
|
+
return async (path) => {
|
|
184
|
+
const identity = await this.getIdentity();
|
|
185
|
+
if (path === '/.well-known/did.json') {
|
|
186
|
+
return this.createDIDDocument(identity);
|
|
187
|
+
}
|
|
188
|
+
if (path === '/.well-known/mcp-identity') {
|
|
189
|
+
return {
|
|
190
|
+
did: identity.did,
|
|
191
|
+
publicKey: identity.publicKey,
|
|
192
|
+
serviceName: config?.serviceName || 'MCP-I Service',
|
|
193
|
+
serviceEndpoint: config?.serviceEndpoint || 'https://example.com',
|
|
194
|
+
timestamp: this.clock.now()
|
|
195
|
+
};
|
|
196
|
+
}
|
|
197
|
+
return null;
|
|
198
|
+
};
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Create debug endpoint (development only)
|
|
202
|
+
*/
|
|
203
|
+
createDebugEndpoint() {
|
|
204
|
+
if (this.config.environment === 'production') {
|
|
205
|
+
return null;
|
|
206
|
+
}
|
|
207
|
+
return async () => {
|
|
208
|
+
const identity = await this.getIdentity();
|
|
209
|
+
const session = await this.getCurrentSession();
|
|
210
|
+
return {
|
|
211
|
+
identity: {
|
|
212
|
+
did: identity.did,
|
|
213
|
+
publicKey: identity.publicKey
|
|
214
|
+
},
|
|
215
|
+
session,
|
|
216
|
+
config: {
|
|
217
|
+
environment: this.config.environment,
|
|
218
|
+
timestampSkewSeconds: this.config.timestampSkewSeconds,
|
|
219
|
+
sessionTtlMinutes: this.config.sessionTtlMinutes
|
|
220
|
+
},
|
|
221
|
+
timestamp: this.clock.now()
|
|
222
|
+
};
|
|
223
|
+
};
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* Get audit logger
|
|
227
|
+
*/
|
|
228
|
+
getAuditLogger() {
|
|
229
|
+
return {
|
|
230
|
+
log: (event, data) => this.logAudit(event, data)
|
|
231
|
+
};
|
|
232
|
+
}
|
|
233
|
+
/**
|
|
234
|
+
* Rotate keys
|
|
235
|
+
*/
|
|
236
|
+
async rotateKeys() {
|
|
237
|
+
const newIdentity = await this.identity.rotateKeys();
|
|
238
|
+
this.cachedIdentity = newIdentity;
|
|
239
|
+
if (this.config.audit?.enabled) {
|
|
240
|
+
this.logAudit('keys_rotated', {
|
|
241
|
+
oldDid: this.cachedIdentity?.did,
|
|
242
|
+
newDid: newIdentity.did,
|
|
243
|
+
timestamp: this.clock.now()
|
|
244
|
+
});
|
|
245
|
+
}
|
|
246
|
+
return newIdentity;
|
|
247
|
+
}
|
|
248
|
+
// Helper methods
|
|
249
|
+
async signData(data) {
|
|
250
|
+
const identity = await this.getIdentity();
|
|
251
|
+
const dataBytes = new TextEncoder().encode(JSON.stringify(data));
|
|
252
|
+
const signature = await this.crypto.sign(dataBytes, identity.privateKey);
|
|
253
|
+
return this.bytesToBase64(signature);
|
|
254
|
+
}
|
|
255
|
+
async generateNonce() {
|
|
256
|
+
const bytes = await this.crypto.randomBytes(32);
|
|
257
|
+
return this.bytesToBase64(bytes);
|
|
258
|
+
}
|
|
259
|
+
async generateSessionId() {
|
|
260
|
+
const bytes = await this.crypto.randomBytes(16);
|
|
261
|
+
return this.bytesToHex(bytes);
|
|
262
|
+
}
|
|
263
|
+
logAudit(event, data) {
|
|
264
|
+
if (!this.config.audit?.enabled)
|
|
265
|
+
return;
|
|
266
|
+
const record = {
|
|
267
|
+
event,
|
|
268
|
+
data: this.config.audit.includePayloads ? data : undefined,
|
|
269
|
+
timestamp: this.clock.now(),
|
|
270
|
+
timestampFormatted: this.clock.format(this.clock.now())
|
|
271
|
+
};
|
|
272
|
+
const logLine = JSON.stringify(record);
|
|
273
|
+
if (this.config.audit.logFunction) {
|
|
274
|
+
this.config.audit.logFunction(logLine);
|
|
275
|
+
}
|
|
276
|
+
else {
|
|
277
|
+
console.log('[AUDIT]', logLine);
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
createDIDDocument(identity) {
|
|
281
|
+
return {
|
|
282
|
+
'@context': ['https://www.w3.org/ns/did/v1'],
|
|
283
|
+
id: identity.did,
|
|
284
|
+
verificationMethod: [{
|
|
285
|
+
id: `${identity.did}#key-1`,
|
|
286
|
+
type: 'Ed25519VerificationKey2020',
|
|
287
|
+
controller: identity.did,
|
|
288
|
+
publicKeyBase64: identity.publicKey
|
|
289
|
+
}],
|
|
290
|
+
authentication: [`${identity.did}#key-1`],
|
|
291
|
+
assertionMethod: [`${identity.did}#key-1`]
|
|
292
|
+
};
|
|
293
|
+
}
|
|
294
|
+
extractPublicKey(didDoc) {
|
|
295
|
+
const method = didDoc.verificationMethod?.[0];
|
|
296
|
+
if (method?.publicKeyBase64) {
|
|
297
|
+
return method.publicKeyBase64;
|
|
298
|
+
}
|
|
299
|
+
if (method?.publicKeyMultibase) {
|
|
300
|
+
// Convert multibase to base64
|
|
301
|
+
return method.publicKeyMultibase; // Simplified
|
|
302
|
+
}
|
|
303
|
+
throw new Error('Public key not found in DID document');
|
|
304
|
+
}
|
|
305
|
+
bytesToBase64(bytes) {
|
|
306
|
+
return Buffer.from(bytes).toString('base64');
|
|
307
|
+
}
|
|
308
|
+
base64ToBytes(base64) {
|
|
309
|
+
return new Uint8Array(Buffer.from(base64, 'base64'));
|
|
310
|
+
}
|
|
311
|
+
bytesToHex(bytes) {
|
|
312
|
+
return Buffer.from(bytes).toString('hex');
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
exports.MCPIRuntimeBase = MCPIRuntimeBase;
|
|
316
|
+
//# sourceMappingURL=base.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/runtime/base.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AA2CH,MAAa,eAAe;IAChB,MAAM,CAAiB;IACvB,KAAK,CAAgB;IACrB,KAAK,CAAgB;IACrB,OAAO,CAAkB;IACzB,UAAU,CAAqB;IAC/B,QAAQ,CAAmB;IAC3B,MAAM,CAAoB;IAC5B,cAAc,CAAiB;IAC/B,QAAQ,GAAqB,IAAI,GAAG,EAAE,CAAC;IAE/C,YAAY,MAAyB;QACnC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,cAAc,CAAC;QACpC,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,aAAa,CAAC;QAClC,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,aAAa,CAAC;QAClC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,eAAe,CAAC;QACtC,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,kBAAkB,CAAC;QAC5C,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,gBAAgB,CAAC;IAC1C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU;QACd,4BAA4B;QAC5B,IAAI,CAAC,cAAc,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;QAExD,wDAAwD;QACxD,IAAI,YAAY,IAAI,IAAI,CAAC,UAAU,IAAI,OAAQ,IAAI,CAAC,UAAkB,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;YACjG,MAAO,IAAI,CAAC,UAAkB,CAAC,UAAU,EAAE,CAAC;QAC9C,CAAC;QAED,yCAAyC;QACzC,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC;YAC/B,IAAI,CAAC,QAAQ,CAAC,qBAAqB,EAAE;gBACnC,GAAG,EAAE,IAAI,CAAC,cAAc,CAAC,GAAG;gBAC5B,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,aAAa;aACtD,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW;QACf,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YACzB,IAAI,CAAC,cAAc,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;QAC1D,CAAC;QACD,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,eAAe,CAAC,OAAY;QAChC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QAC1C,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;QACnC,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAEjD,iBAAiB;QACjB,MAAM,OAAO,GAAG;YACd,EAAE,EAAE,SAAS;YACb,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,QAAQ,EAAE,QAAQ,CAAC,GAAG;YACtB,SAAS,EAAE,SAAS;YACpB,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC;SAClF,CAAC;QAEF,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAEtC,4BAA4B;QAC5B,MAAM,QAAQ,GAAG;YACf,SAAS;YACT,QAAQ,EAAE,QAAQ,CAAC,GAAG;YACtB,SAAS;YACT,YAAY,EAAE,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC;SAC7C,CAAC;QAEF,oBAAoB;QACpB,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAEhD,OAAO;YACL,GAAG,QAAQ;YACX,SAAS;SACV,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,eAAe,CACnB,QAAgB,EAChB,IAAS,EACT,OAAoC,EACpC,OAAa;QAEb,mBAAmB;QACnB,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;QAEnC,eAAe;QACf,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAEtD,0BAA0B;QAC1B,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC;YAC/B,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE;gBAC7B,IAAI,EAAE,QAAQ;gBACd,SAAS,EAAE,OAAO,EAAE,EAAE;gBACtB,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE;aAC5B,CAAC,CAAC;QACL,CAAC;QAED,OAAO;YACL,MAAM;YACN,KAAK;SACN,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CAAC,IAAS,EAAE,OAAa;QACxC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QAC1C,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;QACnC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAEzC,uCAAuC;QACvC,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CACvB,KAAK,EACL,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,kBAAkB;SACnD,CAAC;QAEF,MAAM,SAAS,GAAG;YAChB,IAAI;YACJ,SAAS;YACT,KAAK;YACL,GAAG,EAAE,QAAQ,CAAC,GAAG;YACjB,SAAS,EAAE,OAAO,EAAE,EAAE;SACvB,CAAC;QAEF,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAEjD,OAAO;YACL,SAAS;YACT,KAAK;YACL,GAAG,EAAE,QAAQ,CAAC,GAAG;YACjB,SAAS;YACT,SAAS,EAAE,SAAS;SACrB,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CAAC,IAAS,EAAE,KAAU;QACrC,IAAI,CAAC;YACH,+BAA+B;YAC/B,IAAI,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC3C,OAAO,KAAK,CAAC;YACf,CAAC;YAED,iCAAiC;YACjC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAC1B,KAAK,CAAC,SAAS,EACf,IAAI,CAAC,MAAM,CAAC,oBAAoB,IAAI,GAAG,CACxC,EAAE,CAAC;gBACF,OAAO,KAAK,CAAC;YACf,CAAC;YAED,gCAAgC;YAChC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACtD,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;YAEhD,mBAAmB;YACnB,MAAM,SAAS,GAAG;gBAChB,IAAI;gBACJ,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,GAAG,EAAE,KAAK,CAAC,GAAG;gBACd,SAAS,EAAE,KAAK,CAAC,SAAS;aAC3B,CAAC;YAEF,MAAM,SAAS,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CACxC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAC1B,CAAC;YACF,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YAE3D,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAC7B,SAAS,EACT,cAAc,EACd,SAAS,CACV,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;YACnD,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,iBAAiB;QACrB,2BAA2B;QAC3B,KAAK,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC1C,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC9C,OAAO,OAAO,CAAC;YACjB,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,sBAAsB,CAAC,MAAY;QACjC,OAAO,KAAK,EAAE,IAAY,EAAE,EAAE;YAC5B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;YAE1C,IAAI,IAAI,KAAK,uBAAuB,EAAE,CAAC;gBACrC,OAAO,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;YAC1C,CAAC;YAED,IAAI,IAAI,KAAK,2BAA2B,EAAE,CAAC;gBACzC,OAAO;oBACL,GAAG,EAAE,QAAQ,CAAC,GAAG;oBACjB,SAAS,EAAE,QAAQ,CAAC,SAAS;oBAC7B,WAAW,EAAE,MAAM,EAAE,WAAW,IAAI,eAAe;oBACnD,eAAe,EAAE,MAAM,EAAE,eAAe,IAAI,qBAAqB;oBACjE,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE;iBAC5B,CAAC;YACJ,CAAC;YAED,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,mBAAmB;QACjB,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,KAAK,YAAY,EAAE,CAAC;YAC7C,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,KAAK,IAAI,EAAE;YAChB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;YAC1C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAE/C,OAAO;gBACL,QAAQ,EAAE;oBACR,GAAG,EAAE,QAAQ,CAAC,GAAG;oBACjB,SAAS,EAAE,QAAQ,CAAC,SAAS;iBAC9B;gBACD,OAAO;gBACP,MAAM,EAAE;oBACN,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW;oBACpC,oBAAoB,EAAE,IAAI,CAAC,MAAM,CAAC,oBAAoB;oBACtD,iBAAiB,EAAE,IAAI,CAAC,MAAM,CAAC,iBAAiB;iBACjD;gBACD,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE;aAC5B,CAAC;QACJ,CAAC,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,OAAO;YACL,GAAG,EAAE,CAAC,KAAa,EAAE,IAAS,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC;SAC9D,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU;QACd,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;QACrD,IAAI,CAAC,cAAc,GAAG,WAAW,CAAC;QAElC,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC;YAC/B,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE;gBAC5B,MAAM,EAAE,IAAI,CAAC,cAAc,EAAE,GAAG;gBAChC,MAAM,EAAE,WAAW,CAAC,GAAG;gBACvB,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE;aAC5B,CAAC,CAAC;QACL,CAAC;QAED,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,iBAAiB;IAET,KAAK,CAAC,QAAQ,CAAC,IAAS;QAC9B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QAC1C,MAAM,SAAS,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CACxC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CACrB,CAAC;QACF,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CACtC,SAAS,EACT,QAAQ,CAAC,UAAU,CACpB,CAAC;QACF,OAAO,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;IACvC,CAAC;IAEO,KAAK,CAAC,aAAa;QACzB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QAChD,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;IAEO,KAAK,CAAC,iBAAiB;QAC7B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QAChD,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAEO,QAAQ,CAAC,KAAa,EAAE,IAAS;QACvC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO;YAAE,OAAO;QAExC,MAAM,MAAM,GAAG;YACb,KAAK;YACL,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;YAC1D,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE;YAC3B,kBAAkB,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;SACxD,CAAC;QAEF,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAEvC,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;YAClC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QACzC,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;IAEO,iBAAiB,CAAC,QAAuB;QAC/C,OAAO;YACL,UAAU,EAAE,CAAC,8BAA8B,CAAC;YAC5C,EAAE,EAAE,QAAQ,CAAC,GAAG;YAChB,kBAAkB,EAAE,CAAC;oBACnB,EAAE,EAAE,GAAG,QAAQ,CAAC,GAAG,QAAQ;oBAC3B,IAAI,EAAE,4BAA4B;oBAClC,UAAU,EAAE,QAAQ,CAAC,GAAG;oBACxB,eAAe,EAAE,QAAQ,CAAC,SAAS;iBACpC,CAAC;YACF,cAAc,EAAE,CAAC,GAAG,QAAQ,CAAC,GAAG,QAAQ,CAAC;YACzC,eAAe,EAAE,CAAC,GAAG,QAAQ,CAAC,GAAG,QAAQ,CAAC;SAC3C,CAAC;IACJ,CAAC;IAEO,gBAAgB,CAAC,MAAW;QAClC,MAAM,MAAM,GAAG,MAAM,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,CAAC;QAC9C,IAAI,MAAM,EAAE,eAAe,EAAE,CAAC;YAC5B,OAAO,MAAM,CAAC,eAAe,CAAC;QAChC,CAAC;QACD,IAAI,MAAM,EAAE,kBAAkB,EAAE,CAAC;YAC/B,8BAA8B;YAC9B,OAAO,MAAM,CAAC,kBAAkB,CAAC,CAAC,aAAa;QACjD,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAC1D,CAAC;IAEO,aAAa,CAAC,KAAiB;QACrC,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC/C,CAAC;IAEO,aAAa,CAAC,MAAc;QAClC,OAAO,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;IACvD,CAAC;IAEO,UAAU,CAAC,KAAiB;QAClC,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC5C,CAAC;CACF;AApXD,0CAoXC"}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Provider interfaces for platform-specific implementations
|
|
3
|
+
*/
|
|
4
|
+
import { AgentIdentity } from "@kya-os/contracts/handshake";
|
|
5
|
+
/**
|
|
6
|
+
* Abstract crypto provider for platform-specific crypto operations
|
|
7
|
+
*/
|
|
8
|
+
export declare abstract class CryptoProvider {
|
|
9
|
+
/**
|
|
10
|
+
* Sign data with Ed25519 private key
|
|
11
|
+
*/
|
|
12
|
+
abstract sign(data: Uint8Array, privateKey: string): Promise<Uint8Array>;
|
|
13
|
+
/**
|
|
14
|
+
* Verify signature with Ed25519 public key
|
|
15
|
+
*/
|
|
16
|
+
abstract verify(data: Uint8Array, signature: Uint8Array, publicKey: string): Promise<boolean>;
|
|
17
|
+
/**
|
|
18
|
+
* Generate Ed25519 key pair
|
|
19
|
+
*/
|
|
20
|
+
abstract generateKeyPair(): Promise<{
|
|
21
|
+
privateKey: string;
|
|
22
|
+
publicKey: string;
|
|
23
|
+
}>;
|
|
24
|
+
/**
|
|
25
|
+
* Create SHA-256 hash
|
|
26
|
+
*/
|
|
27
|
+
abstract hash(data: Uint8Array): Promise<Uint8Array>;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Abstract identity provider for platform-specific identity storage
|
|
31
|
+
*/
|
|
32
|
+
export declare abstract class IdentityProvider {
|
|
33
|
+
/**
|
|
34
|
+
* Load agent identity from storage
|
|
35
|
+
*/
|
|
36
|
+
abstract loadIdentity(): Promise<AgentIdentity | null>;
|
|
37
|
+
/**
|
|
38
|
+
* Store agent identity
|
|
39
|
+
*/
|
|
40
|
+
abstract storeIdentity(identity: AgentIdentity): Promise<void>;
|
|
41
|
+
/**
|
|
42
|
+
* Check if identity exists
|
|
43
|
+
*/
|
|
44
|
+
abstract hasIdentity(): Promise<boolean>;
|
|
45
|
+
/**
|
|
46
|
+
* Delete identity
|
|
47
|
+
*/
|
|
48
|
+
abstract deleteIdentity(): Promise<void>;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Abstract storage provider for general key-value storage
|
|
52
|
+
*/
|
|
53
|
+
export declare abstract class StorageProvider {
|
|
54
|
+
/**
|
|
55
|
+
* Get value by key
|
|
56
|
+
*/
|
|
57
|
+
abstract get(key: string): Promise<string | null>;
|
|
58
|
+
/**
|
|
59
|
+
* Set value with optional TTL
|
|
60
|
+
*/
|
|
61
|
+
abstract set(key: string, value: string, ttl?: number): Promise<void>;
|
|
62
|
+
/**
|
|
63
|
+
* Delete value by key
|
|
64
|
+
*/
|
|
65
|
+
abstract delete(key: string): Promise<void>;
|
|
66
|
+
/**
|
|
67
|
+
* Check if key exists
|
|
68
|
+
*/
|
|
69
|
+
abstract has(key: string): Promise<boolean>;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Nonce cache provider for replay attack prevention
|
|
73
|
+
*/
|
|
74
|
+
export declare abstract class NonceCacheProvider {
|
|
75
|
+
/**
|
|
76
|
+
* Get nonce prefix for namespacing
|
|
77
|
+
*/
|
|
78
|
+
abstract getNoncePrefix(): string;
|
|
79
|
+
/**
|
|
80
|
+
* Get default TTL in seconds
|
|
81
|
+
*/
|
|
82
|
+
abstract getDefaultTTL(): number;
|
|
83
|
+
/**
|
|
84
|
+
* Check if nonce exists
|
|
85
|
+
*/
|
|
86
|
+
abstract has(nonce: string): Promise<boolean>;
|
|
87
|
+
/**
|
|
88
|
+
* Add nonce with TTL in seconds
|
|
89
|
+
*/
|
|
90
|
+
abstract add(nonce: string, ttl: number): Promise<void>;
|
|
91
|
+
/**
|
|
92
|
+
* Clean expired nonces (optional)
|
|
93
|
+
*/
|
|
94
|
+
abstract cleanup?(): Promise<void>;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Clock provider for time-based operations
|
|
98
|
+
*/
|
|
99
|
+
export declare abstract class ClockProvider {
|
|
100
|
+
/**
|
|
101
|
+
* Get current timestamp in milliseconds
|
|
102
|
+
*/
|
|
103
|
+
abstract now(): number;
|
|
104
|
+
/**
|
|
105
|
+
* Check if a timestamp is within acceptable skew
|
|
106
|
+
*/
|
|
107
|
+
abstract isWithinSkew(timestamp: number, skewSeconds: number): boolean;
|
|
108
|
+
/**
|
|
109
|
+
* Check if something has expired
|
|
110
|
+
*/
|
|
111
|
+
abstract hasExpired(expiresAt: number): boolean;
|
|
112
|
+
/**
|
|
113
|
+
* Calculate expiration timestamp
|
|
114
|
+
*/
|
|
115
|
+
abstract calculateExpiry(ttlSeconds: number): number;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Fetch provider for network operations
|
|
119
|
+
*/
|
|
120
|
+
export declare abstract class FetchProvider {
|
|
121
|
+
/**
|
|
122
|
+
* Resolve a DID document
|
|
123
|
+
*/
|
|
124
|
+
abstract resolveDID(did: string): Promise<any>;
|
|
125
|
+
/**
|
|
126
|
+
* Fetch status list for credentials
|
|
127
|
+
*/
|
|
128
|
+
abstract fetchStatusList(url: string): Promise<any>;
|
|
129
|
+
/**
|
|
130
|
+
* Fetch delegation chain
|
|
131
|
+
*/
|
|
132
|
+
abstract fetchDelegationChain(id: string): Promise<any[]>;
|
|
133
|
+
/**
|
|
134
|
+
* Get edge verification data (compact blob for offline verification)
|
|
135
|
+
*/
|
|
136
|
+
abstract getEdgeVerificationData(id: string): Promise<any>;
|
|
137
|
+
/**
|
|
138
|
+
* Generic HTTP fetch
|
|
139
|
+
*/
|
|
140
|
+
abstract fetch(url: string, options?: any): Promise<Response>;
|
|
141
|
+
}
|
|
142
|
+
//# sourceMappingURL=providers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../../src/types/providers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Provider interfaces for platform-specific implementations
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.FetchProvider = exports.ClockProvider = exports.NonceCacheProvider = exports.StorageProvider = exports.IdentityProvider = exports.CryptoProvider = void 0;
|
|
7
|
+
/**
|
|
8
|
+
* Abstract crypto provider for platform-specific crypto operations
|
|
9
|
+
*/
|
|
10
|
+
class CryptoProvider {
|
|
11
|
+
}
|
|
12
|
+
exports.CryptoProvider = CryptoProvider;
|
|
13
|
+
/**
|
|
14
|
+
* Abstract identity provider for platform-specific identity storage
|
|
15
|
+
*/
|
|
16
|
+
class IdentityProvider {
|
|
17
|
+
}
|
|
18
|
+
exports.IdentityProvider = IdentityProvider;
|
|
19
|
+
/**
|
|
20
|
+
* Abstract storage provider for general key-value storage
|
|
21
|
+
*/
|
|
22
|
+
class StorageProvider {
|
|
23
|
+
}
|
|
24
|
+
exports.StorageProvider = StorageProvider;
|
|
25
|
+
/**
|
|
26
|
+
* Nonce cache provider for replay attack prevention
|
|
27
|
+
*/
|
|
28
|
+
class NonceCacheProvider {
|
|
29
|
+
}
|
|
30
|
+
exports.NonceCacheProvider = NonceCacheProvider;
|
|
31
|
+
/**
|
|
32
|
+
* Clock provider for time-based operations
|
|
33
|
+
*/
|
|
34
|
+
class ClockProvider {
|
|
35
|
+
}
|
|
36
|
+
exports.ClockProvider = ClockProvider;
|
|
37
|
+
/**
|
|
38
|
+
* Fetch provider for network operations
|
|
39
|
+
*/
|
|
40
|
+
class FetchProvider {
|
|
41
|
+
}
|
|
42
|
+
exports.FetchProvider = FetchProvider;
|
|
43
|
+
//# sourceMappingURL=providers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"providers.js","sourceRoot":"","sources":["../../src/types/providers.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAIH;;GAEG;AACH,MAAsB,cAAc;CAoBnC;AApBD,wCAoBC;AAED;;GAEG;AACH,MAAsB,gBAAgB;CAoBrC;AApBD,4CAoBC;AAED;;GAEG;AACH,MAAsB,eAAe;CAoBpC;AApBD,0CAoBC;AAED;;GAEG;AACH,MAAsB,kBAAkB;CAyBvC;AAzBD,gDAyBC;AAED;;GAEG;AACH,MAAsB,aAAa;CAoBlC;AApBD,sCAoBC;AAED;;GAEG;AACH,MAAsB,aAAa;CAyBlC;AAzBD,sCAyBC"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Credential and Delegation verification interfaces
|
|
3
|
+
*/
|
|
4
|
+
import { ProofEngine } from "../proof/proof-engine";
|
|
5
|
+
import { FetchProvider, ClockProvider } from "../types/providers";
|
|
6
|
+
/**
|
|
7
|
+
* Credential status
|
|
8
|
+
*/
|
|
9
|
+
export interface CredentialStatus {
|
|
10
|
+
revoked: boolean;
|
|
11
|
+
suspended?: boolean;
|
|
12
|
+
statusListIndex?: number;
|
|
13
|
+
statusListCredential?: string;
|
|
14
|
+
checkedAt: number;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Delegation chain entry
|
|
18
|
+
*/
|
|
19
|
+
export interface DelegationEntry {
|
|
20
|
+
id: string;
|
|
21
|
+
delegator: string;
|
|
22
|
+
delegate: string;
|
|
23
|
+
scope: string[];
|
|
24
|
+
constraints?: any;
|
|
25
|
+
credentialId?: string;
|
|
26
|
+
parentId?: string;
|
|
27
|
+
depth: number;
|
|
28
|
+
createdAt: number;
|
|
29
|
+
expiresAt?: number;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Verification options
|
|
33
|
+
*/
|
|
34
|
+
export interface VerificationOptions {
|
|
35
|
+
verifyCredential?: boolean;
|
|
36
|
+
checkRevocation?: boolean;
|
|
37
|
+
maxChainDepth?: number;
|
|
38
|
+
allowExpired?: boolean;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Verification result
|
|
42
|
+
*/
|
|
43
|
+
export interface VerificationResult {
|
|
44
|
+
valid: boolean;
|
|
45
|
+
errors?: string[];
|
|
46
|
+
warnings?: string[];
|
|
47
|
+
credentialStatus?: CredentialStatus;
|
|
48
|
+
delegationChain?: DelegationEntry[];
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Credential verifier interface
|
|
52
|
+
*/
|
|
53
|
+
export declare abstract class CredentialVerifier {
|
|
54
|
+
protected proofEngine: ProofEngine;
|
|
55
|
+
protected fetchProvider: FetchProvider;
|
|
56
|
+
protected clockProvider: ClockProvider;
|
|
57
|
+
constructor(proofEngine: ProofEngine, fetchProvider: FetchProvider, clockProvider: ClockProvider);
|
|
58
|
+
/**
|
|
59
|
+
* Verify a verifiable credential
|
|
60
|
+
*/
|
|
61
|
+
abstract verifyCredential(credential: any, options?: VerificationOptions): Promise<VerificationResult>;
|
|
62
|
+
/**
|
|
63
|
+
* Check credential status (revocation, suspension)
|
|
64
|
+
*/
|
|
65
|
+
abstract checkCredentialStatus(credentialId: string): Promise<CredentialStatus>;
|
|
66
|
+
/**
|
|
67
|
+
* Stage-1 verification (status/expiry - no network)
|
|
68
|
+
*/
|
|
69
|
+
abstract verifyOffline(credential: any): Promise<VerificationResult>;
|
|
70
|
+
/**
|
|
71
|
+
* Stage-2 verification (signature + credential - may use network)
|
|
72
|
+
*/
|
|
73
|
+
abstract verifyOnline(credential: any, options?: VerificationOptions): Promise<VerificationResult>;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Delegation registry interface
|
|
77
|
+
*/
|
|
78
|
+
export declare abstract class DelegationRegistry {
|
|
79
|
+
protected fetchProvider: FetchProvider;
|
|
80
|
+
protected clockProvider: ClockProvider;
|
|
81
|
+
constructor(fetchProvider: FetchProvider, clockProvider: ClockProvider);
|
|
82
|
+
/**
|
|
83
|
+
* Verify delegation with optional credential verification
|
|
84
|
+
*/
|
|
85
|
+
abstract verifyDelegation(delegationId: string, options?: VerificationOptions): Promise<VerificationResult>;
|
|
86
|
+
/**
|
|
87
|
+
* Get delegation chain
|
|
88
|
+
*/
|
|
89
|
+
abstract getDelegationChain(delegationId: string): Promise<DelegationEntry[]>;
|
|
90
|
+
/**
|
|
91
|
+
* Check if any link in chain is revoked
|
|
92
|
+
*/
|
|
93
|
+
abstract checkChainRevocation(chain: DelegationEntry[]): Promise<boolean>;
|
|
94
|
+
/**
|
|
95
|
+
* Validate chain depth
|
|
96
|
+
*/
|
|
97
|
+
abstract validateChainDepth(chain: DelegationEntry[], maxDepth: number): boolean;
|
|
98
|
+
/**
|
|
99
|
+
* Register new delegation
|
|
100
|
+
*/
|
|
101
|
+
abstract registerDelegation(delegation: DelegationEntry): Promise<string>;
|
|
102
|
+
/**
|
|
103
|
+
* Revoke delegation (and all descendants)
|
|
104
|
+
*/
|
|
105
|
+
abstract revokeDelegation(delegationId: string): Promise<void>;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Progressive verification helper
|
|
109
|
+
*/
|
|
110
|
+
export declare class ProgressiveVerifier {
|
|
111
|
+
private credentialVerifier;
|
|
112
|
+
private delegationRegistry;
|
|
113
|
+
constructor(credentialVerifier: CredentialVerifier, delegationRegistry: DelegationRegistry);
|
|
114
|
+
/**
|
|
115
|
+
* Perform progressive verification
|
|
116
|
+
* Stage-1: Offline checks (expiry, basic validation)
|
|
117
|
+
* Stage-2: Online checks (signature, credential, revocation)
|
|
118
|
+
*/
|
|
119
|
+
verifyProgressive(data: any, options?: VerificationOptions): Promise<VerificationResult>;
|
|
120
|
+
/**
|
|
121
|
+
* Get edge verification data for offline verification
|
|
122
|
+
*/
|
|
123
|
+
getEdgeVerificationData(id: string): Promise<any>;
|
|
124
|
+
}
|
|
125
|
+
//# sourceMappingURL=interfaces.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../src/verification/interfaces.ts"],"names":[],"mappings":"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"}
|