@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.
- package/dist/agent.js +174 -0
- package/dist/agent.js.map +1 -0
- package/dist/index.js +61 -0
- package/dist/index.js.map +1 -0
- package/dist/messaging/messaging.js +91 -0
- package/dist/messaging/messaging.js.map +1 -0
- package/dist/models/agent-identity.js +400 -0
- package/dist/models/agent-identity.js.map +1 -0
- package/dist/models/agent-registry.d.ts +95 -0
- package/dist/models/agent-registry.js +131 -0
- package/dist/models/agent-registry.js.map +1 -0
- package/dist/vc/vc.js +329 -0
- package/dist/vc/vc.js.map +1 -0
- package/package.json +6 -6
package/dist/agent.js
ADDED
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Agent = void 0;
|
|
4
|
+
const kms_client_1 = require("@extrimian/kms-client");
|
|
5
|
+
const kms_core_1 = require("@extrimian/kms-core");
|
|
6
|
+
const vc_protocol_not_found_1 = require("./exceptions/vc-protocol-not-found");
|
|
7
|
+
const messaging_1 = require("./messaging/messaging");
|
|
8
|
+
const agent_identity_1 = require("./models/agent-identity");
|
|
9
|
+
const agent_kms_1 = require("./models/agent-kms");
|
|
10
|
+
const did_1 = require("./models/did");
|
|
11
|
+
const plugin_dispatcher_1 = require("./plugins/plugin-dispatcher");
|
|
12
|
+
const transport_1 = require("./transport/transport");
|
|
13
|
+
const vc_1 = require("./vc/vc");
|
|
14
|
+
const lite_event_1 = require("./utils/lite-event");
|
|
15
|
+
class Agent {
|
|
16
|
+
get messaging() {
|
|
17
|
+
return this._messaging;
|
|
18
|
+
}
|
|
19
|
+
get vc() {
|
|
20
|
+
if (!this._vc) {
|
|
21
|
+
this._vc = new vc_1.VC({
|
|
22
|
+
messaging: this.messaging,
|
|
23
|
+
agentStorage: this.agentStorage,
|
|
24
|
+
vcStorage: this.vcStorage,
|
|
25
|
+
identity: this.identity,
|
|
26
|
+
kms: this.kms,
|
|
27
|
+
resolver: this.resolver,
|
|
28
|
+
transports: this.agentTransport,
|
|
29
|
+
vcProtocols: this.vcProtocols,
|
|
30
|
+
verificationRules: this.verificationRules,
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
return this._vc;
|
|
34
|
+
}
|
|
35
|
+
get transport() {
|
|
36
|
+
return this.agentTransport;
|
|
37
|
+
}
|
|
38
|
+
get agentInitialized() { return this.onAgentInitialized.expose(); }
|
|
39
|
+
constructor(params) {
|
|
40
|
+
this.onAgentInitialized = new lite_event_1.LiteEvent();
|
|
41
|
+
this.verificationRules = [];
|
|
42
|
+
this.agentSecureStorage = params.secureStorage;
|
|
43
|
+
this.vcStorage = params.vcStorage;
|
|
44
|
+
this.agentSecureStorage = params.secureStorage;
|
|
45
|
+
this.agentStorage = params.agentStorage;
|
|
46
|
+
this.pluginDispatcher = new plugin_dispatcher_1.PluginDispatcher(params.agentPlugins.filter(x => x.canHandle));
|
|
47
|
+
this.vcProtocols = params.vcProtocols;
|
|
48
|
+
this.kms = params.kms || new kms_client_1.KMSClient({
|
|
49
|
+
lang: params.mnemonicLang || kms_core_1.LANG.en,
|
|
50
|
+
storage: this.agentSecureStorage,
|
|
51
|
+
didResolver: (did) => this.resolver.resolve(did_1.DID.from(did)),
|
|
52
|
+
mobile: false,
|
|
53
|
+
});
|
|
54
|
+
if (!params.didDocumentResolver) {
|
|
55
|
+
throw new Error("didDocumentResolver is required. You can define a custom resolver that extends AgentDocumentResolver interface or set an universal resolver endpoint URL.");
|
|
56
|
+
}
|
|
57
|
+
if (!params.didDocumentRegistry) {
|
|
58
|
+
throw new Error("didDocumentRegistry is required. You can define a custom registry that extends AgentDocumentRegistry interface or set a modena endpoint URL.");
|
|
59
|
+
}
|
|
60
|
+
this.identity = new agent_identity_1.AgentIdentity({
|
|
61
|
+
agentStorage: this.agentStorage,
|
|
62
|
+
kms: this.kms,
|
|
63
|
+
registry: this.registry,
|
|
64
|
+
resolver: this.resolver,
|
|
65
|
+
});
|
|
66
|
+
this.resolver = params.didDocumentResolver;
|
|
67
|
+
this.registry = params.didDocumentRegistry;
|
|
68
|
+
this.registry.initialize({ kms: this.kms });
|
|
69
|
+
this.agentKMS = new agent_kms_1.AgentKMS({
|
|
70
|
+
identity: this.identity,
|
|
71
|
+
kms: this.kms,
|
|
72
|
+
resolver: this.resolver
|
|
73
|
+
});
|
|
74
|
+
this.agentTransport = new transport_1.AgentTransport({
|
|
75
|
+
transports: params.supportedTransports,
|
|
76
|
+
agent: this,
|
|
77
|
+
});
|
|
78
|
+
this.vcProtocols.forEach(vcProtocol => {
|
|
79
|
+
vcProtocol.initialize({
|
|
80
|
+
agent: this,
|
|
81
|
+
});
|
|
82
|
+
});
|
|
83
|
+
this.plugins = params.agentPlugins;
|
|
84
|
+
this.credentialStatusPlugins = params.credentialStatusPlugins;
|
|
85
|
+
}
|
|
86
|
+
async addVerificationRules(v) {
|
|
87
|
+
this.verificationRules.push(v);
|
|
88
|
+
}
|
|
89
|
+
async initialize(params) {
|
|
90
|
+
await this.identity.initialize({
|
|
91
|
+
operationalDID: params === null || params === void 0 ? void 0 : params.operationalDID,
|
|
92
|
+
registry: this.registry,
|
|
93
|
+
resolver: this.resolver,
|
|
94
|
+
});
|
|
95
|
+
if (this.plugins) {
|
|
96
|
+
await Promise.all(this.plugins.map(async (x) => await x.initialize({ agent: this })));
|
|
97
|
+
}
|
|
98
|
+
if (this.credentialStatusPlugins && this.credentialStatusPlugins.length > 0) {
|
|
99
|
+
this.initializeStatusListPlugins();
|
|
100
|
+
}
|
|
101
|
+
if (!this._vc) {
|
|
102
|
+
this._vc = new vc_1.VC({
|
|
103
|
+
messaging: this.messaging,
|
|
104
|
+
agentStorage: this.agentStorage,
|
|
105
|
+
vcStorage: this.vcStorage,
|
|
106
|
+
identity: this.identity,
|
|
107
|
+
kms: this.kms,
|
|
108
|
+
resolver: this.resolver,
|
|
109
|
+
transports: this.agentTransport,
|
|
110
|
+
vcProtocols: this.vcProtocols,
|
|
111
|
+
verificationRules: this.verificationRules,
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
this._messaging = new messaging_1.Messaging({
|
|
115
|
+
kms: this.kms,
|
|
116
|
+
identity: this.identity,
|
|
117
|
+
resolver: this.resolver,
|
|
118
|
+
registry: this.registry,
|
|
119
|
+
transport: this.agentTransport,
|
|
120
|
+
});
|
|
121
|
+
this.agentTransport.messageArrived.on(async (data) => {
|
|
122
|
+
await this.processMessage({
|
|
123
|
+
message: data.message,
|
|
124
|
+
transport: data.transport,
|
|
125
|
+
contextMessage: data.contextMessage
|
|
126
|
+
});
|
|
127
|
+
});
|
|
128
|
+
this.onAgentInitialized.trigger();
|
|
129
|
+
}
|
|
130
|
+
async initializeStatusListPlugins() {
|
|
131
|
+
const ensureDIDCreated = async () => {
|
|
132
|
+
if (this.identity.getDIDs().length > 0)
|
|
133
|
+
return;
|
|
134
|
+
return new Promise((resolve, reject) => {
|
|
135
|
+
const didCreatedEvent = () => {
|
|
136
|
+
resolve();
|
|
137
|
+
this.identity.didCreated.off(didCreatedEvent);
|
|
138
|
+
};
|
|
139
|
+
this.identity.didCreated.on(didCreatedEvent);
|
|
140
|
+
});
|
|
141
|
+
};
|
|
142
|
+
await ensureDIDCreated();
|
|
143
|
+
for (let cs of this.credentialStatusPlugins) {
|
|
144
|
+
this.vc.addCredentialStatusStrategy(cs);
|
|
145
|
+
cs.initialize({ agent: this });
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
async processMessage(params) {
|
|
149
|
+
try {
|
|
150
|
+
await this.vc.processMessage(params);
|
|
151
|
+
}
|
|
152
|
+
catch (error) {
|
|
153
|
+
if (error instanceof vc_protocol_not_found_1.VCProtocolNotFoundError) {
|
|
154
|
+
const response = await this.pluginDispatcher.dispatch({
|
|
155
|
+
message: params.message,
|
|
156
|
+
contextMessage: params.contextMessage
|
|
157
|
+
});
|
|
158
|
+
if (response) {
|
|
159
|
+
await this.agentTransport.sendMessage({
|
|
160
|
+
message: response.message,
|
|
161
|
+
to: response.to,
|
|
162
|
+
messageContext: params.contextMessage,
|
|
163
|
+
preferredTransport: params.transport
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
else {
|
|
168
|
+
throw error;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
exports.Agent = Agent;
|
|
174
|
+
//# sourceMappingURL=agent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.ConnectableTransport = exports.SelectiveDisclosure = exports.WACIProtocol = exports.WACICredentialOfferSucceded = exports.WACICredentialOfferResult = exports.WACICredentialOfferRejected = exports.VCProtocol = exports.VCMessageType = exports.OpenIDProtocol = exports.CredentialFlow = exports.WebsocketTransport = exports.WebsocketServerTransport = exports.WebsocketClientTransport = exports.DWNAmiTransport = exports.DWNTransport = exports.DID = exports.AgentModenaResolverCached = exports.AgentModenaUniversalResolverCached = exports.AgentModenaUniversalResolver = exports.AgentModenaResolver = exports.IdentityPlainTextDataShareBehavior = exports.Agent = exports.VerifiableCredential = void 0;
|
|
18
|
+
var vc_core_1 = require("@extrimian/vc-core");
|
|
19
|
+
Object.defineProperty(exports, "VerifiableCredential", { enumerable: true, get: function () { return vc_core_1.VerifiableCredential; } });
|
|
20
|
+
var agent_1 = require("./agent");
|
|
21
|
+
Object.defineProperty(exports, "Agent", { enumerable: true, get: function () { return agent_1.Agent; } });
|
|
22
|
+
var identity_plaintext_data_share_behavior_1 = require("./data-share-behaviours/identity-plaintext-data-share-behavior");
|
|
23
|
+
Object.defineProperty(exports, "IdentityPlainTextDataShareBehavior", { enumerable: true, get: function () { return identity_plaintext_data_share_behavior_1.IdentityPlainTextDataShareBehavior; } });
|
|
24
|
+
__exportStar(require("./models/agent-registry"), exports);
|
|
25
|
+
var agent_resolver_1 = require("./models/agent-resolver");
|
|
26
|
+
Object.defineProperty(exports, "AgentModenaResolver", { enumerable: true, get: function () { return agent_resolver_1.AgentModenaResolver; } });
|
|
27
|
+
Object.defineProperty(exports, "AgentModenaUniversalResolver", { enumerable: true, get: function () { return agent_resolver_1.AgentModenaUniversalResolver; } });
|
|
28
|
+
var agent_resolver_cache_1 = require("./models/agent-resolver-cache");
|
|
29
|
+
Object.defineProperty(exports, "AgentModenaUniversalResolverCached", { enumerable: true, get: function () { return agent_resolver_cache_1.AgentModenaUniversalResolverCached; } });
|
|
30
|
+
Object.defineProperty(exports, "AgentModenaResolverCached", { enumerable: true, get: function () { return agent_resolver_cache_1.AgentModenaResolverCached; } });
|
|
31
|
+
var did_1 = require("./models/did");
|
|
32
|
+
Object.defineProperty(exports, "DID", { enumerable: true, get: function () { return did_1.DID; } });
|
|
33
|
+
var dwn_transport_1 = require("./models/transports/dwn-transport");
|
|
34
|
+
Object.defineProperty(exports, "DWNTransport", { enumerable: true, get: function () { return dwn_transport_1.DWNTransport; } });
|
|
35
|
+
var ami_transport_1 = require("./models/transports/ami-transport");
|
|
36
|
+
Object.defineProperty(exports, "DWNAmiTransport", { enumerable: true, get: function () { return ami_transport_1.DWNAmiTransport; } });
|
|
37
|
+
var websocket_client_transport_1 = require("./models/transports/websocket-client-transport");
|
|
38
|
+
Object.defineProperty(exports, "WebsocketClientTransport", { enumerable: true, get: function () { return websocket_client_transport_1.WebsocketClientTransport; } });
|
|
39
|
+
var websocket_server_transport_1 = require("./models/transports/websocket-server-transport");
|
|
40
|
+
Object.defineProperty(exports, "WebsocketServerTransport", { enumerable: true, get: function () { return websocket_server_transport_1.WebsocketServerTransport; } });
|
|
41
|
+
var websocket_transport_1 = require("./models/transports/websocket-transport");
|
|
42
|
+
Object.defineProperty(exports, "WebsocketTransport", { enumerable: true, get: function () { return websocket_transport_1.WebsocketTransport; } });
|
|
43
|
+
var credentia_flow_1 = require("./vc/models/credentia-flow");
|
|
44
|
+
Object.defineProperty(exports, "CredentialFlow", { enumerable: true, get: function () { return credentia_flow_1.CredentialFlow; } });
|
|
45
|
+
var openid_protocol_1 = require("./vc/protocols/openid-protocol");
|
|
46
|
+
Object.defineProperty(exports, "OpenIDProtocol", { enumerable: true, get: function () { return openid_protocol_1.OpenIDProtocol; } });
|
|
47
|
+
var vc_protocol_1 = require("./vc/protocols/vc-protocol");
|
|
48
|
+
Object.defineProperty(exports, "VCMessageType", { enumerable: true, get: function () { return vc_protocol_1.VCMessageType; } });
|
|
49
|
+
Object.defineProperty(exports, "VCProtocol", { enumerable: true, get: function () { return vc_protocol_1.VCProtocol; } });
|
|
50
|
+
var waci_protocol_1 = require("./vc/protocols/waci-protocol");
|
|
51
|
+
Object.defineProperty(exports, "WACICredentialOfferRejected", { enumerable: true, get: function () { return waci_protocol_1.WACICredentialOfferRejected; } });
|
|
52
|
+
Object.defineProperty(exports, "WACICredentialOfferResult", { enumerable: true, get: function () { return waci_protocol_1.WACICredentialOfferResult; } });
|
|
53
|
+
Object.defineProperty(exports, "WACICredentialOfferSucceded", { enumerable: true, get: function () { return waci_protocol_1.WACICredentialOfferSucceded; } });
|
|
54
|
+
Object.defineProperty(exports, "WACIProtocol", { enumerable: true, get: function () { return waci_protocol_1.WACIProtocol; } });
|
|
55
|
+
var waci_protocol_2 = require("./vc/protocols/waci-protocol");
|
|
56
|
+
Object.defineProperty(exports, "SelectiveDisclosure", { enumerable: true, get: function () { return waci_protocol_2.SelectiveDisclosure; } });
|
|
57
|
+
var connectable_transport_1 = require("./models/transports/connectable-transport");
|
|
58
|
+
Object.defineProperty(exports, "ConnectableTransport", { enumerable: true, get: function () { return connectable_transport_1.ConnectableTransport; } });
|
|
59
|
+
__exportStar(require("./data-share-behaviours/vcs/vc-share-behavior"), exports);
|
|
60
|
+
__exportStar(require("./data-share-behaviours/vcs/vc-share-didcomm-behavior"), exports);
|
|
61
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,8CAA0D;AAAjD,+GAAA,oBAAoB,OAAA;AAC7B,iCAAgC;AAAvB,8FAAA,KAAK,OAAA;AAGd,yHAAoH;AAA3G,4JAAA,kCAAkC,OAAA;AAC3C,0DAAwC;AACxC,0DAGiC;AAF/B,qHAAA,mBAAmB,OAAA;AACnB,8HAAA,4BAA4B,OAAA;AAG9B,sEAGuC;AAFrC,0IAAA,kCAAkC,OAAA;AAClC,iIAAA,yBAAyB,OAAA;AAI3B,oCAAmC;AAA1B,0FAAA,GAAG,OAAA;AACZ,mEAAiE;AAAxD,6GAAA,YAAY,OAAA;AAErB,mEAAoE;AAA3D,gHAAA,eAAe,OAAA;AAExB,6FAA0F;AAAjF,sIAAA,wBAAwB,OAAA;AACjC,6FAA0F;AAAjF,sIAAA,wBAAwB,OAAA;AACjC,+EAA6E;AAApE,yHAAA,kBAAkB,OAAA;AAK3B,6DAA4D;AAAnD,gHAAA,cAAc,OAAA;AACvB,kEAEwC;AADtC,iHAAA,cAAc,OAAA;AAEhB,0DAKoC;AAHlC,4GAAA,aAAa,OAAA;AACb,yGAAA,UAAU,OAAA;AAGZ,8DAGsC;AAFpC,4HAAA,2BAA2B,OAAA;AAAE,0HAAA,yBAAyB,OAAA;AAAE,4HAAA,2BAA2B,OAAA;AACnF,6GAAA,YAAY,OAAA;AAEd,8DAAiG;AAA1D,oHAAA,mBAAmB,OAAA;AAC1D,mFAAiF;AAAxE,6HAAA,oBAAoB,OAAA;AAI7B,gFAA8D;AAC9D,wFAAsE"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Messaging = void 0;
|
|
4
|
+
const did_core_1 = require("@extrimian/did-core");
|
|
5
|
+
const kms_core_1 = require("@extrimian/kms-core");
|
|
6
|
+
const did_1 = require("../models/did");
|
|
7
|
+
class Messaging {
|
|
8
|
+
constructor(args) {
|
|
9
|
+
this.kms = args.kms;
|
|
10
|
+
this.resolver = args.resolver;
|
|
11
|
+
this.registry = args.registry;
|
|
12
|
+
this.identity = args.identity;
|
|
13
|
+
this.transport = args.transport;
|
|
14
|
+
}
|
|
15
|
+
async packMessage(params) {
|
|
16
|
+
var _a, _b;
|
|
17
|
+
if (!Array.isArray(params.to)) {
|
|
18
|
+
params.to = [params.to];
|
|
19
|
+
}
|
|
20
|
+
const myDID = ((_a = params.from) === null || _a === void 0 ? void 0 : _a.value) || this.identity.getDIDs().find(x => params.message.from == x) || this.identity.getOperationalDID().value;
|
|
21
|
+
if (!myDID) {
|
|
22
|
+
throw new Error(`Message from ${(_b = params.message) === null || _b === void 0 ? void 0 : _b.from} is not a DID managed by this agent. Please check message.from`);
|
|
23
|
+
}
|
|
24
|
+
const myDIDDocument = await this.resolver.resolve(did_1.DID.from(myDID));
|
|
25
|
+
const myKeyAgreements = did_core_1.DIDDocumentUtils.getVerificationMethodsByType(myDIDDocument, did_core_1.VerificationMethodTypes.X25519KeyAgreementKey2019);
|
|
26
|
+
const didCommV2Keys = await this.kms.getPublicKeysBySuiteType(kms_core_1.Suite.DIDCommV2);
|
|
27
|
+
const keyToSign = myKeyAgreements.find(x => didCommV2Keys.some(y => y.x == x.publicKeyJwk.x && y.y == x.publicKeyJwk.y));
|
|
28
|
+
const receiptVerificationMethods = await Promise.all(params.to.map(async (did) => {
|
|
29
|
+
const targetDIDDocument = await this.resolver.resolve(did);
|
|
30
|
+
const targetKeyAgreements = did_core_1.DIDDocumentUtils.getVerificationMethodsByType(targetDIDDocument, did_core_1.VerificationMethodTypes.X25519KeyAgreementKey2019);
|
|
31
|
+
return targetKeyAgreements;
|
|
32
|
+
// return `${this.getFullVerificationMethodId(targetKeyAgreements[0].id, did)}`;
|
|
33
|
+
}));
|
|
34
|
+
if (params.messageManagerCompatible) {
|
|
35
|
+
const message = await this.kms.packv2(myKeyAgreements[0].publicKeyJwk, this.getFullVerificationMethodId(myKeyAgreements[0].id, this.identity.getOperationalDID()), [{
|
|
36
|
+
publicKeyJWK: receiptVerificationMethods[0][0].publicKeyJwk,
|
|
37
|
+
verificationMethodId: this.getFullVerificationMethodId(receiptVerificationMethods[0][0].id, did_1.DID.from(receiptVerificationMethods[0][0].controller))
|
|
38
|
+
}], params.message, "authcrypt");
|
|
39
|
+
return { packedMessage: JSON.parse(message.message) };
|
|
40
|
+
}
|
|
41
|
+
const result = await this.kms.packDIDCommV2({
|
|
42
|
+
senderVerificationMethodId: this.getFullVerificationMethodId(keyToSign.id, did_1.DID.from(myDID)),
|
|
43
|
+
recipientVerificationMethodIds: receiptVerificationMethods.map(vm => `${this.getFullVerificationMethodId(vm[0].id, did_1.DID.from(vm[0].controller))}`),
|
|
44
|
+
message: params.message,
|
|
45
|
+
packing: "authcrypt"
|
|
46
|
+
});
|
|
47
|
+
return result;
|
|
48
|
+
}
|
|
49
|
+
async unpackMessage(params) {
|
|
50
|
+
if (typeof params.message === "string") {
|
|
51
|
+
params.message = JSON.parse(params.message);
|
|
52
|
+
}
|
|
53
|
+
const myKid = params.message.recipients.find(x => this.identity.getDIDs().some(did => did == did_1.DID.from(x.header.kid).value));
|
|
54
|
+
if (!myKid) {
|
|
55
|
+
const didDocument = await this.resolver.resolve(this.identity.getOperationalDID());
|
|
56
|
+
const myKeyAgreements = did_core_1.DIDDocumentUtils.getVerificationMethodsByType(didDocument, did_core_1.VerificationMethodTypes.X25519KeyAgreementKey2019);
|
|
57
|
+
const key = myKeyAgreements[0];
|
|
58
|
+
const packedMessage = await this.kms.unpackv2(key.publicKeyJwk, { message: params.message });
|
|
59
|
+
return packedMessage.message;
|
|
60
|
+
//TODO Arrojar excepción cuando se implemente el Backend Agent y sacar esto.
|
|
61
|
+
}
|
|
62
|
+
const unpackedMessage = await this.kms.unpackvDIDCommV2(did_1.DID.from(myKid.header.kid).value, params.message);
|
|
63
|
+
return unpackedMessage.message;
|
|
64
|
+
}
|
|
65
|
+
async sendMessage(params) {
|
|
66
|
+
if (!params.packing) {
|
|
67
|
+
params.packing = "authcrypt";
|
|
68
|
+
}
|
|
69
|
+
if (params.packing != "none") {
|
|
70
|
+
params.message = (await this.packMessage({
|
|
71
|
+
to: params.to,
|
|
72
|
+
from: params.from,
|
|
73
|
+
message: params.message
|
|
74
|
+
})).packedMessage;
|
|
75
|
+
}
|
|
76
|
+
await this.transport.sendMessage({
|
|
77
|
+
message: params.message,
|
|
78
|
+
from: params.from,
|
|
79
|
+
to: params.to,
|
|
80
|
+
preferredTransport: params.preferredTransport
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
getFullVerificationMethodId(verificationMethodId, did) {
|
|
84
|
+
if (verificationMethodId.indexOf(did.value) > -1) {
|
|
85
|
+
return verificationMethodId;
|
|
86
|
+
}
|
|
87
|
+
return `${did.value}#${verificationMethodId.replace("#", "")}`;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
exports.Messaging = Messaging;
|
|
91
|
+
//# sourceMappingURL=messaging.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messaging.js","sourceRoot":"","sources":["../../src/messaging/messaging.ts"],"names":[],"mappings":"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"}
|