@extrimian/agent 0.12.0-0 → 0.12.0-10

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.
@@ -0,0 +1,400 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AgentIdentity = void 0;
4
+ const did_core_1 = require("@extrimian/did-core");
5
+ const kms_core_1 = require("@extrimian/kms-core");
6
+ const lite_event_1 = require("../utils/lite-event");
7
+ const agent_registry_1 = require("./agent-registry");
8
+ const did_1 = require("./did");
9
+ const modena_sdk_1 = require("@extrimian/modena-sdk");
10
+ const AGENT_DID_KEY = 'agent-did';
11
+ const OPERATIONAL_DID_KEY = 'operational-did';
12
+ class AgentIdentity {
13
+ get operationalDIDChanged() {
14
+ return this._onOperationalDIDChanged.expose();
15
+ }
16
+ get identityInitialized() {
17
+ return this._onIdentityInitialized.expose();
18
+ }
19
+ get didCreated() {
20
+ return this.onDidCreated.expose();
21
+ }
22
+ constructor(params) {
23
+ this._dids = new Array();
24
+ this._onOperationalDIDChanged = new lite_event_1.LiteEvent();
25
+ this._onIdentityInitialized = new lite_event_1.LiteEvent();
26
+ this.onDidCreated = new lite_event_1.LiteEvent();
27
+ this.agentStorage = params.agentStorage;
28
+ this.kms = params.kms;
29
+ this.resolver = params.resolver;
30
+ this.registry = params.registry;
31
+ }
32
+ get initialized() {
33
+ return this._initialized;
34
+ }
35
+ async initialize(params) {
36
+ var _a;
37
+ this.resolver = params.resolver;
38
+ this.registry = params.registry;
39
+ this._dids =
40
+ (await this.agentStorage.get(AGENT_DID_KEY)) || new Array();
41
+ if (params.operationalDID) {
42
+ if (this._dids.indexOf(params.operationalDID.value) == -1) {
43
+ throw new Error(`Operational DID ${params.operationalDID} not exists on agent. You must import the did with its private keys`);
44
+ }
45
+ await this.setOperationalDID(params.operationalDID);
46
+ }
47
+ else {
48
+ const did = (await this.agentStorage.get(OPERATIONAL_DID_KEY));
49
+ this._did = did != null ? did_1.DID.from(did) : null;
50
+ if (!this._did && this._dids && this._dids.length > 0) {
51
+ await this.setOperationalDID(did_1.DID.from(this._dids[0]));
52
+ }
53
+ else if (this._did) {
54
+ await this.setOperationalDID(this._did);
55
+ }
56
+ if ((_a = this._did) === null || _a === void 0 ? void 0 : _a.isLongDID()) {
57
+ const shortDID = this.getDIDs().map(x => did_1.DID.from(x)).find(x => this._did.isLongDIDFor(x));
58
+ if (shortDID) {
59
+ const result = await this.checkDIDPublished(shortDID, true);
60
+ if (!result) {
61
+ this.waitForDIDPublish(shortDID, true);
62
+ }
63
+ }
64
+ }
65
+ }
66
+ this._initialized = true;
67
+ this._onIdentityInitialized.trigger();
68
+ }
69
+ async addDID(params) {
70
+ if (!this._did) {
71
+ this._did = params.did;
72
+ }
73
+ if (!this._dids[params.did.value]) {
74
+ this._dids.push(params.did.value);
75
+ await this.agentStorage.add(AGENT_DID_KEY, this._dids);
76
+ }
77
+ }
78
+ async setOperationalDID(did) {
79
+ if (!did) {
80
+ throw new Error("Operational DID to set can't be null or undefined.");
81
+ }
82
+ if (this._dids.indexOf(did.value) == -1) {
83
+ throw new Error('Operational DID to set must be defined on dids of the identity. You must import the did with its private keys');
84
+ }
85
+ const auxDid = this._did;
86
+ this._did = did;
87
+ await this.agentStorage.add(OPERATIONAL_DID_KEY, this._did.value);
88
+ if (auxDid != did) {
89
+ this._onOperationalDIDChanged.trigger({ did });
90
+ }
91
+ }
92
+ getOperationalDID() {
93
+ return this._did;
94
+ }
95
+ getDIDs() {
96
+ return [...this._dids];
97
+ }
98
+ async createNewDID(params) {
99
+ var _a, _b, _c, _d;
100
+ params = params || {};
101
+ if (!params.keysToCreate || params.createDefaultKeys) {
102
+ if (!params.keysToCreate) {
103
+ params.keysToCreate = new Array();
104
+ }
105
+ if (!params.preventCredentialCreation) {
106
+ params.keysToCreate.push({ id: 'vc-bbsbls', vmKey: agent_registry_1.VMKey.VC });
107
+ }
108
+ params.keysToCreate.push({ id: 'didcomm', vmKey: agent_registry_1.VMKey.DIDComm });
109
+ params.keysToCreate.push({ id: 'rsa', vmKey: agent_registry_1.VMKey.RSA });
110
+ }
111
+ const updateKey = await this.kms.create(kms_core_1.Suite.ES256k);
112
+ const recoveryKey = await this.kms.create(kms_core_1.Suite.ES256k);
113
+ if (params.keysToImport) {
114
+ for (let ktu of params.keysToImport) {
115
+ await this.kms.import({
116
+ publicKeyHex: kms_core_1.BaseConverter.convert(ktu.publicKeyJWK, kms_core_1.Base.JWK, kms_core_1.Base.Hex, ktu.secrets.keyType),
117
+ secret: ktu.secrets,
118
+ });
119
+ }
120
+ }
121
+ const didCommKeys = [...await Promise.all(params.keysToCreate
122
+ .filter((x) => x.vmKey == agent_registry_1.VMKey.DIDComm)
123
+ .map(async (x) => ({
124
+ id: x.id,
125
+ pbk: await this.kms.create(kms_core_1.Suite.DIDCommV2),
126
+ }))), ...(_a = (params.keysToImport || [])) === null || _a === void 0 ? void 0 : _a.filter(x => x.vmKey == agent_registry_1.VMKey.DIDComm).map(x => ({
127
+ id: x.id,
128
+ pbk: { publicKeyJWK: x.publicKeyJWK }
129
+ }))];
130
+ const bbsbls2020Keys = [...await Promise.all(params.keysToCreate
131
+ .filter((x) => x.vmKey == agent_registry_1.VMKey.VC)
132
+ .map(async (x) => ({
133
+ id: x.id,
134
+ pbk: await this.kms.create(kms_core_1.Suite.Bbsbls2020),
135
+ }))),
136
+ ...(_b = (params.keysToImport || [])) === null || _b === void 0 ? void 0 : _b.filter(x => x.vmKey == agent_registry_1.VMKey.VC).map(x => ({
137
+ id: x.id,
138
+ pbk: { publicKeyJWK: x.publicKeyJWK }
139
+ }))];
140
+ const rsaKeys = [...await Promise.all(params.keysToCreate
141
+ .filter((x) => x.vmKey == agent_registry_1.VMKey.RSA)
142
+ .map(async (x) => ({
143
+ id: x.id,
144
+ pbk: await this.kms.create(kms_core_1.Suite.RsaSignature2018),
145
+ }))),
146
+ ...(_c = (params.keysToImport || [])) === null || _c === void 0 ? void 0 : _c.filter(x => x.vmKey == agent_registry_1.VMKey.RSA).map(x => ({
147
+ id: x.id,
148
+ pbk: { publicKeyJWK: x.publicKeyJWK }
149
+ }))];
150
+ const ecdskeys = [...await Promise.all(params.keysToCreate
151
+ .filter((x) => x.vmKey == agent_registry_1.VMKey.ES256k)
152
+ .map(async (x) => ({
153
+ id: x.id,
154
+ pbk: await this.kms.create(kms_core_1.Suite.ES256k),
155
+ }))),
156
+ ...(_d = (params.keysToImport || [])) === null || _d === void 0 ? void 0 : _d.filter(x => x.vmKey == agent_registry_1.VMKey.ES256k).map(x => ({
157
+ id: x.id,
158
+ pbk: { publicKeyJWK: x.publicKeyJWK }
159
+ }))];
160
+ if (!params.services) {
161
+ params.services = new Array();
162
+ }
163
+ if (params.dwnUrl) {
164
+ params.services.push({
165
+ id: 'dwn-default',
166
+ type: 'DecentralizedWebNode',
167
+ serviceEndpoint: {
168
+ nodes: typeof params.dwnUrl === 'string' ? [params.dwnUrl] : params.dwnUrl,
169
+ },
170
+ });
171
+ }
172
+ const response = await this.registry.createDID({
173
+ didMethod: params.didMethod,
174
+ recoveryKeys: [recoveryKey.publicKeyJWK],
175
+ updateKeys: [updateKey.publicKeyJWK],
176
+ services: params.services,
177
+ alsoKnownAs: params.alsoKnownAs,
178
+ verificationMethods: didCommKeys
179
+ .map((x) => ({
180
+ id: x.id,
181
+ publicKeyJwk: x.pbk.publicKeyJWK,
182
+ purpose: [new did_core_1.KeyAgreementPurpose()],
183
+ type: 'X25519KeyAgreementKey2019',
184
+ controller: this.getOperationalDID(),
185
+ }))
186
+ .concat(bbsbls2020Keys
187
+ .map((x) => ({
188
+ id: x.id,
189
+ publicKeyJwk: x.pbk.publicKeyJWK,
190
+ purpose: [new did_core_1.AssertionMethodPurpose()],
191
+ type: 'Bls12381G1Key2020',
192
+ controller: this.getOperationalDID(),
193
+ }))
194
+ .concat(rsaKeys.map((x) => ({
195
+ id: x.id,
196
+ publicKeyJwk: x.pbk.publicKeyJWK,
197
+ purpose: [new did_core_1.AuthenticationPurpose()],
198
+ type: 'RsaVerificationKey2018',
199
+ controller: this.getOperationalDID(),
200
+ })))
201
+ .concat(ecdskeys.map((x) => ({
202
+ id: x.id,
203
+ publicKeyJwk: x.pbk.publicKeyJWK,
204
+ purpose: [new did_core_1.AuthenticationPurpose()],
205
+ type: 'EcdsaSecp256k1VerificationKey2019',
206
+ controller: this.getOperationalDID(),
207
+ }))))
208
+ });
209
+ if ('longDid' in response) {
210
+ const sidetreeResponse = response;
211
+ this.addDID({ did: did_1.DID.from(sidetreeResponse.longDid) });
212
+ const h = (args) => {
213
+ if (args.did.value == response.did) {
214
+ this.onDidCreated.off(h);
215
+ if (this.getOperationalDID().isEqual(did_1.DID.from(sidetreeResponse.longDid))) {
216
+ this.setOperationalDID(args.did);
217
+ }
218
+ }
219
+ };
220
+ await this.setOperationalDID(did_1.DID.from(sidetreeResponse.longDid));
221
+ this.onDidCreated.on(h);
222
+ }
223
+ this.addDID({ did: did_1.DID.from(response.did) });
224
+ this.waitForDIDPublish(did_1.DID.from(response.did));
225
+ return did_1.DID.from(response.did);
226
+ }
227
+ async checkDIDPublished(shortDid, setAsOperationalAfterDIDPublish = false) {
228
+ const didDocument = await this.resolver.resolve(shortDid);
229
+ if (didDocument) {
230
+ if (setAsOperationalAfterDIDPublish) {
231
+ this.setOperationalDID(shortDid);
232
+ }
233
+ this.onDidCreated.trigger({ did: shortDid });
234
+ return true;
235
+ }
236
+ return false;
237
+ }
238
+ async waitForDIDPublish(shortDid, setAsOperationalAfterDIDPublish = false) {
239
+ let interval = null;
240
+ const pollFunc = () => new Promise(async (resolve, reject) => {
241
+ if (await this.checkDIDPublished(shortDid, setAsOperationalAfterDIDPublish)) {
242
+ if (interval) {
243
+ clearInterval(interval);
244
+ }
245
+ }
246
+ resolve();
247
+ });
248
+ const result = await this.checkDIDPublished(shortDid, setAsOperationalAfterDIDPublish);
249
+ if (result)
250
+ return;
251
+ interval = setInterval(async () => {
252
+ await pollFunc();
253
+ }, 5000);
254
+ }
255
+ async updateDID(params) {
256
+ params.did = params.did || this.getOperationalDID();
257
+ const didDoc = await this.resolver.resolveWithMetdata(params.did);
258
+ const keys = (await this.kms.getPublicKeysBySuiteType(kms_core_1.Suite.ES256k)).map(jwk => ({
259
+ jwk,
260
+ updateCommitmentHash: modena_sdk_1.UpdateCommitmentUtils.getUpdateCommitmentHash(jwk),
261
+ }));
262
+ const updateKey = keys.find(x => didDoc.didDocumentMetadata.method.updateCommitment.some(y => y == x.updateCommitmentHash));
263
+ const newUpdateKey = await this.kms.create(kms_core_1.Suite.ES256k);
264
+ params.verificationMethodsToAdd = params.verificationMethodsToAdd || [];
265
+ const didCommKeys = await Promise.all(params.verificationMethodsToAdd
266
+ .filter((x) => x.vmKey == agent_registry_1.VMKey.DIDComm)
267
+ .map(async (x) => ({
268
+ id: x.id,
269
+ pbk: await this.kms.create(kms_core_1.Suite.DIDCommV2),
270
+ })));
271
+ const bbsbls2020Keys = await Promise.all(params.verificationMethodsToAdd
272
+ .filter((x) => x.vmKey == agent_registry_1.VMKey.VC)
273
+ .map(async (x) => ({
274
+ id: x.id,
275
+ pbk: await this.kms.create(kms_core_1.Suite.Bbsbls2020),
276
+ })));
277
+ const rsaKeys = await Promise.all(params.verificationMethodsToAdd
278
+ .filter((x) => x.vmKey == agent_registry_1.VMKey.RSA)
279
+ .map(async (x) => ({
280
+ id: x.id,
281
+ pbk: await this.kms.create(kms_core_1.Suite.RsaSignature2018),
282
+ })));
283
+ const es256kKeys = await Promise.all(params.verificationMethodsToAdd
284
+ .filter((x) => x.vmKey == agent_registry_1.VMKey.ES256k)
285
+ .map(async (x) => ({
286
+ id: x.id,
287
+ pbk: await this.kms.create(kms_core_1.Suite.ES256k),
288
+ })));
289
+ let time = Date.now();
290
+ if (params.dwnUrl) {
291
+ for (let dwn of params.dwnUrl) {
292
+ dwn.id = dwn.id || `dwn-service-${time++}`;
293
+ params.servicesToAdd = params.servicesToAdd || new Array;
294
+ params.servicesToAdd.push({
295
+ id: dwn.id,
296
+ type: 'DecentralizedWebNode',
297
+ serviceEndpoint: {
298
+ nodes: typeof params.dwnUrl === 'string' ? [params.dwnUrl] : params.dwnUrl,
299
+ },
300
+ });
301
+ }
302
+ }
303
+ await this.registry.updateDIDDocument({
304
+ did: params.did,
305
+ updatePublicKey: updateKey.jwk,
306
+ kms: this.kms,
307
+ documentMetadata: didDoc.didDocumentMetadata,
308
+ newUpdateKeys: [...(params.controllersToAdd || []), newUpdateKey.publicKeyJWK],
309
+ servicesToAdd: params.servicesToAdd,
310
+ idsOfServiceToRemove: params.idsOfServiceToRemove,
311
+ idsOfVerificationMethodsToRemove: params.idsOfVerificationMethodsToRemove,
312
+ updateKeysToRemove: params.updateKeysToRemove,
313
+ alsoKnownAsToAdd: params.alsoKnownAsToAdd,
314
+ alsoKnownAsToRemove: params.alsoKnownAsToRemove,
315
+ verificationMethodsToAdd: didCommKeys
316
+ .map((x) => ({
317
+ id: x.id,
318
+ publicKeyJwk: x.pbk.publicKeyJWK,
319
+ purpose: [new did_core_1.KeyAgreementPurpose()],
320
+ type: 'X25519KeyAgreementKey2019',
321
+ controller: this.getOperationalDID(),
322
+ }))
323
+ .concat(bbsbls2020Keys
324
+ .map((x) => ({
325
+ id: x.id,
326
+ publicKeyJwk: x.pbk.publicKeyJWK,
327
+ purpose: [new did_core_1.AssertionMethodPurpose()],
328
+ type: 'Bls12381G1Key2020',
329
+ controller: this.getOperationalDID(),
330
+ }))
331
+ .concat(rsaKeys.map((x) => ({
332
+ id: x.id,
333
+ publicKeyJwk: x.pbk.publicKeyJWK,
334
+ purpose: [new did_core_1.AuthenticationPurpose()],
335
+ type: 'RsaVerificationKey2018',
336
+ controller: this.getOperationalDID(),
337
+ })))
338
+ .concat(es256kKeys.map((x) => ({
339
+ id: x.id,
340
+ publicKeyJwk: x.pbk.publicKeyJWK,
341
+ purpose: [new did_core_1.AuthenticationPurpose()],
342
+ type: 'EcdsaSecp256k1VerificationKey2019',
343
+ controller: this.getOperationalDID(),
344
+ })))),
345
+ // verificationMethodsToAdd: didCommKeys
346
+ // .map((x) => ({
347
+ // id: x.id,
348
+ // publicKeyJwk: x.pbk.publicKeyJWK,
349
+ // purpose: [new KeyAgreementPurpose()],
350
+ // type: 'X25519KeyAgreementKey2019',
351
+ // controller: this.getOperationalDID(),
352
+ // }))
353
+ // .concat(
354
+ // bbsbls2020Keys
355
+ // .map((x) => ({
356
+ // id: x.id,
357
+ // publicKeyJwk: x.pbk.publicKeyJWK,
358
+ // purpose: [new AssertionMethodPurpose()],
359
+ // type: 'Bls12381G1Key2020',
360
+ // controller: this.getOperationalDID(),
361
+ // }))
362
+ // .concat(
363
+ // rsaKeys.map((x) => ({
364
+ // id: x.id,
365
+ // publicKeyJwk: x.pbk.publicKeyJWK,
366
+ // purpose: [new AuthenticationPurpose()],
367
+ // type: 'RsaVerificationKey2018',
368
+ // controller: this.getOperationalDID(),
369
+ // }))
370
+ // )
371
+ // ),
372
+ });
373
+ }
374
+ async exportKeys(params) {
375
+ const keys = await this.kms.getAllPublicKeys();
376
+ const exportResult = await params.exportBehavior.export({
377
+ dids: this._dids,
378
+ operationalDID: this.getOperationalDID().value,
379
+ keys: await Promise.all(keys.map(async (x) => ({
380
+ publicKeyHex: kms_core_1.BaseConverter.convert(x, kms_core_1.Base.JWK, kms_core_1.Base.Hex, x.kty),
381
+ secret: await this.kms.export(x),
382
+ }))),
383
+ });
384
+ return exportResult;
385
+ }
386
+ async importKeys(params) {
387
+ const importResult = await params.exportBehavior.import(params.exportResult);
388
+ if (importResult.dids.length == 0)
389
+ throw new Error('agent importKeys requires at least one did in exportResult');
390
+ await Promise.all(importResult.keys.map(async (key) => this.kms.import({
391
+ publicKeyHex: key.publicKeyHex,
392
+ secret: key.secret,
393
+ })));
394
+ this._dids = importResult.dids;
395
+ await this.agentStorage.add(AGENT_DID_KEY, this._dids);
396
+ await this.setOperationalDID(did_1.DID.from(importResult.operationalDID || this._dids[0]));
397
+ }
398
+ }
399
+ exports.AgentIdentity = AgentIdentity;
400
+ //# sourceMappingURL=agent-identity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-identity.js","sourceRoot":"","sources":["../../src/models/agent-identity.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,95 @@
1
+ import { IJWK, IKMS } from "@extrimian/kms-core";
2
+ import { ModenaUniversalRegistry } from "@extrimian/did-registry";
3
+ import { Purpose, Service } from "@extrimian/did-core";
4
+ import { DID } from "./did";
5
+ import { DIDDocumentMetadata } from "@extrimian/modena-sdk";
6
+ export declare abstract class IAgentRegistry {
7
+ protected kms: IKMS;
8
+ initialize(params: {
9
+ kms: IKMS;
10
+ }): void;
11
+ abstract createDID(createRequest: CreateDIDRequest): Promise<CreateDIDResponse>;
12
+ abstract updateDIDDocument(updateRequest: UpdateDIDRequest): Promise<void>;
13
+ }
14
+ export declare abstract class IAgentSidetreeRegistry extends IAgentRegistry {
15
+ protected kms: IKMS;
16
+ initialize(params: {
17
+ kms: IKMS;
18
+ }): void;
19
+ abstract createDID(createRequest: CreateDIDRequest): Promise<CreateDIDSidetreeResponse>;
20
+ }
21
+ export interface CreateDIDRequest {
22
+ didMethod?: string;
23
+ updateKeys: IJWK[];
24
+ recoveryKeys: IJWK[];
25
+ verificationMethods: {
26
+ id: string;
27
+ type: string;
28
+ publicKeyJwk: IJWK;
29
+ purpose: Purpose[];
30
+ }[];
31
+ services?: Service[];
32
+ alsoKnownAs?: string[];
33
+ }
34
+ export interface UpdateDIDRequest {
35
+ did: DID;
36
+ didMethod?: string;
37
+ updatePublicKey: IJWK;
38
+ kms: IKMS;
39
+ newUpdateKeys: IJWK[];
40
+ documentMetadata: DIDDocumentMetadata;
41
+ updateKeysToRemove?: {
42
+ publicKeys?: IJWK[];
43
+ updateCommitment?: string[];
44
+ };
45
+ verificationMethodsToAdd?: {
46
+ id: string;
47
+ type: string;
48
+ publicKeyJwk: IJWK;
49
+ purpose: Purpose[];
50
+ }[];
51
+ idsOfVerificationMethodsToRemove?: string[];
52
+ servicesToAdd?: ServiceDefinition[];
53
+ idsOfServiceToRemove?: string[];
54
+ alsoKnownAsToAdd?: string[];
55
+ alsoKnownAsToRemove?: string[];
56
+ }
57
+ export interface CreateDIDResponse {
58
+ did: string;
59
+ }
60
+ export interface CreateDIDSidetreeResponse extends CreateDIDResponse {
61
+ longDid: string;
62
+ }
63
+ export interface KeyDefinition {
64
+ id: string;
65
+ vmKey: VMKey;
66
+ }
67
+ export declare enum VMKey {
68
+ ES256k = 0,
69
+ DIDComm = 1,
70
+ VC = 2,
71
+ RSA = 3
72
+ }
73
+ export interface ServiceDefinition {
74
+ id: string;
75
+ type: string;
76
+ serviceEndpoint: string | string[] | Record<string, string | string[]>;
77
+ }
78
+ export declare class AgentModenaUniversalRegistry extends IAgentSidetreeRegistry {
79
+ private modenaEndpointURL;
80
+ _defaultDidMethod: string;
81
+ didService: ModenaUniversalRegistry;
82
+ constructor(modenaEndpointURL: string, defaultDidMethod?: string);
83
+ setDefaultDIDMethod(didMethod: string): void;
84
+ getSupportedDidMethods(): Promise<string[]>;
85
+ createDID(createRequest: CreateDIDRequest): Promise<CreateDIDSidetreeResponse>;
86
+ updateDIDDocument(request: UpdateDIDRequest): Promise<any>;
87
+ }
88
+ export declare class AgentModenaRegistry extends IAgentSidetreeRegistry {
89
+ private modenaEndpointURL;
90
+ private didMethod?;
91
+ didService: any;
92
+ constructor(modenaEndpointURL: string, didMethod?: string);
93
+ createDID(createRequest: CreateDIDRequest): Promise<CreateDIDSidetreeResponse>;
94
+ updateDIDDocument(request: UpdateDIDRequest): Promise<any>;
95
+ }
@@ -0,0 +1,131 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AgentModenaRegistry = exports.AgentModenaUniversalRegistry = exports.VMKey = exports.IAgentSidetreeRegistry = exports.IAgentRegistry = void 0;
4
+ const kms_core_1 = require("@extrimian/kms-core");
5
+ const did_registry_1 = require("@extrimian/did-registry");
6
+ const modena_sdk_1 = require("@extrimian/modena-sdk");
7
+ class IAgentRegistry {
8
+ initialize(params) {
9
+ this.kms = params.kms;
10
+ }
11
+ }
12
+ exports.IAgentRegistry = IAgentRegistry;
13
+ class IAgentSidetreeRegistry extends IAgentRegistry {
14
+ initialize(params) {
15
+ this.kms = params.kms;
16
+ }
17
+ }
18
+ exports.IAgentSidetreeRegistry = IAgentSidetreeRegistry;
19
+ var VMKey;
20
+ (function (VMKey) {
21
+ VMKey[VMKey["ES256k"] = 0] = "ES256k";
22
+ VMKey[VMKey["DIDComm"] = 1] = "DIDComm";
23
+ VMKey[VMKey["VC"] = 2] = "VC";
24
+ VMKey[VMKey["RSA"] = 3] = "RSA";
25
+ })(VMKey = exports.VMKey || (exports.VMKey = {}));
26
+ class AgentModenaUniversalRegistry extends IAgentSidetreeRegistry {
27
+ constructor(modenaEndpointURL, defaultDidMethod) {
28
+ super();
29
+ this.modenaEndpointURL = modenaEndpointURL;
30
+ this.didService = new did_registry_1.ModenaUniversalRegistry();
31
+ modena_sdk_1.ModenaSdkConfig.maxCanonicalizedDeltaSizeInBytes = 2000;
32
+ this._defaultDidMethod = defaultDidMethod;
33
+ }
34
+ setDefaultDIDMethod(didMethod) {
35
+ this._defaultDidMethod = didMethod;
36
+ }
37
+ async getSupportedDidMethods() {
38
+ return await this.didService.getSupportedDidMethods(this.modenaEndpointURL);
39
+ }
40
+ async createDID(createRequest) {
41
+ var _a;
42
+ const defaultDidMethod = createRequest.didMethod || this._defaultDidMethod || (await (this.getSupportedDidMethods())[0]);
43
+ const didService = new did_registry_1.ModenaUniversalRegistry();
44
+ const createDIDResponse = await didService.createDID({
45
+ updateKeys: createRequest.updateKeys,
46
+ recoveryKeys: createRequest.recoveryKeys,
47
+ verificationMethods: createRequest.verificationMethods,
48
+ services: ((_a = createRequest.services) === null || _a === void 0 ? void 0 : _a.length) > 0 ? createRequest.services : undefined,
49
+ alsoKnownAs: createRequest.alsoKnownAs,
50
+ });
51
+ const publishResult = await didService.publishDID({
52
+ didMethod: defaultDidMethod,
53
+ universalResolverURL: this.modenaEndpointURL,
54
+ createDIDResponse: createDIDResponse,
55
+ });
56
+ return {
57
+ did: publishResult.did,
58
+ longDid: publishResult.longDid,
59
+ };
60
+ }
61
+ async updateDIDDocument(request) {
62
+ return await this.didService.updateDID({
63
+ didSuffix: request.did.getDIDSuffix(),
64
+ didMethod: request.didMethod || request.did.getDidMethod(),
65
+ newUpdateKeys: request.newUpdateKeys,
66
+ updateApiUrl: this.modenaEndpointURL,
67
+ updateKeysToRemove: request.updateKeysToRemove,
68
+ documentMetadata: request.documentMetadata,
69
+ updatePublicKey: request.updatePublicKey,
70
+ idsOfServiceToRemove: request.idsOfServiceToRemove,
71
+ servicesToAdd: request.servicesToAdd,
72
+ verificationMethodsToAdd: request.verificationMethodsToAdd,
73
+ idsOfVerificationMethodsToRemove: request.idsOfVerificationMethodsToRemove,
74
+ alsoKnownAsToAdd: request.alsoKnownAsToAdd,
75
+ alsoKnownAsToRemove: request.alsoKnownAsToRemove,
76
+ signer: async (content) => {
77
+ return await request.kms.sign(kms_core_1.Suite.ES256k, request.updatePublicKey, content);
78
+ },
79
+ });
80
+ }
81
+ }
82
+ exports.AgentModenaUniversalRegistry = AgentModenaUniversalRegistry;
83
+ class AgentModenaRegistry extends IAgentSidetreeRegistry {
84
+ constructor(modenaEndpointURL, didMethod) {
85
+ super();
86
+ this.modenaEndpointURL = modenaEndpointURL;
87
+ this.didMethod = didMethod;
88
+ this.didService = new did_registry_1.Did();
89
+ }
90
+ async createDID(createRequest) {
91
+ var _a;
92
+ modena_sdk_1.ModenaSdkConfig.maxCanonicalizedDeltaSizeInBytes = 2000;
93
+ const createDIDResponse = await this.didService.createDID({
94
+ updateKeys: createRequest.updateKeys,
95
+ recoveryKeys: createRequest.recoveryKeys,
96
+ verificationMethods: createRequest.verificationMethods,
97
+ didMethod: this.didMethod,
98
+ services: ((_a = createRequest.services) === null || _a === void 0 ? void 0 : _a.length) > 0 ? createRequest.services : undefined,
99
+ alsoKnownAs: createRequest.alsoKnownAs,
100
+ });
101
+ const publishResult = await this.didService.publishDID({
102
+ modenaApiURL: this.modenaEndpointURL,
103
+ createDIDResponse: createDIDResponse,
104
+ });
105
+ return {
106
+ did: publishResult.did,
107
+ longDid: createDIDResponse.longDid,
108
+ };
109
+ }
110
+ async updateDIDDocument(request) {
111
+ return await this.didService.updateDID({
112
+ didSuffix: request.did.getDIDSuffix(),
113
+ newUpdateKeys: request.newUpdateKeys,
114
+ updateApiUrl: this.modenaEndpointURL,
115
+ updateKeysToRemove: request.updateKeysToRemove,
116
+ documentMetadata: request.documentMetadata,
117
+ updatePublicKey: request.updatePublicKey,
118
+ idsOfServiceToRemove: request.idsOfServiceToRemove,
119
+ servicesToAdd: request.servicesToAdd,
120
+ verificationMethodsToAdd: request.verificationMethodsToAdd,
121
+ idsOfVerificationMethodsToRemove: request.idsOfVerificationMethodsToRemove,
122
+ alsoKnownAsToAdd: request.alsoKnownAsToAdd,
123
+ alsoKnownAsToRemove: request.alsoKnownAsToRemove,
124
+ signer: async (content) => {
125
+ return await request.kms.sign(kms_core_1.Suite.ES256k, request.updatePublicKey, content);
126
+ },
127
+ });
128
+ }
129
+ }
130
+ exports.AgentModenaRegistry = AgentModenaRegistry;
131
+ //# sourceMappingURL=agent-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-registry.js","sourceRoot":"","sources":["../../src/models/agent-registry.ts"],"names":[],"mappings":"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"}