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

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
@@ -3,14 +3,16 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var _rollupPluginBabelHelpers = require('../_rollupPluginBabelHelpers-4923c894.js');
6
- var did = require('@docknetwork/sdk/utils/did');
7
- var service = require('@docknetwork/wallet-sdk-wasm/src/services/dock/service');
6
+ var service = require('@docknetwork/wallet-sdk-wasm/lib/services/dock/service');
8
7
 
8
+ var hexDIDToQualified = function hexDIDToQualified(did) {
9
+ return "did:dock:".concat(did);
10
+ };
9
11
  function resolveDID(_x) {
10
12
  return _resolveDID.apply(this, arguments);
11
13
  }
12
14
  function _resolveDID() {
13
- _resolveDID = _rollupPluginBabelHelpers._asyncToGenerator( /*#__PURE__*/_rollupPluginBabelHelpers._regeneratorRuntime().mark(function _callee(did$1) {
15
+ _resolveDID = _rollupPluginBabelHelpers._asyncToGenerator( /*#__PURE__*/_rollupPluginBabelHelpers._regeneratorRuntime().mark(function _callee(did) {
14
16
  var disableCache,
15
17
  qualifiedDID,
16
18
  _args = arguments;
@@ -19,14 +21,14 @@ function _resolveDID() {
19
21
  case 0:
20
22
  disableCache = _args.length > 1 && _args[1] !== undefined ? _args[1] : false;
21
23
  // Check if string has no qualifier, if so assume its hex format
22
- qualifiedDID = did$1;
23
- if (did$1.substr(0, 4) !== 'did:') {
24
- if (did$1.substr(0, 2) !== '0x') {
24
+ qualifiedDID = did;
25
+ if (did.substr(0, 4) !== 'did:') {
26
+ if (did.substr(0, 2) !== '0x') {
25
27
  // Ensure to prepend 0x to hex string
26
- qualifiedDID = did.hexDIDToQualified("0x".concat(did$1));
28
+ qualifiedDID = hexDIDToQualified("0x".concat(did));
27
29
  } else {
28
30
  // Resolve hex DIDs to qualified (did:dock:xyz)
29
- qualifiedDID = did.hexDIDToQualified(did$1);
31
+ qualifiedDID = hexDIDToQualified(did);
30
32
  }
31
33
  }
32
34
  _context.next = 5;
package/lib/did/dids.mjs CHANGED
@@ -1,7 +1,9 @@
1
1
  import { _ as _asyncToGenerator, a as _regeneratorRuntime } from '../_rollupPluginBabelHelpers-78739aa5.js';
2
- import { hexDIDToQualified } from '@docknetwork/sdk/utils/did';
3
- import { dockService } from '@docknetwork/wallet-sdk-wasm/src/services/dock/service';
2
+ import { dockService } from '@docknetwork/wallet-sdk-wasm/lib/services/dock/service';
4
3
 
4
+ var hexDIDToQualified = function hexDIDToQualified(did) {
5
+ return "did:dock:".concat(did);
6
+ };
5
7
  function resolveDID(_x) {
6
8
  return _resolveDID.apply(this, arguments);
7
9
  }
package/lib/didcomm.js CHANGED
@@ -8,13 +8,32 @@ 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
- require('@docknetwork/sdk/utils/did');
13
- require('@docknetwork/wallet-sdk-wasm/src/services/dock/service');
13
+ require('@docknetwork/wallet-sdk-wasm/lib/services/dock/service');
14
14
 
15
15
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
16
16
 
17
+ function _interopNamespace(e) {
18
+ if (e && e.__esModule) return e;
19
+ var n = Object.create(null);
20
+ if (e) {
21
+ Object.keys(e).forEach(function (k) {
22
+ if (k !== 'default') {
23
+ var d = Object.getOwnPropertyDescriptor(e, k);
24
+ Object.defineProperty(n, k, d.get ? d : {
25
+ enumerable: true,
26
+ get: function () { return e[k]; }
27
+ });
28
+ }
29
+ });
30
+ }
31
+ n["default"] = e;
32
+ return Object.freeze(n);
33
+ }
34
+
17
35
  var base64url__default = /*#__PURE__*/_interopDefaultLegacy(base64url);
36
+ var bs58__namespace = /*#__PURE__*/_interopNamespace(bs58);
18
37
 
19
38
  var DIDCOMM_TYPE_BASIC = 'https://didcomm.org/basicmessage/1.0/message';
20
39
  var DIDCOMM_TYPE_ISSUE_DIRECT = 'https://didcomm.org/issue-credential/2.0/issue-credential';
@@ -330,6 +349,9 @@ function isValidKeyAgreementDoc(keyDoc) {
330
349
  function isDerivableKey(keyDoc) {
331
350
  return keyDoc.type === 'Ed25519VerificationKey2018' || keyDoc.type === 'Ed25519VerificationKey2019' || keyDoc.type === 'Ed25519VerificationKey2020';
332
351
  }
352
+ function getDIDKeydocsFromDIDDocument(didDocument) {
353
+ return [].concat(_rollupPluginBabelHelpers._toConsumableArray(potentialToArray(didDocument.verificationMethod)), _rollupPluginBabelHelpers._toConsumableArray(potentialToArray(didDocument.keyAgreement)), _rollupPluginBabelHelpers._toConsumableArray(potentialToArray(didDocument.publicKey)));
354
+ }
333
355
  function getAgreementKeydocFromDID(_x17) {
334
356
  return _getAgreementKeydocFromDID.apply(this, arguments);
335
357
  }
@@ -345,46 +367,52 @@ function _getAgreementKeydocFromDID() {
345
367
  }
346
368
  return _context9.abrupt("return", undefined);
347
369
  case 2:
370
+ if (!did.startsWith('did:polygon')) {
371
+ _context9.next = 4;
372
+ break;
373
+ }
374
+ throw new Error('PolygonID DIDs cannot be used for DIDComm purposes');
375
+ case 4:
348
376
  // Resolve actual DID document and get key agreement keys
349
377
  isDIDUrl = did.indexOf('#') !== -1;
350
- _context9.next = 5;
378
+ _context9.next = 7;
351
379
  return did_dids.resolveDID(did);
352
- case 5:
380
+ case 7:
353
381
  didDocument = _context9.sent;
354
382
  keyAgreements = didDocument.keyAgreement ? Array.isArray(didDocument.keyAgreement) ? didDocument.keyAgreement : [didDocument.keyAgreement] : []; // User supplied full URL, use that if possible
355
383
  // if not it may still require derivation to be valid (such as dock DIDs)
356
384
  if (!isDIDUrl) {
357
- _context9.next = 11;
385
+ _context9.next = 13;
358
386
  break;
359
387
  }
360
388
  foundDoc = keyAgreements.filter(function (keyDoc) {
361
389
  return keyDoc.id === did && isValidKeyAgreementDoc(keyDoc);
362
390
  })[0];
363
391
  if (!foundDoc) {
364
- _context9.next = 11;
392
+ _context9.next = 13;
365
393
  break;
366
394
  }
367
395
  return _context9.abrupt("return", foundDoc);
368
- case 11:
396
+ case 13:
369
397
  // User supplied DID, find first supported keyagreement document
370
398
  firstKeyAgreement = keyAgreements.filter(isValidKeyAgreementDoc)[0];
371
399
  if (!firstKeyAgreement) {
372
- _context9.next = 14;
400
+ _context9.next = 16;
373
401
  break;
374
402
  }
375
403
  return _context9.abrupt("return", firstKeyAgreement);
376
- case 14:
404
+ case 16:
377
405
  // 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
406
+ publicKeys = getDIDKeydocsFromDIDDocument(didDocument); // See if DID document has any derivable keys
379
407
  derivableKey = publicKeys.filter(isDerivableKey)[0];
380
408
  if (!derivableKey) {
381
- _context9.next = 18;
409
+ _context9.next = 20;
382
410
  break;
383
411
  }
384
412
  return _context9.abrupt("return", getDerivedAgreementKey(derivableKey));
385
- case 18:
413
+ case 20:
386
414
  throw new Error("Unable to find or derive X25519 key agreement for DID: ".concat(did));
387
- case 19:
415
+ case 21:
388
416
  case "end":
389
417
  return _context9.stop();
390
418
  }
@@ -392,12 +420,21 @@ function _getAgreementKeydocFromDID() {
392
420
  }));
393
421
  return _getAgreementKeydocFromDID.apply(this, arguments);
394
422
  }
423
+ var MULTIBASE_BASE58BTC_HEADER = 'z';
424
+ var MULTICODEC_ED25519_PRIV_HEADER = new Uint8Array([0x80, 0x26]);
425
+ var MULTICODEC_ED25519_PUB_HEADER = new Uint8Array([0xed, 0x01]);
426
+ function encodeMbKey(header, key) {
427
+ var mbKey = new Uint8Array(header.length + key.length);
428
+ mbKey.set(header);
429
+ mbKey.set(key, header.length);
430
+ return MULTIBASE_BASE58BTC_HEADER + bs58__namespace.encode(mbKey);
431
+ }
395
432
  function getDerivedAgreementKey(_x18) {
396
433
  return _getDerivedAgreementKey.apply(this, arguments);
397
434
  }
398
435
  function _getDerivedAgreementKey() {
399
436
  _getDerivedAgreementKey = _rollupPluginBabelHelpers._asyncToGenerator( /*#__PURE__*/_rollupPluginBabelHelpers._regeneratorRuntime().mark(function _callee10(derivableKey) {
400
- var ed2020VerificationKey, derivedKeyAgreement;
437
+ var publicKeyMultibase, privateKeyMultibase, derivedKeyAgreement;
401
438
  return _rollupPluginBabelHelpers._regeneratorRuntime().wrap(function _callee10$(_context10) {
402
439
  while (1) switch (_context10.prev = _context10.next) {
403
440
  case 0:
@@ -407,23 +444,17 @@ function _getDerivedAgreementKey() {
407
444
  }
408
445
  throw new Error("Cannot derive X25519 KAK from type: ".concat(derivableKey.type));
409
446
  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));
447
+ publicKeyMultibase = derivableKey.publicKeyBase58 ? encodeMbKey(MULTICODEC_ED25519_PUB_HEADER, bs58__namespace.decode(derivableKey.publicKeyBase58)) : derivableKey.publicKeyMultibase;
448
+ 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
449
+ derivedKeyAgreement = x25519KeyAgreementKey2020.X25519KeyAgreementKey2020.fromEd25519VerificationKey2020({
450
+ keyPair: {
451
+ publicKeyMultibase: publicKeyMultibase,
452
+ privateKeyMultibase: privateKeyMultibase,
453
+ controller: derivableKey.controller
454
+ }
455
+ });
425
456
  return _context10.abrupt("return", derivedKeyAgreement);
426
- case 8:
457
+ case 6:
427
458
  case "end":
428
459
  return _context10.stop();
429
460
  }
@@ -583,6 +614,9 @@ function _didcommCreateEncrypted() {
583
614
  exports.DIDCOMM_TYPE_BASIC = DIDCOMM_TYPE_BASIC;
584
615
  exports.DIDCOMM_TYPE_ISSUE_DIRECT = DIDCOMM_TYPE_ISSUE_DIRECT;
585
616
  exports.DIDCOMM_TYPE_REQUEST_ISSUE_WITH_DATA = DIDCOMM_TYPE_REQUEST_ISSUE_WITH_DATA;
617
+ exports.MULTIBASE_BASE58BTC_HEADER = MULTIBASE_BASE58BTC_HEADER;
618
+ exports.MULTICODEC_ED25519_PRIV_HEADER = MULTICODEC_ED25519_PRIV_HEADER;
619
+ exports.MULTICODEC_ED25519_PUB_HEADER = MULTICODEC_ED25519_PUB_HEADER;
586
620
  exports.defaultKaKResolver = defaultKaKResolver;
587
621
  exports.defaultVerificationKeyResolver = defaultVerificationKeyResolver;
588
622
  exports.didcommCreateEncrypted = didcommCreateEncrypted;
@@ -591,6 +625,7 @@ exports.didcommDecodeSignedJWT = didcommDecodeSignedJWT;
591
625
  exports.didcommDecrypt = didcommDecrypt;
592
626
  exports.didcommEncrypt = didcommEncrypt;
593
627
  exports.didcommSendMessage = didcommSendMessage;
628
+ exports.encodeMbKey = encodeMbKey;
594
629
  exports.formatPayloadToDIDComm = formatPayloadToDIDComm;
595
630
  exports.getAgreementKeydocFromDID = getAgreementKeydocFromDID;
596
631
  exports.getDerivedAgreementKey = getDerivedAgreementKey;
package/lib/didcomm.mjs CHANGED
@@ -4,9 +4,9 @@ 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
- import '@docknetwork/sdk/utils/did';
9
- import '@docknetwork/wallet-sdk-wasm/src/services/dock/service';
9
+ import '@docknetwork/wallet-sdk-wasm/lib/services/dock/service';
10
10
 
11
11
  var DIDCOMM_TYPE_BASIC = 'https://didcomm.org/basicmessage/1.0/message';
12
12
  var DIDCOMM_TYPE_ISSUE_DIRECT = 'https://didcomm.org/issue-credential/2.0/issue-credential';
@@ -322,6 +322,9 @@ function isValidKeyAgreementDoc(keyDoc) {
322
322
  function isDerivableKey(keyDoc) {
323
323
  return keyDoc.type === 'Ed25519VerificationKey2018' || keyDoc.type === 'Ed25519VerificationKey2019' || keyDoc.type === 'Ed25519VerificationKey2020';
324
324
  }
325
+ function getDIDKeydocsFromDIDDocument(didDocument) {
326
+ return [].concat(_toConsumableArray(potentialToArray(didDocument.verificationMethod)), _toConsumableArray(potentialToArray(didDocument.keyAgreement)), _toConsumableArray(potentialToArray(didDocument.publicKey)));
327
+ }
325
328
  function getAgreementKeydocFromDID(_x17) {
326
329
  return _getAgreementKeydocFromDID.apply(this, arguments);
327
330
  }
@@ -337,46 +340,52 @@ function _getAgreementKeydocFromDID() {
337
340
  }
338
341
  return _context9.abrupt("return", undefined);
339
342
  case 2:
343
+ if (!did.startsWith('did:polygon')) {
344
+ _context9.next = 4;
345
+ break;
346
+ }
347
+ throw new Error('PolygonID DIDs cannot be used for DIDComm purposes');
348
+ case 4:
340
349
  // Resolve actual DID document and get key agreement keys
341
350
  isDIDUrl = did.indexOf('#') !== -1;
342
- _context9.next = 5;
351
+ _context9.next = 7;
343
352
  return resolveDID(did);
344
- case 5:
353
+ case 7:
345
354
  didDocument = _context9.sent;
346
355
  keyAgreements = didDocument.keyAgreement ? Array.isArray(didDocument.keyAgreement) ? didDocument.keyAgreement : [didDocument.keyAgreement] : []; // User supplied full URL, use that if possible
347
356
  // if not it may still require derivation to be valid (such as dock DIDs)
348
357
  if (!isDIDUrl) {
349
- _context9.next = 11;
358
+ _context9.next = 13;
350
359
  break;
351
360
  }
352
361
  foundDoc = keyAgreements.filter(function (keyDoc) {
353
362
  return keyDoc.id === did && isValidKeyAgreementDoc(keyDoc);
354
363
  })[0];
355
364
  if (!foundDoc) {
356
- _context9.next = 11;
365
+ _context9.next = 13;
357
366
  break;
358
367
  }
359
368
  return _context9.abrupt("return", foundDoc);
360
- case 11:
369
+ case 13:
361
370
  // User supplied DID, find first supported keyagreement document
362
371
  firstKeyAgreement = keyAgreements.filter(isValidKeyAgreementDoc)[0];
363
372
  if (!firstKeyAgreement) {
364
- _context9.next = 14;
373
+ _context9.next = 16;
365
374
  break;
366
375
  }
367
376
  return _context9.abrupt("return", firstKeyAgreement);
368
- case 14:
377
+ case 16:
369
378
  // 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
379
+ publicKeys = getDIDKeydocsFromDIDDocument(didDocument); // See if DID document has any derivable keys
371
380
  derivableKey = publicKeys.filter(isDerivableKey)[0];
372
381
  if (!derivableKey) {
373
- _context9.next = 18;
382
+ _context9.next = 20;
374
383
  break;
375
384
  }
376
385
  return _context9.abrupt("return", getDerivedAgreementKey(derivableKey));
377
- case 18:
386
+ case 20:
378
387
  throw new Error("Unable to find or derive X25519 key agreement for DID: ".concat(did));
379
- case 19:
388
+ case 21:
380
389
  case "end":
381
390
  return _context9.stop();
382
391
  }
@@ -384,12 +393,21 @@ function _getAgreementKeydocFromDID() {
384
393
  }));
385
394
  return _getAgreementKeydocFromDID.apply(this, arguments);
386
395
  }
396
+ var MULTIBASE_BASE58BTC_HEADER = 'z';
397
+ var MULTICODEC_ED25519_PRIV_HEADER = new Uint8Array([0x80, 0x26]);
398
+ var MULTICODEC_ED25519_PUB_HEADER = new Uint8Array([0xed, 0x01]);
399
+ function encodeMbKey(header, key) {
400
+ var mbKey = new Uint8Array(header.length + key.length);
401
+ mbKey.set(header);
402
+ mbKey.set(key, header.length);
403
+ return MULTIBASE_BASE58BTC_HEADER + bs58.encode(mbKey);
404
+ }
387
405
  function getDerivedAgreementKey(_x18) {
388
406
  return _getDerivedAgreementKey.apply(this, arguments);
389
407
  }
390
408
  function _getDerivedAgreementKey() {
391
409
  _getDerivedAgreementKey = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee10(derivableKey) {
392
- var ed2020VerificationKey, derivedKeyAgreement;
410
+ var publicKeyMultibase, privateKeyMultibase, derivedKeyAgreement;
393
411
  return _regeneratorRuntime().wrap(function _callee10$(_context10) {
394
412
  while (1) switch (_context10.prev = _context10.next) {
395
413
  case 0:
@@ -399,23 +417,17 @@ function _getDerivedAgreementKey() {
399
417
  }
400
418
  throw new Error("Cannot derive X25519 KAK from type: ".concat(derivableKey.type));
401
419
  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));
420
+ publicKeyMultibase = derivableKey.publicKeyBase58 ? encodeMbKey(MULTICODEC_ED25519_PUB_HEADER, bs58.decode(derivableKey.publicKeyBase58)) : derivableKey.publicKeyMultibase;
421
+ 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
422
+ derivedKeyAgreement = X25519KeyAgreementKey2020.fromEd25519VerificationKey2020({
423
+ keyPair: {
424
+ publicKeyMultibase: publicKeyMultibase,
425
+ privateKeyMultibase: privateKeyMultibase,
426
+ controller: derivableKey.controller
427
+ }
428
+ });
417
429
  return _context10.abrupt("return", derivedKeyAgreement);
418
- case 8:
430
+ case 6:
419
431
  case "end":
420
432
  return _context10.stop();
421
433
  }
@@ -572,4 +584,4 @@ function _didcommCreateEncrypted() {
572
584
  return _didcommCreateEncrypted.apply(this, arguments);
573
585
  }
574
586
 
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 };
587
+ 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,18 +6,18 @@ 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
- require('@docknetwork/sdk/utils/did');
21
21
  require('@docknetwork/sdk/verifiable-credential');
22
22
  require('@docknetwork/sdk/utils/vc/helpers');
23
23
  require('@docknetwork/universal-wallet/methods/keypairs');
package/lib/index.mjs CHANGED
@@ -2,18 +2,18 @@ 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
- import '@docknetwork/sdk/utils/did';
17
17
  import '@docknetwork/sdk/verifiable-credential';
18
18
  import '@docknetwork/sdk/utils/vc/helpers';
19
19
  import '@docknetwork/universal-wallet/methods/keypairs';
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.1",
4
4
  "license": "https://github.com/docknetwork/react-native-sdk/LICENSE",
5
5
  "repository": {
6
6
  "type": "git",
package/src/did/dids.js CHANGED
@@ -1,6 +1,7 @@
1
- import {hexDIDToQualified} from '@docknetwork/sdk/utils/did';
2
1
  import {dockService} from '@docknetwork/wallet-sdk-wasm/src/services/dock/service';
3
2
 
3
+ const hexDIDToQualified = did => `did:dock:${did}`;
4
+
4
5
  export async function resolveDID(did, disableCache = false) {
5
6
  // Check if string has no qualifier, if so assume its hex format
6
7
  let qualifiedDID = did;
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};