@docknetwork/wallet-sdk-relay-service 0.4.23 → 1.4.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/lib/did/dids.js CHANGED
@@ -4,7 +4,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var _rollupPluginBabelHelpers = require('../_rollupPluginBabelHelpers-4923c894.js');
6
6
  var did = require('@docknetwork/sdk/utils/did');
7
- var service = require('@docknetwork/wallet-sdk-wasm/src/services/dock/service');
7
+ var service = require('@docknetwork/wallet-sdk-wasm/lib/services/dock/service');
8
8
 
9
9
  function resolveDID(_x) {
10
10
  return _resolveDID.apply(this, arguments);
package/lib/did/dids.mjs CHANGED
@@ -1,6 +1,6 @@
1
1
  import { _ as _asyncToGenerator, a as _regeneratorRuntime } from '../_rollupPluginBabelHelpers-78739aa5.js';
2
2
  import { hexDIDToQualified } from '@docknetwork/sdk/utils/did';
3
- import { dockService } from '@docknetwork/wallet-sdk-wasm/src/services/dock/service';
3
+ import { dockService } from '@docknetwork/wallet-sdk-wasm/lib/services/dock/service';
4
4
 
5
5
  function resolveDID(_x) {
6
6
  return _resolveDID.apply(this, arguments);
package/lib/didcomm.js CHANGED
@@ -8,13 +8,33 @@ var ed25519VerificationKey2020 = require('@digitalbazaar/ed25519-verification-ke
8
8
  var minimalCipher = require('@docknetwork/minimal-cipher');
9
9
  var uuid = require('uuid');
10
10
  var base64url = require('base64url');
11
+ var bs58 = require('base58-universal');
11
12
  var did_dids = require('./did/dids.js');
12
13
  require('@docknetwork/sdk/utils/did');
13
- require('@docknetwork/wallet-sdk-wasm/src/services/dock/service');
14
+ require('@docknetwork/wallet-sdk-wasm/lib/services/dock/service');
14
15
 
15
16
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
16
17
 
18
+ function _interopNamespace(e) {
19
+ if (e && e.__esModule) return e;
20
+ var n = Object.create(null);
21
+ if (e) {
22
+ Object.keys(e).forEach(function (k) {
23
+ if (k !== 'default') {
24
+ var d = Object.getOwnPropertyDescriptor(e, k);
25
+ Object.defineProperty(n, k, d.get ? d : {
26
+ enumerable: true,
27
+ get: function () { return e[k]; }
28
+ });
29
+ }
30
+ });
31
+ }
32
+ n["default"] = e;
33
+ return Object.freeze(n);
34
+ }
35
+
17
36
  var base64url__default = /*#__PURE__*/_interopDefaultLegacy(base64url);
37
+ var bs58__namespace = /*#__PURE__*/_interopNamespace(bs58);
18
38
 
19
39
  var DIDCOMM_TYPE_BASIC = 'https://didcomm.org/basicmessage/1.0/message';
20
40
  var DIDCOMM_TYPE_ISSUE_DIRECT = 'https://didcomm.org/issue-credential/2.0/issue-credential';
@@ -330,6 +350,9 @@ function isValidKeyAgreementDoc(keyDoc) {
330
350
  function isDerivableKey(keyDoc) {
331
351
  return keyDoc.type === 'Ed25519VerificationKey2018' || keyDoc.type === 'Ed25519VerificationKey2019' || keyDoc.type === 'Ed25519VerificationKey2020';
332
352
  }
353
+ function getDIDKeydocsFromDIDDocument(didDocument) {
354
+ return [].concat(_rollupPluginBabelHelpers._toConsumableArray(potentialToArray(didDocument.verificationMethod)), _rollupPluginBabelHelpers._toConsumableArray(potentialToArray(didDocument.keyAgreement)), _rollupPluginBabelHelpers._toConsumableArray(potentialToArray(didDocument.publicKey)));
355
+ }
333
356
  function getAgreementKeydocFromDID(_x17) {
334
357
  return _getAgreementKeydocFromDID.apply(this, arguments);
335
358
  }
@@ -345,46 +368,52 @@ function _getAgreementKeydocFromDID() {
345
368
  }
346
369
  return _context9.abrupt("return", undefined);
347
370
  case 2:
371
+ if (!did.startsWith('did:polygon')) {
372
+ _context9.next = 4;
373
+ break;
374
+ }
375
+ throw new Error('PolygonID DIDs cannot be used for DIDComm purposes');
376
+ case 4:
348
377
  // Resolve actual DID document and get key agreement keys
349
378
  isDIDUrl = did.indexOf('#') !== -1;
350
- _context9.next = 5;
379
+ _context9.next = 7;
351
380
  return did_dids.resolveDID(did);
352
- case 5:
381
+ case 7:
353
382
  didDocument = _context9.sent;
354
383
  keyAgreements = didDocument.keyAgreement ? Array.isArray(didDocument.keyAgreement) ? didDocument.keyAgreement : [didDocument.keyAgreement] : []; // User supplied full URL, use that if possible
355
384
  // if not it may still require derivation to be valid (such as dock DIDs)
356
385
  if (!isDIDUrl) {
357
- _context9.next = 11;
386
+ _context9.next = 13;
358
387
  break;
359
388
  }
360
389
  foundDoc = keyAgreements.filter(function (keyDoc) {
361
390
  return keyDoc.id === did && isValidKeyAgreementDoc(keyDoc);
362
391
  })[0];
363
392
  if (!foundDoc) {
364
- _context9.next = 11;
393
+ _context9.next = 13;
365
394
  break;
366
395
  }
367
396
  return _context9.abrupt("return", foundDoc);
368
- case 11:
397
+ case 13:
369
398
  // User supplied DID, find first supported keyagreement document
370
399
  firstKeyAgreement = keyAgreements.filter(isValidKeyAgreementDoc)[0];
371
400
  if (!firstKeyAgreement) {
372
- _context9.next = 14;
401
+ _context9.next = 16;
373
402
  break;
374
403
  }
375
404
  return _context9.abrupt("return", firstKeyAgreement);
376
- case 14:
405
+ case 16:
377
406
  // 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
407
+ publicKeys = getDIDKeydocsFromDIDDocument(didDocument); // See if DID document has any derivable keys
379
408
  derivableKey = publicKeys.filter(isDerivableKey)[0];
380
409
  if (!derivableKey) {
381
- _context9.next = 18;
410
+ _context9.next = 20;
382
411
  break;
383
412
  }
384
413
  return _context9.abrupt("return", getDerivedAgreementKey(derivableKey));
385
- case 18:
414
+ case 20:
386
415
  throw new Error("Unable to find or derive X25519 key agreement for DID: ".concat(did));
387
- case 19:
416
+ case 21:
388
417
  case "end":
389
418
  return _context9.stop();
390
419
  }
@@ -392,12 +421,21 @@ function _getAgreementKeydocFromDID() {
392
421
  }));
393
422
  return _getAgreementKeydocFromDID.apply(this, arguments);
394
423
  }
424
+ var MULTIBASE_BASE58BTC_HEADER = 'z';
425
+ var MULTICODEC_ED25519_PRIV_HEADER = new Uint8Array([0x80, 0x26]);
426
+ var MULTICODEC_ED25519_PUB_HEADER = new Uint8Array([0xed, 0x01]);
427
+ function encodeMbKey(header, key) {
428
+ var mbKey = new Uint8Array(header.length + key.length);
429
+ mbKey.set(header);
430
+ mbKey.set(key, header.length);
431
+ return MULTIBASE_BASE58BTC_HEADER + bs58__namespace.encode(mbKey);
432
+ }
395
433
  function getDerivedAgreementKey(_x18) {
396
434
  return _getDerivedAgreementKey.apply(this, arguments);
397
435
  }
398
436
  function _getDerivedAgreementKey() {
399
437
  _getDerivedAgreementKey = _rollupPluginBabelHelpers._asyncToGenerator( /*#__PURE__*/_rollupPluginBabelHelpers._regeneratorRuntime().mark(function _callee10(derivableKey) {
400
- var ed2020VerificationKey, derivedKeyAgreement;
438
+ var publicKeyMultibase, privateKeyMultibase, derivedKeyAgreement;
401
439
  return _rollupPluginBabelHelpers._regeneratorRuntime().wrap(function _callee10$(_context10) {
402
440
  while (1) switch (_context10.prev = _context10.next) {
403
441
  case 0:
@@ -407,23 +445,17 @@ function _getDerivedAgreementKey() {
407
445
  }
408
446
  throw new Error("Cannot derive X25519 KAK from type: ".concat(derivableKey.type));
409
447
  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));
448
+ publicKeyMultibase = derivableKey.publicKeyBase58 ? encodeMbKey(MULTICODEC_ED25519_PUB_HEADER, bs58__namespace.decode(derivableKey.publicKeyBase58)) : derivableKey.publicKeyMultibase;
449
+ privateKeyMultibase = (derivableKey.privateKeyBase58 ? encodeMbKey(MULTICODEC_ED25519_PRIV_HEADER, bs58__namespace.decode(derivableKey.privateKeyBase58)) : undefined) || derivableKey.privateKeyMultibase; // Convert ed25519 2020 verification key into a key agreement key
450
+ derivedKeyAgreement = x25519KeyAgreementKey2020.X25519KeyAgreementKey2020.fromEd25519VerificationKey2020({
451
+ keyPair: {
452
+ publicKeyMultibase: publicKeyMultibase,
453
+ privateKeyMultibase: privateKeyMultibase,
454
+ controller: derivableKey.controller
455
+ }
456
+ });
425
457
  return _context10.abrupt("return", derivedKeyAgreement);
426
- case 8:
458
+ case 6:
427
459
  case "end":
428
460
  return _context10.stop();
429
461
  }
@@ -583,6 +615,9 @@ function _didcommCreateEncrypted() {
583
615
  exports.DIDCOMM_TYPE_BASIC = DIDCOMM_TYPE_BASIC;
584
616
  exports.DIDCOMM_TYPE_ISSUE_DIRECT = DIDCOMM_TYPE_ISSUE_DIRECT;
585
617
  exports.DIDCOMM_TYPE_REQUEST_ISSUE_WITH_DATA = DIDCOMM_TYPE_REQUEST_ISSUE_WITH_DATA;
618
+ exports.MULTIBASE_BASE58BTC_HEADER = MULTIBASE_BASE58BTC_HEADER;
619
+ exports.MULTICODEC_ED25519_PRIV_HEADER = MULTICODEC_ED25519_PRIV_HEADER;
620
+ exports.MULTICODEC_ED25519_PUB_HEADER = MULTICODEC_ED25519_PUB_HEADER;
586
621
  exports.defaultKaKResolver = defaultKaKResolver;
587
622
  exports.defaultVerificationKeyResolver = defaultVerificationKeyResolver;
588
623
  exports.didcommCreateEncrypted = didcommCreateEncrypted;
@@ -591,6 +626,7 @@ exports.didcommDecodeSignedJWT = didcommDecodeSignedJWT;
591
626
  exports.didcommDecrypt = didcommDecrypt;
592
627
  exports.didcommEncrypt = didcommEncrypt;
593
628
  exports.didcommSendMessage = didcommSendMessage;
629
+ exports.encodeMbKey = encodeMbKey;
594
630
  exports.formatPayloadToDIDComm = formatPayloadToDIDComm;
595
631
  exports.getAgreementKeydocFromDID = getAgreementKeydocFromDID;
596
632
  exports.getDerivedAgreementKey = getDerivedAgreementKey;
package/lib/didcomm.mjs CHANGED
@@ -4,9 +4,10 @@ import { Ed25519VerificationKey2020 } from '@digitalbazaar/ed25519-verification-
4
4
  import { Cipher } from '@docknetwork/minimal-cipher';
5
5
  import { v1 } from 'uuid';
6
6
  import base64url from 'base64url';
7
+ import * as bs58 from 'base58-universal';
7
8
  import { resolveDID } from './did/dids.mjs';
8
9
  import '@docknetwork/sdk/utils/did';
9
- import '@docknetwork/wallet-sdk-wasm/src/services/dock/service';
10
+ import '@docknetwork/wallet-sdk-wasm/lib/services/dock/service';
10
11
 
11
12
  var DIDCOMM_TYPE_BASIC = 'https://didcomm.org/basicmessage/1.0/message';
12
13
  var DIDCOMM_TYPE_ISSUE_DIRECT = 'https://didcomm.org/issue-credential/2.0/issue-credential';
@@ -322,6 +323,9 @@ function isValidKeyAgreementDoc(keyDoc) {
322
323
  function isDerivableKey(keyDoc) {
323
324
  return keyDoc.type === 'Ed25519VerificationKey2018' || keyDoc.type === 'Ed25519VerificationKey2019' || keyDoc.type === 'Ed25519VerificationKey2020';
324
325
  }
326
+ function getDIDKeydocsFromDIDDocument(didDocument) {
327
+ return [].concat(_toConsumableArray(potentialToArray(didDocument.verificationMethod)), _toConsumableArray(potentialToArray(didDocument.keyAgreement)), _toConsumableArray(potentialToArray(didDocument.publicKey)));
328
+ }
325
329
  function getAgreementKeydocFromDID(_x17) {
326
330
  return _getAgreementKeydocFromDID.apply(this, arguments);
327
331
  }
@@ -337,46 +341,52 @@ function _getAgreementKeydocFromDID() {
337
341
  }
338
342
  return _context9.abrupt("return", undefined);
339
343
  case 2:
344
+ if (!did.startsWith('did:polygon')) {
345
+ _context9.next = 4;
346
+ break;
347
+ }
348
+ throw new Error('PolygonID DIDs cannot be used for DIDComm purposes');
349
+ case 4:
340
350
  // Resolve actual DID document and get key agreement keys
341
351
  isDIDUrl = did.indexOf('#') !== -1;
342
- _context9.next = 5;
352
+ _context9.next = 7;
343
353
  return resolveDID(did);
344
- case 5:
354
+ case 7:
345
355
  didDocument = _context9.sent;
346
356
  keyAgreements = didDocument.keyAgreement ? Array.isArray(didDocument.keyAgreement) ? didDocument.keyAgreement : [didDocument.keyAgreement] : []; // User supplied full URL, use that if possible
347
357
  // if not it may still require derivation to be valid (such as dock DIDs)
348
358
  if (!isDIDUrl) {
349
- _context9.next = 11;
359
+ _context9.next = 13;
350
360
  break;
351
361
  }
352
362
  foundDoc = keyAgreements.filter(function (keyDoc) {
353
363
  return keyDoc.id === did && isValidKeyAgreementDoc(keyDoc);
354
364
  })[0];
355
365
  if (!foundDoc) {
356
- _context9.next = 11;
366
+ _context9.next = 13;
357
367
  break;
358
368
  }
359
369
  return _context9.abrupt("return", foundDoc);
360
- case 11:
370
+ case 13:
361
371
  // User supplied DID, find first supported keyagreement document
362
372
  firstKeyAgreement = keyAgreements.filter(isValidKeyAgreementDoc)[0];
363
373
  if (!firstKeyAgreement) {
364
- _context9.next = 14;
374
+ _context9.next = 16;
365
375
  break;
366
376
  }
367
377
  return _context9.abrupt("return", firstKeyAgreement);
368
- case 14:
378
+ case 16:
369
379
  // No valid key agreement found on resolution, lets derive one from a ED25519 key if we can
370
- publicKeys = didDocument.publicKey ? Array.isArray(didDocument.publicKey) ? didDocument.publicKey : [didDocument.publicKey] : []; // See if DID document has any derivable keys
380
+ publicKeys = getDIDKeydocsFromDIDDocument(didDocument); // See if DID document has any derivable keys
371
381
  derivableKey = publicKeys.filter(isDerivableKey)[0];
372
382
  if (!derivableKey) {
373
- _context9.next = 18;
383
+ _context9.next = 20;
374
384
  break;
375
385
  }
376
386
  return _context9.abrupt("return", getDerivedAgreementKey(derivableKey));
377
- case 18:
387
+ case 20:
378
388
  throw new Error("Unable to find or derive X25519 key agreement for DID: ".concat(did));
379
- case 19:
389
+ case 21:
380
390
  case "end":
381
391
  return _context9.stop();
382
392
  }
@@ -384,12 +394,21 @@ function _getAgreementKeydocFromDID() {
384
394
  }));
385
395
  return _getAgreementKeydocFromDID.apply(this, arguments);
386
396
  }
397
+ var MULTIBASE_BASE58BTC_HEADER = 'z';
398
+ var MULTICODEC_ED25519_PRIV_HEADER = new Uint8Array([0x80, 0x26]);
399
+ var MULTICODEC_ED25519_PUB_HEADER = new Uint8Array([0xed, 0x01]);
400
+ function encodeMbKey(header, key) {
401
+ var mbKey = new Uint8Array(header.length + key.length);
402
+ mbKey.set(header);
403
+ mbKey.set(key, header.length);
404
+ return MULTIBASE_BASE58BTC_HEADER + bs58.encode(mbKey);
405
+ }
387
406
  function getDerivedAgreementKey(_x18) {
388
407
  return _getDerivedAgreementKey.apply(this, arguments);
389
408
  }
390
409
  function _getDerivedAgreementKey() {
391
410
  _getDerivedAgreementKey = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee10(derivableKey) {
392
- var ed2020VerificationKey, derivedKeyAgreement;
411
+ var publicKeyMultibase, privateKeyMultibase, derivedKeyAgreement;
393
412
  return _regeneratorRuntime().wrap(function _callee10$(_context10) {
394
413
  while (1) switch (_context10.prev = _context10.next) {
395
414
  case 0:
@@ -399,23 +418,17 @@ function _getDerivedAgreementKey() {
399
418
  }
400
419
  throw new Error("Cannot derive X25519 KAK from type: ".concat(derivableKey.type));
401
420
  case 2:
402
- if (!derivableKey.publicKeyMultibase) {
403
- derivableKey.publicKeyMultibase = derivableKey.publicKeyBase58;
404
- }
405
-
406
- // Convert derivable key into latest 2020 format
407
- _context10.next = 5;
408
- return Ed25519VerificationKey2020.from(_objectSpread2({
409
- keyPair: derivableKey
410
- }, derivableKey));
411
- case 5:
412
- ed2020VerificationKey = _context10.sent;
413
- // Convert ed25519 2020 verification key into a key agreement key
414
- derivedKeyAgreement = X25519KeyAgreementKey2020.fromEd25519VerificationKey2020(_objectSpread2({
415
- keyPair: ed2020VerificationKey
416
- }, ed2020VerificationKey));
421
+ publicKeyMultibase = derivableKey.publicKeyBase58 ? encodeMbKey(MULTICODEC_ED25519_PUB_HEADER, bs58.decode(derivableKey.publicKeyBase58)) : derivableKey.publicKeyMultibase;
422
+ privateKeyMultibase = (derivableKey.privateKeyBase58 ? encodeMbKey(MULTICODEC_ED25519_PRIV_HEADER, bs58.decode(derivableKey.privateKeyBase58)) : undefined) || derivableKey.privateKeyMultibase; // Convert ed25519 2020 verification key into a key agreement key
423
+ derivedKeyAgreement = X25519KeyAgreementKey2020.fromEd25519VerificationKey2020({
424
+ keyPair: {
425
+ publicKeyMultibase: publicKeyMultibase,
426
+ privateKeyMultibase: privateKeyMultibase,
427
+ controller: derivableKey.controller
428
+ }
429
+ });
417
430
  return _context10.abrupt("return", derivedKeyAgreement);
418
- case 8:
431
+ case 6:
419
432
  case "end":
420
433
  return _context10.stop();
421
434
  }
@@ -572,4 +585,4 @@ function _didcommCreateEncrypted() {
572
585
  return _didcommCreateEncrypted.apply(this, arguments);
573
586
  }
574
587
 
575
- export { DIDCOMM_TYPE_BASIC, DIDCOMM_TYPE_ISSUE_DIRECT, DIDCOMM_TYPE_REQUEST_ISSUE_WITH_DATA, defaultKaKResolver, defaultVerificationKeyResolver, didcommCreateEncrypted, didcommCreateSignedJWT, didcommDecodeSignedJWT, didcommDecrypt, didcommEncrypt, didcommSendMessage, formatPayloadToDIDComm, getAgreementKeydocFromDID, getDerivedAgreementKey, getJWERecipientFromDocument, getKaKInstanceFromDocument, getKeydocFromDID, isDerivableKey, isValidDID, isValidKeyAgreementDoc, userFriendlyTypeMap };
588
+ export { DIDCOMM_TYPE_BASIC, DIDCOMM_TYPE_ISSUE_DIRECT, DIDCOMM_TYPE_REQUEST_ISSUE_WITH_DATA, MULTIBASE_BASE58BTC_HEADER, MULTICODEC_ED25519_PRIV_HEADER, MULTICODEC_ED25519_PUB_HEADER, defaultKaKResolver, defaultVerificationKeyResolver, didcommCreateEncrypted, didcommCreateSignedJWT, didcommDecodeSignedJWT, didcommDecrypt, didcommEncrypt, didcommSendMessage, encodeMbKey, formatPayloadToDIDComm, getAgreementKeydocFromDID, getDerivedAgreementKey, getJWERecipientFromDocument, getKaKInstanceFromDocument, getKeydocFromDID, isDerivableKey, isValidDID, isValidKeyAgreementDoc, userFriendlyTypeMap };
package/lib/index.js CHANGED
@@ -6,16 +6,17 @@ var _rollupPluginBabelHelpers = require('./_rollupPluginBabelHelpers-4923c894.js
6
6
  var utilCrypto = require('@polkadot/util-crypto');
7
7
  var assert = require('assert');
8
8
  var axios = require('axios');
9
- var logger = require('@docknetwork/wallet-sdk-wasm/src/core/logger');
9
+ var logger = require('@docknetwork/wallet-sdk-wasm/lib/core/logger');
10
10
  var didcomm$1 = require('./didcomm.js');
11
11
  var payloads = require('./payloads.js');
12
12
  var jwtDecode = require('jwt-decode');
13
- var service = require('@docknetwork/wallet-sdk-wasm/src/services/dock/service');
13
+ var service = require('@docknetwork/wallet-sdk-wasm/lib/services/dock/service');
14
14
  require('@digitalbazaar/x25519-key-agreement-key-2020');
15
15
  require('@digitalbazaar/ed25519-verification-key-2020');
16
16
  require('@docknetwork/minimal-cipher');
17
17
  require('uuid');
18
18
  require('base64url');
19
+ require('base58-universal');
19
20
  require('./did/dids.js');
20
21
  require('@docknetwork/sdk/utils/did');
21
22
  require('@docknetwork/sdk/verifiable-credential');
package/lib/index.mjs CHANGED
@@ -2,16 +2,17 @@ import { _ as _asyncToGenerator, a as _regeneratorRuntime, d as _createForOfIter
2
2
  import { isBase64 } from '@polkadot/util-crypto';
3
3
  import assert from 'assert';
4
4
  import axios from 'axios';
5
- import { Logger } from '@docknetwork/wallet-sdk-wasm/src/core/logger';
5
+ import { Logger } from '@docknetwork/wallet-sdk-wasm/lib/core/logger';
6
6
  import { didcommCreateEncrypted, didcommDecrypt, getDerivedAgreementKey, didcommCreateSignedJWT, DIDCOMM_TYPE_ISSUE_DIRECT } from './didcomm.mjs';
7
7
  import { toBase64, generateSignedPayload, generateSignedPayloadFromList, fromBase64 } from './payloads.mjs';
8
8
  import jwtDecode from 'jwt-decode';
9
- import { dockService } from '@docknetwork/wallet-sdk-wasm/src/services/dock/service';
9
+ import { dockService } from '@docknetwork/wallet-sdk-wasm/lib/services/dock/service';
10
10
  import '@digitalbazaar/x25519-key-agreement-key-2020';
11
11
  import '@digitalbazaar/ed25519-verification-key-2020';
12
12
  import '@docknetwork/minimal-cipher';
13
13
  import 'uuid';
14
14
  import 'base64url';
15
+ import 'base58-universal';
15
16
  import './did/dids.mjs';
16
17
  import '@docknetwork/sdk/utils/did';
17
18
  import '@docknetwork/sdk/verifiable-credential';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@docknetwork/wallet-sdk-relay-service",
3
- "version": "0.4.23",
3
+ "version": "1.4.0",
4
4
  "license": "https://github.com/docknetwork/react-native-sdk/LICENSE",
5
5
  "repository": {
6
6
  "type": "git",
package/src/didcomm.js CHANGED
@@ -4,6 +4,7 @@ import {Ed25519VerificationKey2020} from '@digitalbazaar/ed25519-verification-ke
4
4
  import {Cipher} from '@docknetwork/minimal-cipher';
5
5
  import {v1 as uuidv1} from 'uuid';
6
6
  import base64url from 'base64url';
7
+ import * as bs58 from 'base58-universal';
7
8
 
8
9
  import {resolveDID} from './did/dids';
9
10
 
@@ -180,15 +181,27 @@ export function isDerivableKey(keyDoc) {
180
181
  );
181
182
  }
182
183
 
184
+ function getDIDKeydocsFromDIDDocument(didDocument) {
185
+ return [
186
+ ...potentialToArray(didDocument.verificationMethod),
187
+ ...potentialToArray(didDocument.keyAgreement),
188
+ ...potentialToArray(didDocument.publicKey),
189
+ ];
190
+ }
191
+
183
192
  export async function getAgreementKeydocFromDID(did) {
184
193
  if (!did) {
185
194
  return undefined;
186
195
  }
187
196
 
197
+ // Early out for polygon DIDs as they dont support this
198
+ if (did.startsWith('did:polygon')) {
199
+ throw new Error('PolygonID DIDs cannot be used for DIDComm purposes');
200
+ }
201
+
188
202
  // Resolve actual DID document and get key agreement keys
189
203
  const isDIDUrl = did.indexOf('#') !== -1;
190
204
  const didDocument = await resolveDID(did);
191
-
192
205
  const keyAgreements = didDocument.keyAgreement
193
206
  ? Array.isArray(didDocument.keyAgreement)
194
207
  ? didDocument.keyAgreement
@@ -214,11 +227,7 @@ export async function getAgreementKeydocFromDID(did) {
214
227
  }
215
228
 
216
229
  // No valid key agreement found on resolution, lets derive one from a ED25519 key if we can
217
- const publicKeys = didDocument.publicKey
218
- ? Array.isArray(didDocument.publicKey)
219
- ? didDocument.publicKey
220
- : [didDocument.publicKey]
221
- : [];
230
+ const publicKeys = getDIDKeydocsFromDIDDocument(didDocument);
222
231
 
223
232
  // See if DID document has any derivable keys
224
233
  const derivableKey = publicKeys.filter(isDerivableKey)[0];
@@ -231,26 +240,43 @@ export async function getAgreementKeydocFromDID(did) {
231
240
  );
232
241
  }
233
242
 
243
+ export const MULTIBASE_BASE58BTC_HEADER = 'z';
244
+ export const MULTICODEC_ED25519_PRIV_HEADER = new Uint8Array([0x80, 0x26]);
245
+ export const MULTICODEC_ED25519_PUB_HEADER = new Uint8Array([0xed, 0x01]);
246
+ export function encodeMbKey(header, key) {
247
+ const mbKey = new Uint8Array(header.length + key.length);
248
+ mbKey.set(header);
249
+ mbKey.set(key, header.length);
250
+ return MULTIBASE_BASE58BTC_HEADER + bs58.encode(mbKey);
251
+ }
252
+
234
253
  export async function getDerivedAgreementKey(derivableKey) {
235
254
  if (!isDerivableKey(derivableKey)) {
236
255
  throw new Error(`Cannot derive X25519 KAK from type: ${derivableKey.type}`);
237
256
  }
238
257
 
239
- if (!derivableKey.publicKeyMultibase) {
240
- derivableKey.publicKeyMultibase = derivableKey.publicKeyBase58;
241
- }
242
-
243
- // Convert derivable key into latest 2020 format
244
- const ed2020VerificationKey = await Ed25519VerificationKey2020.from({
245
- keyPair: derivableKey,
246
- ...derivableKey,
247
- });
258
+ const publicKeyMultibase = derivableKey.publicKeyBase58
259
+ ? encodeMbKey(
260
+ MULTICODEC_ED25519_PUB_HEADER,
261
+ bs58.decode(derivableKey.publicKeyBase58),
262
+ )
263
+ : derivableKey.publicKeyMultibase;
264
+ const privateKeyMultibase =
265
+ (derivableKey.privateKeyBase58
266
+ ? encodeMbKey(
267
+ MULTICODEC_ED25519_PRIV_HEADER,
268
+ bs58.decode(derivableKey.privateKeyBase58),
269
+ )
270
+ : undefined) || derivableKey.privateKeyMultibase;
248
271
 
249
272
  // Convert ed25519 2020 verification key into a key agreement key
250
273
  const derivedKeyAgreement =
251
274
  X25519KeyAgreementKey2020.fromEd25519VerificationKey2020({
252
- keyPair: ed2020VerificationKey,
253
- ...ed2020VerificationKey,
275
+ keyPair: {
276
+ publicKeyMultibase,
277
+ privateKeyMultibase,
278
+ controller: derivableKey.controller,
279
+ },
254
280
  });
255
281
  return derivedKeyAgreement;
256
282
  }
@@ -1,12 +1,12 @@
1
+ import {dockService} from '@docknetwork/wallet-sdk-wasm/src/services/dock';
1
2
  import {RelayService} from '../lib';
2
- import {dock} from '../lib/did/did-resolver';
3
3
  import {ALICE_KEY_PAIR_DOC, BOB_KEY_PAIR_DOC} from './mock-data';
4
4
 
5
5
  describe('Relay service', () => {
6
6
  const messageContent = `Test message ${Date.now()}`;
7
7
 
8
8
  beforeAll(async () => {
9
- await dock.init({
9
+ await dockService.init({
10
10
  address: 'wss://knox-1.dock.io',
11
11
  });
12
12
  });
@@ -1,38 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var resolver$1 = require('@docknetwork/sdk/resolver');
6
- var dock = require('@docknetwork/sdk');
7
-
8
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
9
-
10
- var dock__default = /*#__PURE__*/_interopDefaultLegacy(dock);
11
-
12
- // Create a resolver in order to lookup DIDs for verifying
13
- var universalResolverUrl = 'https://uniresolver.io';
14
-
15
- // class WalletSDKResolver extends WildcardMultiResolver {
16
- // static PREFIX = WILDCARD;
17
- // static METHOD = WILDCARD;
18
-
19
- // async resolve(did) {
20
- // const trimmedDID = did.split('#')[0];
21
- // const document = await super.resolve(trimmedDID);
22
- // return document;
23
- // }
24
- // }
25
-
26
- var resolver = new resolver$1.WildcardMultiResolver(
27
- // {
28
- // dock: new DockResolver(dock), // Prebuilt resolver
29
- // key: new DIDKeyResolver(), // did:key resolution
30
- // },
31
- [new resolver$1.DockResolver(dock__default["default"]), new resolver$1.DIDKeyResolver(), new resolver$1.UniversalResolver(universalResolverUrl)]);
32
-
33
- Object.defineProperty(exports, 'dock', {
34
- enumerable: true,
35
- get: function () { return dock__default["default"]; }
36
- });
37
- exports.resolver = resolver;
38
- exports.universalResolverUrl = universalResolverUrl;
@@ -1,26 +0,0 @@
1
- import { WildcardMultiResolver, DockResolver, DIDKeyResolver, UniversalResolver } from '@docknetwork/sdk/resolver';
2
- import dock from '@docknetwork/sdk';
3
- export { default as dock } from '@docknetwork/sdk';
4
-
5
- // Create a resolver in order to lookup DIDs for verifying
6
- var universalResolverUrl = 'https://uniresolver.io';
7
-
8
- // class WalletSDKResolver extends WildcardMultiResolver {
9
- // static PREFIX = WILDCARD;
10
- // static METHOD = WILDCARD;
11
-
12
- // async resolve(did) {
13
- // const trimmedDID = did.split('#')[0];
14
- // const document = await super.resolve(trimmedDID);
15
- // return document;
16
- // }
17
- // }
18
-
19
- var resolver = new WildcardMultiResolver(
20
- // {
21
- // dock: new DockResolver(dock), // Prebuilt resolver
22
- // key: new DIDKeyResolver(), // did:key resolution
23
- // },
24
- [new DockResolver(dock), new DIDKeyResolver(), new UniversalResolver(universalResolverUrl)]);
25
-
26
- export { resolver, universalResolverUrl };
@@ -1,35 +0,0 @@
1
- import {
2
- DockResolver,
3
- DIDKeyResolver,
4
- WildcardMultiResolver,
5
- UniversalResolver,
6
- } from '@docknetwork/sdk/resolver';
7
- import dock from '@docknetwork/sdk';
8
-
9
- // Create a resolver in order to lookup DIDs for verifying
10
- export const universalResolverUrl = 'https://uniresolver.io';
11
-
12
- // class WalletSDKResolver extends WildcardMultiResolver {
13
- // static PREFIX = WILDCARD;
14
- // static METHOD = WILDCARD;
15
-
16
- // async resolve(did) {
17
- // const trimmedDID = did.split('#')[0];
18
- // const document = await super.resolve(trimmedDID);
19
- // return document;
20
- // }
21
- // }
22
-
23
- export const resolver = new WildcardMultiResolver(
24
- // {
25
- // dock: new DockResolver(dock), // Prebuilt resolver
26
- // key: new DIDKeyResolver(), // did:key resolution
27
- // },
28
- [
29
- new DockResolver(dock),
30
- new DIDKeyResolver(),
31
- new UniversalResolver(universalResolverUrl),
32
- ],
33
- );
34
-
35
- export {dock};