@docknetwork/wallet-sdk-relay-service 0.4.19 → 0.4.23

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/lib/didcomm.js ADDED
@@ -0,0 +1,603 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var _rollupPluginBabelHelpers = require('./_rollupPluginBabelHelpers-4923c894.js');
6
+ var x25519KeyAgreementKey2020 = require('@digitalbazaar/x25519-key-agreement-key-2020');
7
+ var ed25519VerificationKey2020 = require('@digitalbazaar/ed25519-verification-key-2020');
8
+ var minimalCipher = require('@docknetwork/minimal-cipher');
9
+ var uuid = require('uuid');
10
+ var base64url = require('base64url');
11
+ var did_dids = require('./did/dids.js');
12
+ require('@docknetwork/sdk/utils/did');
13
+ require('@docknetwork/wallet-sdk-wasm/src/services/dock/service');
14
+
15
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
16
+
17
+ var base64url__default = /*#__PURE__*/_interopDefaultLegacy(base64url);
18
+
19
+ var DIDCOMM_TYPE_BASIC = 'https://didcomm.org/basicmessage/1.0/message';
20
+ var DIDCOMM_TYPE_ISSUE_DIRECT = 'https://didcomm.org/issue-credential/2.0/issue-credential';
21
+ var DIDCOMM_TYPE_REQUEST_ISSUE_WITH_DATA = 'https://didcomm.org/issue-credential/2.0/offer-credential';
22
+ var userFriendlyTypeMap = {
23
+ issue: DIDCOMM_TYPE_ISSUE_DIRECT,
24
+ 'request-data': DIDCOMM_TYPE_REQUEST_ISSUE_WITH_DATA
25
+ };
26
+ var cipher = new minimalCipher.Cipher({
27
+ version: 'recommended'
28
+ });
29
+ function decodeBase64Url(string) {
30
+ var buffer = base64url__default["default"].toBuffer(string);
31
+ return new Uint8Array(buffer.buffer, buffer.offset, buffer.length);
32
+ }
33
+ function potentialToArray(a) {
34
+ return a ? Array.isArray(a) ? a : [a] : [];
35
+ }
36
+ function getKeydocFromDID(_x) {
37
+ return _getKeydocFromDID.apply(this, arguments);
38
+ }
39
+ function _getKeydocFromDID() {
40
+ _getKeydocFromDID = _rollupPluginBabelHelpers._asyncToGenerator( /*#__PURE__*/_rollupPluginBabelHelpers._regeneratorRuntime().mark(function _callee(didUrl) {
41
+ var didDocument, possibleKeys, keyDoc;
42
+ return _rollupPluginBabelHelpers._regeneratorRuntime().wrap(function _callee$(_context) {
43
+ while (1) switch (_context.prev = _context.next) {
44
+ case 0:
45
+ _context.next = 2;
46
+ return did_dids.resolveDID(didUrl);
47
+ case 2:
48
+ didDocument = _context.sent;
49
+ possibleKeys = [].concat(_rollupPluginBabelHelpers._toConsumableArray(potentialToArray(didDocument.verificationMethod)), _rollupPluginBabelHelpers._toConsumableArray(potentialToArray(didDocument.keyAgreement)), _rollupPluginBabelHelpers._toConsumableArray(potentialToArray(didDocument.publicKey)));
50
+ keyDoc = possibleKeys.filter(function (key) {
51
+ return key.id === didUrl;
52
+ })[0];
53
+ return _context.abrupt("return", keyDoc);
54
+ case 6:
55
+ case "end":
56
+ return _context.stop();
57
+ }
58
+ }, _callee);
59
+ }));
60
+ return _getKeydocFromDID.apply(this, arguments);
61
+ }
62
+ function isValidDID(did) {
63
+ var didSplit = did.split(':');
64
+ return didSplit[0] === 'did' && didSplit.length > 2;
65
+ }
66
+ function defaultKaKResolver(_x2) {
67
+ return _defaultKaKResolver.apply(this, arguments);
68
+ }
69
+ function _defaultKaKResolver() {
70
+ _defaultKaKResolver = _rollupPluginBabelHelpers._asyncToGenerator( /*#__PURE__*/_rollupPluginBabelHelpers._regeneratorRuntime().mark(function _callee2(keyId) {
71
+ var keyIdStr, keyDoc;
72
+ return _rollupPluginBabelHelpers._regeneratorRuntime().wrap(function _callee2$(_context2) {
73
+ while (1) switch (_context2.prev = _context2.next) {
74
+ case 0:
75
+ keyIdStr = keyId.id || keyId;
76
+ _context2.next = 3;
77
+ return getAgreementKeydocFromDID(keyIdStr);
78
+ case 3:
79
+ keyDoc = _context2.sent;
80
+ if (keyDoc) {
81
+ _context2.next = 6;
82
+ break;
83
+ }
84
+ throw new Error("Cannot find key document with ID: ".concat(keyIdStr));
85
+ case 6:
86
+ _context2.next = 8;
87
+ return getKaKInstanceFromDocument(keyDoc);
88
+ case 8:
89
+ return _context2.abrupt("return", _context2.sent);
90
+ case 9:
91
+ case "end":
92
+ return _context2.stop();
93
+ }
94
+ }, _callee2);
95
+ }));
96
+ return _defaultKaKResolver.apply(this, arguments);
97
+ }
98
+ function defaultVerificationKeyResolver(_x3) {
99
+ return _defaultVerificationKeyResolver.apply(this, arguments);
100
+ }
101
+ function _defaultVerificationKeyResolver() {
102
+ _defaultVerificationKeyResolver = _rollupPluginBabelHelpers._asyncToGenerator( /*#__PURE__*/_rollupPluginBabelHelpers._regeneratorRuntime().mark(function _callee3(keyId) {
103
+ var keyIdStr, keyDoc;
104
+ return _rollupPluginBabelHelpers._regeneratorRuntime().wrap(function _callee3$(_context3) {
105
+ while (1) switch (_context3.prev = _context3.next) {
106
+ case 0:
107
+ keyIdStr = keyId.id || keyId;
108
+ _context3.next = 3;
109
+ return getKeydocFromDID(keyIdStr);
110
+ case 3:
111
+ keyDoc = _context3.sent;
112
+ if (keyDoc) {
113
+ _context3.next = 6;
114
+ break;
115
+ }
116
+ throw new Error("Cannot find key document with ID: ".concat(keyIdStr));
117
+ case 6:
118
+ _context3.next = 8;
119
+ return ed25519VerificationKey2020.Ed25519VerificationKey2020.from(_rollupPluginBabelHelpers._objectSpread2(_rollupPluginBabelHelpers._objectSpread2({}, keyDoc), {}, {
120
+ keyPair: keyDoc
121
+ }));
122
+ case 8:
123
+ return _context3.abrupt("return", _context3.sent);
124
+ case 9:
125
+ case "end":
126
+ return _context3.stop();
127
+ }
128
+ }, _callee3);
129
+ }));
130
+ return _defaultVerificationKeyResolver.apply(this, arguments);
131
+ }
132
+ function didcommCreateSignedJWT(_x4, _x5) {
133
+ return _didcommCreateSignedJWT.apply(this, arguments);
134
+ }
135
+ function _didcommCreateSignedJWT() {
136
+ _didcommCreateSignedJWT = _rollupPluginBabelHelpers._asyncToGenerator( /*#__PURE__*/_rollupPluginBabelHelpers._regeneratorRuntime().mark(function _callee4(payload, privateKeyDoc) {
137
+ var generateJWK,
138
+ privateKey,
139
+ _privateKey$signer,
140
+ sign,
141
+ header,
142
+ sub_jwk,
143
+ newPayload,
144
+ headerBase64URL,
145
+ payloadBase64URL,
146
+ headerAndPayloadBase64URL,
147
+ signPayload,
148
+ signature,
149
+ _args4 = arguments;
150
+ return _rollupPluginBabelHelpers._regeneratorRuntime().wrap(function _callee4$(_context4) {
151
+ while (1) switch (_context4.prev = _context4.next) {
152
+ case 0:
153
+ generateJWK = _args4.length > 2 && _args4[2] !== undefined ? _args4[2] : false;
154
+ _context4.next = 3;
155
+ return ed25519VerificationKey2020.Ed25519VerificationKey2020.from(_rollupPluginBabelHelpers._objectSpread2(_rollupPluginBabelHelpers._objectSpread2({}, privateKeyDoc), {}, {
156
+ keyPair: privateKeyDoc
157
+ }));
158
+ case 3:
159
+ privateKey = _context4.sent;
160
+ _privateKey$signer = privateKey.signer(), sign = _privateKey$signer.sign;
161
+ header = {
162
+ alg: 'EdDSA',
163
+ kid: privateKeyDoc.id
164
+ };
165
+ sub_jwk = generateJWK ? privateKey.toJwk() : undefined;
166
+ newPayload = _rollupPluginBabelHelpers._objectSpread2(_rollupPluginBabelHelpers._objectSpread2({}, payload), sub_jwk ? {
167
+ sub_jwk: sub_jwk
168
+ } : {});
169
+ headerBase64URL = base64url__default["default"](JSON.stringify(header));
170
+ payloadBase64URL = base64url__default["default"](JSON.stringify(newPayload));
171
+ headerAndPayloadBase64URL = "".concat(headerBase64URL, ".").concat(payloadBase64URL);
172
+ signPayload = Buffer.from(headerAndPayloadBase64URL);
173
+ _context4.next = 14;
174
+ return sign({
175
+ data: signPayload
176
+ });
177
+ case 14:
178
+ signature = _context4.sent;
179
+ return _context4.abrupt("return", "".concat(headerAndPayloadBase64URL, ".").concat(base64url__default["default"].encode(signature)));
180
+ case 16:
181
+ case "end":
182
+ return _context4.stop();
183
+ }
184
+ }, _callee4);
185
+ }));
186
+ return _didcommCreateSignedJWT.apply(this, arguments);
187
+ }
188
+ function didcommDecodeSignedJWT(_x6, _x7) {
189
+ return _didcommDecodeSignedJWT.apply(this, arguments);
190
+ }
191
+ function _didcommDecodeSignedJWT() {
192
+ _didcommDecodeSignedJWT = _rollupPluginBabelHelpers._asyncToGenerator( /*#__PURE__*/_rollupPluginBabelHelpers._regeneratorRuntime().mark(function _callee5(jwt, keyResolver) {
193
+ var resolveKey, jwtSplit, header, alg, keyId, publicKey, _publicKey$verifier, verify, signature, signPayload, isVerified, body;
194
+ return _rollupPluginBabelHelpers._regeneratorRuntime().wrap(function _callee5$(_context5) {
195
+ while (1) switch (_context5.prev = _context5.next) {
196
+ case 0:
197
+ resolveKey = keyResolver || defaultVerificationKeyResolver;
198
+ jwtSplit = jwt.split('.').map(function (s) {
199
+ return s.trim();
200
+ });
201
+ if (!(jwtSplit.length !== 3)) {
202
+ _context5.next = 4;
203
+ break;
204
+ }
205
+ throw new Error("Malformed JWT, got split length: ".concat(jwtSplit.length));
206
+ case 4:
207
+ header = JSON.parse(base64url__default["default"].decode(jwtSplit[0]));
208
+ alg = header.alg, keyId = header.kid;
209
+ if (!(!alg || !keyId)) {
210
+ _context5.next = 8;
211
+ break;
212
+ }
213
+ throw new Error('Malformed JWT header, expected alg and kid');
214
+ case 8:
215
+ _context5.next = 10;
216
+ return resolveKey(keyId);
217
+ case 10:
218
+ publicKey = _context5.sent;
219
+ _publicKey$verifier = publicKey.verifier(), verify = _publicKey$verifier.verify;
220
+ signature = decodeBase64Url(jwtSplit[2]);
221
+ signPayload = Buffer.from("".concat(jwtSplit[0], ".").concat(jwtSplit[1]));
222
+ _context5.next = 16;
223
+ return verify({
224
+ data: signPayload,
225
+ signature: signature
226
+ });
227
+ case 16:
228
+ isVerified = _context5.sent;
229
+ if (isVerified) {
230
+ _context5.next = 19;
231
+ break;
232
+ }
233
+ throw new Error('JWT cannot be verified');
234
+ case 19:
235
+ body = JSON.parse(base64url__default["default"].decode(jwtSplit[1]));
236
+ return _context5.abrupt("return", body);
237
+ case 21:
238
+ case "end":
239
+ return _context5.stop();
240
+ }
241
+ }, _callee5);
242
+ }));
243
+ return _didcommDecodeSignedJWT.apply(this, arguments);
244
+ }
245
+ function didcommEncrypt(_x8, _x9, _x10, _x11) {
246
+ return _didcommEncrypt.apply(this, arguments);
247
+ }
248
+ function _didcommEncrypt() {
249
+ _didcommEncrypt = _rollupPluginBabelHelpers._asyncToGenerator( /*#__PURE__*/_rollupPluginBabelHelpers._regeneratorRuntime().mark(function _callee6(obj, recipients, keyResolver, senderKey) {
250
+ var keyAgreementKey, encryptedJWE;
251
+ return _rollupPluginBabelHelpers._regeneratorRuntime().wrap(function _callee6$(_context6) {
252
+ while (1) switch (_context6.prev = _context6.next) {
253
+ case 0:
254
+ // If ed25519 is supplied, derive X25519 from it
255
+ keyAgreementKey = senderKey;
256
+ if (!(senderKey.type !== 'X25519KeyAgreementKey2020')) {
257
+ _context6.next = 5;
258
+ break;
259
+ }
260
+ _context6.next = 4;
261
+ return getDerivedAgreementKey(senderKey);
262
+ case 4:
263
+ keyAgreementKey = _context6.sent;
264
+ case 5:
265
+ _context6.next = 7;
266
+ return cipher.encryptObject({
267
+ obj: obj,
268
+ recipients: recipients,
269
+ keyResolver: keyResolver || defaultKaKResolver,
270
+ keyAgreementKey: keyAgreementKey
271
+ });
272
+ case 7:
273
+ encryptedJWE = _context6.sent;
274
+ return _context6.abrupt("return", _rollupPluginBabelHelpers._objectSpread2({
275
+ typ: 'application/didcomm-encrypted+json'
276
+ }, encryptedJWE));
277
+ case 9:
278
+ case "end":
279
+ return _context6.stop();
280
+ }
281
+ }, _callee6);
282
+ }));
283
+ return _didcommEncrypt.apply(this, arguments);
284
+ }
285
+ function didcommDecrypt(_x12, _x13, _x14) {
286
+ return _didcommDecrypt.apply(this, arguments);
287
+ }
288
+ function _didcommDecrypt() {
289
+ _didcommDecrypt = _rollupPluginBabelHelpers._asyncToGenerator( /*#__PURE__*/_rollupPluginBabelHelpers._regeneratorRuntime().mark(function _callee7(jwe, keyAgreementKey, keyResolver) {
290
+ return _rollupPluginBabelHelpers._regeneratorRuntime().wrap(function _callee7$(_context7) {
291
+ while (1) switch (_context7.prev = _context7.next) {
292
+ case 0:
293
+ return _context7.abrupt("return", cipher.decryptObject({
294
+ jwe: jwe,
295
+ keyAgreementKey: keyAgreementKey,
296
+ keyResolver: keyResolver || defaultKaKResolver
297
+ }));
298
+ case 1:
299
+ case "end":
300
+ return _context7.stop();
301
+ }
302
+ }, _callee7);
303
+ }));
304
+ return _didcommDecrypt.apply(this, arguments);
305
+ }
306
+ function didcommSendMessage(_x15, _x16) {
307
+ return _didcommSendMessage.apply(this, arguments);
308
+ }
309
+ function _didcommSendMessage() {
310
+ _didcommSendMessage = _rollupPluginBabelHelpers._asyncToGenerator( /*#__PURE__*/_rollupPluginBabelHelpers._regeneratorRuntime().mark(function _callee8(to, message) {
311
+ return _rollupPluginBabelHelpers._regeneratorRuntime().wrap(function _callee8$(_context8) {
312
+ while (1) switch (_context8.prev = _context8.next) {
313
+ case 0:
314
+ if (!(!message.typ || !message.typ.startsWith('application/didcomm'))) {
315
+ _context8.next = 2;
316
+ break;
317
+ }
318
+ throw new Error('Only DIDComm messages can be sent with this service');
319
+ case 2:
320
+ case "end":
321
+ return _context8.stop();
322
+ }
323
+ }, _callee8);
324
+ }));
325
+ return _didcommSendMessage.apply(this, arguments);
326
+ }
327
+ function isValidKeyAgreementDoc(keyDoc) {
328
+ return keyDoc.type === 'X25519KeyAgreementKey2019' || keyDoc.type === 'X25519KeyAgreementKey2020';
329
+ }
330
+ function isDerivableKey(keyDoc) {
331
+ return keyDoc.type === 'Ed25519VerificationKey2018' || keyDoc.type === 'Ed25519VerificationKey2019' || keyDoc.type === 'Ed25519VerificationKey2020';
332
+ }
333
+ function getAgreementKeydocFromDID(_x17) {
334
+ return _getAgreementKeydocFromDID.apply(this, arguments);
335
+ }
336
+ function _getAgreementKeydocFromDID() {
337
+ _getAgreementKeydocFromDID = _rollupPluginBabelHelpers._asyncToGenerator( /*#__PURE__*/_rollupPluginBabelHelpers._regeneratorRuntime().mark(function _callee9(did) {
338
+ var isDIDUrl, didDocument, keyAgreements, foundDoc, firstKeyAgreement, publicKeys, derivableKey;
339
+ return _rollupPluginBabelHelpers._regeneratorRuntime().wrap(function _callee9$(_context9) {
340
+ while (1) switch (_context9.prev = _context9.next) {
341
+ case 0:
342
+ if (did) {
343
+ _context9.next = 2;
344
+ break;
345
+ }
346
+ return _context9.abrupt("return", undefined);
347
+ case 2:
348
+ // Resolve actual DID document and get key agreement keys
349
+ isDIDUrl = did.indexOf('#') !== -1;
350
+ _context9.next = 5;
351
+ return did_dids.resolveDID(did);
352
+ case 5:
353
+ didDocument = _context9.sent;
354
+ keyAgreements = didDocument.keyAgreement ? Array.isArray(didDocument.keyAgreement) ? didDocument.keyAgreement : [didDocument.keyAgreement] : []; // User supplied full URL, use that if possible
355
+ // if not it may still require derivation to be valid (such as dock DIDs)
356
+ if (!isDIDUrl) {
357
+ _context9.next = 11;
358
+ break;
359
+ }
360
+ foundDoc = keyAgreements.filter(function (keyDoc) {
361
+ return keyDoc.id === did && isValidKeyAgreementDoc(keyDoc);
362
+ })[0];
363
+ if (!foundDoc) {
364
+ _context9.next = 11;
365
+ break;
366
+ }
367
+ return _context9.abrupt("return", foundDoc);
368
+ case 11:
369
+ // User supplied DID, find first supported keyagreement document
370
+ firstKeyAgreement = keyAgreements.filter(isValidKeyAgreementDoc)[0];
371
+ if (!firstKeyAgreement) {
372
+ _context9.next = 14;
373
+ break;
374
+ }
375
+ return _context9.abrupt("return", firstKeyAgreement);
376
+ case 14:
377
+ // No valid key agreement found on resolution, lets derive one from a ED25519 key if we can
378
+ publicKeys = didDocument.publicKey ? Array.isArray(didDocument.publicKey) ? didDocument.publicKey : [didDocument.publicKey] : []; // See if DID document has any derivable keys
379
+ derivableKey = publicKeys.filter(isDerivableKey)[0];
380
+ if (!derivableKey) {
381
+ _context9.next = 18;
382
+ break;
383
+ }
384
+ return _context9.abrupt("return", getDerivedAgreementKey(derivableKey));
385
+ case 18:
386
+ throw new Error("Unable to find or derive X25519 key agreement for DID: ".concat(did));
387
+ case 19:
388
+ case "end":
389
+ return _context9.stop();
390
+ }
391
+ }, _callee9);
392
+ }));
393
+ return _getAgreementKeydocFromDID.apply(this, arguments);
394
+ }
395
+ function getDerivedAgreementKey(_x18) {
396
+ return _getDerivedAgreementKey.apply(this, arguments);
397
+ }
398
+ function _getDerivedAgreementKey() {
399
+ _getDerivedAgreementKey = _rollupPluginBabelHelpers._asyncToGenerator( /*#__PURE__*/_rollupPluginBabelHelpers._regeneratorRuntime().mark(function _callee10(derivableKey) {
400
+ var ed2020VerificationKey, derivedKeyAgreement;
401
+ return _rollupPluginBabelHelpers._regeneratorRuntime().wrap(function _callee10$(_context10) {
402
+ while (1) switch (_context10.prev = _context10.next) {
403
+ case 0:
404
+ if (isDerivableKey(derivableKey)) {
405
+ _context10.next = 2;
406
+ break;
407
+ }
408
+ throw new Error("Cannot derive X25519 KAK from type: ".concat(derivableKey.type));
409
+ case 2:
410
+ if (!derivableKey.publicKeyMultibase) {
411
+ derivableKey.publicKeyMultibase = derivableKey.publicKeyBase58;
412
+ }
413
+
414
+ // Convert derivable key into latest 2020 format
415
+ _context10.next = 5;
416
+ return ed25519VerificationKey2020.Ed25519VerificationKey2020.from(_rollupPluginBabelHelpers._objectSpread2({
417
+ keyPair: derivableKey
418
+ }, derivableKey));
419
+ case 5:
420
+ ed2020VerificationKey = _context10.sent;
421
+ // Convert ed25519 2020 verification key into a key agreement key
422
+ derivedKeyAgreement = x25519KeyAgreementKey2020.X25519KeyAgreementKey2020.fromEd25519VerificationKey2020(_rollupPluginBabelHelpers._objectSpread2({
423
+ keyPair: ed2020VerificationKey
424
+ }, ed2020VerificationKey));
425
+ return _context10.abrupt("return", derivedKeyAgreement);
426
+ case 8:
427
+ case "end":
428
+ return _context10.stop();
429
+ }
430
+ }, _callee10);
431
+ }));
432
+ return _getDerivedAgreementKey.apply(this, arguments);
433
+ }
434
+ function getKaKInstanceFromDocument(_x19) {
435
+ return _getKaKInstanceFromDocument.apply(this, arguments);
436
+ }
437
+ function _getKaKInstanceFromDocument() {
438
+ _getKaKInstanceFromDocument = _rollupPluginBabelHelpers._asyncToGenerator( /*#__PURE__*/_rollupPluginBabelHelpers._regeneratorRuntime().mark(function _callee11(keyDoc) {
439
+ return _rollupPluginBabelHelpers._regeneratorRuntime().wrap(function _callee11$(_context11) {
440
+ while (1) switch (_context11.prev = _context11.next) {
441
+ case 0:
442
+ if (isValidKeyAgreementDoc(keyDoc)) {
443
+ _context11.next = 2;
444
+ break;
445
+ }
446
+ throw new Error("Invalid key document type for key agreement key: ".concat(keyDoc.type));
447
+ case 2:
448
+ _context11.next = 4;
449
+ return x25519KeyAgreementKey2020.X25519KeyAgreementKey2020.from(keyDoc);
450
+ case 4:
451
+ return _context11.abrupt("return", _context11.sent);
452
+ case 5:
453
+ case "end":
454
+ return _context11.stop();
455
+ }
456
+ }, _callee11);
457
+ }));
458
+ return _getKaKInstanceFromDocument.apply(this, arguments);
459
+ }
460
+ function getJWERecipientFromDocument(keyDoc, algorithm) {
461
+ return {
462
+ header: {
463
+ kid: keyDoc.id,
464
+ alg: algorithm || 'ECDH-1PU+A256KW'
465
+ }
466
+ };
467
+ }
468
+
469
+ // Defined here: https://identity.foundation/didcomm-messaging/spec/#plaintext-message-structure
470
+ function formatPayloadToDIDComm(to, msgType, from, body, replyUrl, replyTo) {
471
+ var msg = {
472
+ id: uuid.v1(),
473
+ type: userFriendlyTypeMap[msgType] || msgType || DIDCOMM_TYPE_BASIC,
474
+ created_time: Math.floor(Date.now() / 1000),
475
+ // Unix timestamp, seconds
476
+ from: from,
477
+ body: body
478
+ };
479
+ if (to) {
480
+ msg.to = to;
481
+ }
482
+ if (replyUrl) {
483
+ msg.reply_url = replyUrl;
484
+ }
485
+ if (replyTo) {
486
+ msg.reply_to = [replyTo];
487
+ }
488
+ return msg;
489
+ }
490
+ function didcommCreateEncrypted(_x20) {
491
+ return _didcommCreateEncrypted.apply(this, arguments);
492
+ }
493
+ function _didcommCreateEncrypted() {
494
+ _didcommCreateEncrypted = _rollupPluginBabelHelpers._asyncToGenerator( /*#__PURE__*/_rollupPluginBabelHelpers._regeneratorRuntime().mark(function _callee13(_ref) {
495
+ var senderDid, _ref$recipientDids, recipientDids, payload, type, keyAgreementKey, algorithm, recipientKeyDocuments, recipients, keyResolver, didcommMessage, jweDoc;
496
+ return _rollupPluginBabelHelpers._regeneratorRuntime().wrap(function _callee13$(_context13) {
497
+ while (1) switch (_context13.prev = _context13.next) {
498
+ case 0:
499
+ senderDid = _ref.senderDid, _ref$recipientDids = _ref.recipientDids, recipientDids = _ref$recipientDids === void 0 ? [] : _ref$recipientDids, payload = _ref.payload, type = _ref.type, keyAgreementKey = _ref.keyAgreementKey, algorithm = _ref.algorithm;
500
+ if (payload) {
501
+ _context13.next = 3;
502
+ break;
503
+ }
504
+ throw new Error('Requires payload to create encrypted didcomm message');
505
+ case 3:
506
+ if (!(recipientDids.length === 0)) {
507
+ _context13.next = 5;
508
+ break;
509
+ }
510
+ throw new Error('Must supply atleast 1 recipient DID');
511
+ case 5:
512
+ if (isValidDID(senderDid)) {
513
+ _context13.next = 7;
514
+ break;
515
+ }
516
+ throw new Error('Sender DID must be a valid DID');
517
+ case 7:
518
+ if (recipientDids.every(isValidDID)) {
519
+ _context13.next = 9;
520
+ break;
521
+ }
522
+ throw new Error('Recipient DID is invalid');
523
+ case 9:
524
+ _context13.next = 11;
525
+ return Promise.all(recipientDids.map(getAgreementKeydocFromDID));
526
+ case 11:
527
+ recipientKeyDocuments = _context13.sent;
528
+ recipients = recipientKeyDocuments.map(function (keyDoc) {
529
+ return getJWERecipientFromDocument(keyDoc, algorithm);
530
+ });
531
+ keyResolver = /*#__PURE__*/function () {
532
+ var _ref2 = _rollupPluginBabelHelpers._asyncToGenerator( /*#__PURE__*/_rollupPluginBabelHelpers._regeneratorRuntime().mark(function _callee12(keyId) {
533
+ var keyIdStr, keyDoc, result;
534
+ return _rollupPluginBabelHelpers._regeneratorRuntime().wrap(function _callee12$(_context12) {
535
+ while (1) switch (_context12.prev = _context12.next) {
536
+ case 0:
537
+ keyIdStr = keyId.id || keyId;
538
+ keyDoc = recipientKeyDocuments.filter(function (k) {
539
+ return k.id === keyIdStr;
540
+ })[0];
541
+ if (keyDoc) {
542
+ _context12.next = 4;
543
+ break;
544
+ }
545
+ throw new Error("Cannot find key document with ID: ".concat(keyIdStr));
546
+ case 4:
547
+ _context12.next = 6;
548
+ return getKaKInstanceFromDocument(keyDoc);
549
+ case 6:
550
+ result = _context12.sent;
551
+ return _context12.abrupt("return", result);
552
+ case 8:
553
+ case "end":
554
+ return _context12.stop();
555
+ }
556
+ }, _callee12);
557
+ }));
558
+ return function keyResolver(_x21) {
559
+ return _ref2.apply(this, arguments);
560
+ };
561
+ }();
562
+ didcommMessage = formatPayloadToDIDComm(recipientDids, type, senderDid, payload);
563
+ _context13.prev = 15;
564
+ _context13.next = 18;
565
+ return didcommEncrypt(didcommMessage, recipients, keyResolver, keyAgreementKey);
566
+ case 18:
567
+ jweDoc = _context13.sent;
568
+ return _context13.abrupt("return", jweDoc);
569
+ case 22:
570
+ _context13.prev = 22;
571
+ _context13.t0 = _context13["catch"](15);
572
+ console.error(_context13.t0);
573
+ throw new Error('Error encrypting message');
574
+ case 26:
575
+ case "end":
576
+ return _context13.stop();
577
+ }
578
+ }, _callee13, null, [[15, 22]]);
579
+ }));
580
+ return _didcommCreateEncrypted.apply(this, arguments);
581
+ }
582
+
583
+ exports.DIDCOMM_TYPE_BASIC = DIDCOMM_TYPE_BASIC;
584
+ exports.DIDCOMM_TYPE_ISSUE_DIRECT = DIDCOMM_TYPE_ISSUE_DIRECT;
585
+ exports.DIDCOMM_TYPE_REQUEST_ISSUE_WITH_DATA = DIDCOMM_TYPE_REQUEST_ISSUE_WITH_DATA;
586
+ exports.defaultKaKResolver = defaultKaKResolver;
587
+ exports.defaultVerificationKeyResolver = defaultVerificationKeyResolver;
588
+ exports.didcommCreateEncrypted = didcommCreateEncrypted;
589
+ exports.didcommCreateSignedJWT = didcommCreateSignedJWT;
590
+ exports.didcommDecodeSignedJWT = didcommDecodeSignedJWT;
591
+ exports.didcommDecrypt = didcommDecrypt;
592
+ exports.didcommEncrypt = didcommEncrypt;
593
+ exports.didcommSendMessage = didcommSendMessage;
594
+ exports.formatPayloadToDIDComm = formatPayloadToDIDComm;
595
+ exports.getAgreementKeydocFromDID = getAgreementKeydocFromDID;
596
+ exports.getDerivedAgreementKey = getDerivedAgreementKey;
597
+ exports.getJWERecipientFromDocument = getJWERecipientFromDocument;
598
+ exports.getKaKInstanceFromDocument = getKaKInstanceFromDocument;
599
+ exports.getKeydocFromDID = getKeydocFromDID;
600
+ exports.isDerivableKey = isDerivableKey;
601
+ exports.isValidDID = isValidDID;
602
+ exports.isValidKeyAgreementDoc = isValidKeyAgreementDoc;
603
+ exports.userFriendlyTypeMap = userFriendlyTypeMap;