@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 +1 -1
- package/lib/did/dids.mjs +1 -1
- package/lib/didcomm.js +65 -29
- package/lib/didcomm.mjs +43 -30
- package/lib/index.js +3 -2
- package/lib/index.mjs +3 -2
- package/package.json +1 -1
- package/src/didcomm.js +43 -17
- package/tests/relay-service.e2e.test.js +2 -2
- package/lib/did/did-resolver.js +0 -38
- package/lib/did/did-resolver.mjs +0 -26
- package/src/did/did-resolver.js +0 -35
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/
|
|
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/
|
|
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/
|
|
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 =
|
|
379
|
+
_context9.next = 7;
|
|
351
380
|
return did_dids.resolveDID(did);
|
|
352
|
-
case
|
|
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 =
|
|
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 =
|
|
393
|
+
_context9.next = 13;
|
|
365
394
|
break;
|
|
366
395
|
}
|
|
367
396
|
return _context9.abrupt("return", foundDoc);
|
|
368
|
-
case
|
|
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 =
|
|
401
|
+
_context9.next = 16;
|
|
373
402
|
break;
|
|
374
403
|
}
|
|
375
404
|
return _context9.abrupt("return", firstKeyAgreement);
|
|
376
|
-
case
|
|
405
|
+
case 16:
|
|
377
406
|
// No valid key agreement found on resolution, lets derive one from a ED25519 key if we can
|
|
378
|
-
publicKeys =
|
|
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 =
|
|
410
|
+
_context9.next = 20;
|
|
382
411
|
break;
|
|
383
412
|
}
|
|
384
413
|
return _context9.abrupt("return", getDerivedAgreementKey(derivableKey));
|
|
385
|
-
case
|
|
414
|
+
case 20:
|
|
386
415
|
throw new Error("Unable to find or derive X25519 key agreement for DID: ".concat(did));
|
|
387
|
-
case
|
|
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
|
|
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
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
}
|
|
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
|
|
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/
|
|
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 =
|
|
352
|
+
_context9.next = 7;
|
|
343
353
|
return resolveDID(did);
|
|
344
|
-
case
|
|
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 =
|
|
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 =
|
|
366
|
+
_context9.next = 13;
|
|
357
367
|
break;
|
|
358
368
|
}
|
|
359
369
|
return _context9.abrupt("return", foundDoc);
|
|
360
|
-
case
|
|
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 =
|
|
374
|
+
_context9.next = 16;
|
|
365
375
|
break;
|
|
366
376
|
}
|
|
367
377
|
return _context9.abrupt("return", firstKeyAgreement);
|
|
368
|
-
case
|
|
378
|
+
case 16:
|
|
369
379
|
// No valid key agreement found on resolution, lets derive one from a ED25519 key if we can
|
|
370
|
-
publicKeys =
|
|
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 =
|
|
383
|
+
_context9.next = 20;
|
|
374
384
|
break;
|
|
375
385
|
}
|
|
376
386
|
return _context9.abrupt("return", getDerivedAgreementKey(derivableKey));
|
|
377
|
-
case
|
|
387
|
+
case 20:
|
|
378
388
|
throw new Error("Unable to find or derive X25519 key agreement for DID: ".concat(did));
|
|
379
|
-
case
|
|
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
|
|
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
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
}
|
|
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
|
|
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/
|
|
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/
|
|
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/
|
|
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/
|
|
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
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
|
|
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
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
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:
|
|
253
|
-
|
|
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
|
|
9
|
+
await dockService.init({
|
|
10
10
|
address: 'wss://knox-1.dock.io',
|
|
11
11
|
});
|
|
12
12
|
});
|
package/lib/did/did-resolver.js
DELETED
|
@@ -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;
|
package/lib/did/did-resolver.mjs
DELETED
|
@@ -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 };
|
package/src/did/did-resolver.js
DELETED
|
@@ -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};
|