diff --git a/examples/react-app/src/setup.ts b/examples/react-app/src/setup.ts index 2abe6863e..1250f6971 100644 --- a/examples/react-app/src/setup.ts +++ b/examples/react-app/src/setup.ts @@ -4,8 +4,8 @@ import * as TG from 'daf-trust-graph' import * as DBG from 'daf-debug' import * as DidJwt from 'daf-did-jwt' import { DafUniversalResolver } from 'daf-resolver-universal' -import { EthrDidLocalStorageController } from 'daf-ethr-did-local-storage' -import { EthrDidMetamaskController } from 'daf-ethr-did-metamask' +import * as EthrLocal from 'daf-ethr-did-local-storage' +import * as MM from 'daf-ethr-did-metamask' import Debug from 'debug' Debug.enable('*') @@ -16,19 +16,27 @@ messageValidator.setNext(new DidJwt.MessageValidator()).setNext(new W3c.MessageV const actionHandler = new DBG.ActionHandler() actionHandler.setNext(new TG.ActionHandler()).setNext(new W3c.ActionHandler()) +const didResolver = new DafUniversalResolver({ url: 'https://uniresolver.io/1.0/identifiers/' }) + +const infuraProjectId = '5ffc47f65c4042ce847ef66a3fa70d4c' + const identityProviders: Daf.AbstractIdentityProvider[] = [ - // new EthrDidLocalStorageController() + new EthrLocal.IdentityProvider({ + network: 'rinkeby', + rpcUrl: 'https://rinkeby.infura.io/v3/' + infuraProjectId, + resolver: didResolver, + }), ] if (typeof window.ethereum !== 'undefined' && window.ethereum.isMetaMask) { - EthrDidMetamaskController.snapId = 'http://localhost:8082/package.json' - // identityProviders.push(new EthrDidMetamaskController()) + MM.IdentityProvider.snapId = 'http://localhost:8082/package.json' + identityProviders.push(new MM.IdentityProvider()) } export const core = new Daf.Core({ identityProviders, serviceControllers: [], - didResolver: new DafUniversalResolver({ url: 'https://uniresolver.io/1.0/identifiers/' }), + didResolver, messageValidator, actionHandler, }) diff --git a/packages/daf-ethr-did-fs/package-lock.json b/packages/daf-ethr-did-fs/package-lock.json index 31c6b4764..c933ec25f 100644 --- a/packages/daf-ethr-did-fs/package-lock.json +++ b/packages/daf-ethr-did-fs/package-lock.json @@ -4,11 +4,47 @@ "lockfileVersion": 1, "requires": true, "dependencies": { + "@babel/runtime": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.8.4.tgz", + "integrity": "sha512-neAp3zt80trRVBI1x0azq6c57aNBqYZH8KhMm3TaB7wEI5Q4A2SHfBHE8w9gOhI/lrqxtEbXZgQIrHP+wvSGwQ==", + "requires": { + "regenerator-runtime": "^0.13.2" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.13.3", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz", + "integrity": "sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw==" + } + } + }, + "@types/debug": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.5.tgz", + "integrity": "sha512-Q1y515GcOdTHgagaVFhHnIFQ38ygs/kmxdNpvpou+raI9UO3YZcHDngBSYKQklcKlvA7iuQlmIKbzvmxcOE9CQ==", + "dev": true + }, + "@types/ethjs-signer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@types/ethjs-signer/-/ethjs-signer-0.1.0.tgz", + "integrity": "sha512-Bom/6SlljFQexWsxYnMLcR18kQxUcqqfXWct7c1ZMNXYzyNNsF5RP60x7cdAhURnlYEmiTGCTO58YEhe063YbA==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, "@types/libsodium-wrappers": { "version": "0.7.7", "resolved": "https://registry.npmjs.org/@types/libsodium-wrappers/-/libsodium-wrappers-0.7.7.tgz", "integrity": "sha512-Li91pVKcLvQJK3ZolwCPo85oxf2gKBCApgnesRxYg4OVYchLXcJB2eivX8S87vfQVv6ZRnyCO1lLDosZGJfpRg==" }, + "@types/node": { + "version": "13.7.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-13.7.0.tgz", + "integrity": "sha512-GnZbirvmqZUzMgkFn70c74OQpTTUcCzlhQliTzYjQMqg+hVKcDnxdL19Ne3UdYzdMA/+W3eb646FWn/ZaT1NfQ==", + "dev": true + }, "DIDComm-js": { "version": "github:decentralized-identity/DIDComm-js#c8ca38df0b78c03d4e3c7e4cde13bd0a933e284a", "from": "github:decentralized-identity/DIDComm-js", @@ -28,21 +64,165 @@ } } }, + "babel-plugin-module-resolver": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-module-resolver/-/babel-plugin-module-resolver-3.2.0.tgz", + "integrity": "sha512-tjR0GvSndzPew/Iayf4uICWZqjBwnlMWjSx6brryfQ81F9rxBVqwDJtFCV8oOs0+vJeefK9TmdZtkIFdFe1UnA==", + "requires": { + "find-babel-config": "^1.1.0", + "glob": "^7.1.2", + "pkg-up": "^2.0.0", + "reselect": "^3.0.1", + "resolve": "^1.4.0" + } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + } + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, "base-58": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/base-58/-/base-58-0.0.1.tgz", "integrity": "sha1-hdPnAlEHVmGTM4j4MdHri49jFOM=" }, + "base64-js": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", + "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==" + }, + "base64url": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/base64url/-/base64url-3.0.1.tgz", + "integrity": "sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A==" + }, + "blakejs": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/blakejs/-/blakejs-1.1.0.tgz", + "integrity": "sha1-ad+S75U6qIylGjLfarHFShVfx6U=" + }, "bn.js": { "version": "4.11.8", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==" }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, "brorand": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" }, + "buffer": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.4.3.tgz", + "integrity": "sha512-zvj65TkFeIt3i6aj5bIvJDzjjQQGs4o/sNoezg1F1kYap9Nu2jcUdpwzRSJTHMMzG0H7bZkn4rNQpImhuxWX2A==", + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4" + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "core-js": { + "version": "2.6.11", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz", + "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==" + }, + "cross-fetch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.0.4.tgz", + "integrity": "sha512-MSHgpjQqgbT/94D4CyADeNoYh52zMkCX4pcJvPP5WqPsLFMKjr2TCMg381ox5qI0ii2dPwaLx/00477knXqXVw==", + "requires": { + "node-fetch": "2.6.0", + "whatwg-fetch": "3.0.0" + } + }, + "daf-core": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/daf-core/-/daf-core-1.4.1.tgz", + "integrity": "sha512-19oAASqlfhpddRqeM9WZe6XRGwRqoAiBNaVHrr3OKN5ZeBwcwFP8eCPI004+peg2QlHYyDGKUSnMXiLtVmPsKg==", + "requires": { + "blakejs": "^1.1.0", + "debug": "^4.1.1", + "events": "^3.0.0" + } + }, + "daf-resolver": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/daf-resolver/-/daf-resolver-1.1.0.tgz", + "integrity": "sha512-NE9jWnoRFznccgbDYW/E3AIfE+dC7vsmNbGZv6EZv108PPgin1B8a8tza5r/lJaRphIs/7V1ZVGNCt046eyXiA==", + "requires": { + "debug": "^4.1.1", + "did-resolver": "^1.1.0", + "ethr-did-resolver": "^1.0.3", + "nacl-did": "^1.0.0", + "web-did-resolver": "^1.2.0" + } + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "requires": { + "ms": "^2.1.1" + } + }, + "did-jwt": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/did-jwt/-/did-jwt-0.1.3.tgz", + "integrity": "sha512-hZvjC4bstxo6bqFIOAlX90LdSaA5uxMdg0zSFCPm2WwIhgHFp4SfVM6f5yq1ebA5/cJzcUr+MclnTrlEiixuiQ==", + "requires": { + "@babel/runtime": "^7.3.1", + "base64url": "^3.0.1", + "buffer": "^5.2.1", + "did-resolver": "0.0.6", + "elliptic": "^6.4.0", + "js-sha256": "^0.9.0", + "js-sha3": "^0.8.0", + "tweetnacl": "^1.0.1", + "tweetnacl-util": "^0.15.0" + }, + "dependencies": { + "did-resolver": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/did-resolver/-/did-resolver-0.0.6.tgz", + "integrity": "sha512-PqxzaoomTbJG3IzEouUGgppu3xrsbGKHS75zS3vS/Hfm56XxLpwIe7yFLokgXUbMWmLa0dczFHOibmebO4wRLA==" + } + } + }, + "did-resolver": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/did-resolver/-/did-resolver-1.1.0.tgz", + "integrity": "sha512-Q02Sc5VuQnJzzR8fQ/DzyCHiYb31WpQdocOsxppI66wwT4XalYRDeCr3a48mL6sYPQo76AkBh0mxte9ZBuQzxA==" + }, + "ed2curve-esm": { + "version": "0.3.0-alpha-1", + "resolved": "https://registry.npmjs.org/ed2curve-esm/-/ed2curve-esm-0.3.0-alpha-1.tgz", + "integrity": "sha512-Ydrqcf0NwKUBT4gL0Nnxp8/O5NG8iatN+/zbEgs/7eMGjgSVbgfE1YfWld2qYnoNIxOQvSWOFy5uBoaL3jCanw==", + "requires": { + "tweetnacl": "^1.0.1" + } + }, "elliptic": { "version": "6.5.2", "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.2.tgz", @@ -57,6 +237,320 @@ "minimalistic-crypto-utils": "^1.0.0" } }, + "ethjs-abi": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/ethjs-abi/-/ethjs-abi-0.2.1.tgz", + "integrity": "sha1-4KepOn6BFjqUR3utVu3lJKtt5TM=", + "requires": { + "bn.js": "4.11.6", + "js-sha3": "0.5.5", + "number-to-bn": "1.7.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha1-UzRK2xRhehP26N0s4okF0cC6MhU=" + }, + "js-sha3": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.5.tgz", + "integrity": "sha1-uvDA6MVK1ZA0R9+Wreekobynmko=" + } + } + }, + "ethjs-contract": { + "version": "0.1.9", + "resolved": "https://registry.npmjs.org/ethjs-contract/-/ethjs-contract-0.1.9.tgz", + "integrity": "sha1-HCdmiWpW1H7B1tZhgpxJzDilUgo=", + "requires": { + "ethjs-abi": "0.2.0", + "ethjs-filter": "0.1.5", + "ethjs-util": "0.1.3", + "js-sha3": "0.5.5" + }, + "dependencies": { + "bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha1-UzRK2xRhehP26N0s4okF0cC6MhU=" + }, + "ethjs-abi": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/ethjs-abi/-/ethjs-abi-0.2.0.tgz", + "integrity": "sha1-0+LCIQEVIPxJm3FoIDbBT8wvWyU=", + "requires": { + "bn.js": "4.11.6", + "js-sha3": "0.5.5", + "number-to-bn": "1.7.0" + } + }, + "js-sha3": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.5.tgz", + "integrity": "sha1-uvDA6MVK1ZA0R9+Wreekobynmko=" + } + } + }, + "ethjs-filter": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/ethjs-filter/-/ethjs-filter-0.1.5.tgz", + "integrity": "sha1-ARKvYBfCRnfjK4/esg5hlgGbdZg=" + }, + "ethjs-format": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/ethjs-format/-/ethjs-format-0.2.7.tgz", + "integrity": "sha512-uNYAi+r3/mvR3xYu2AfSXx5teP4ovy9z2FrRsblU+h2logsaIKZPi9V3bn3V7wuRcnG0HZ3QydgZuVaRo06C4Q==", + "requires": { + "bn.js": "4.11.6", + "ethjs-schema": "0.2.1", + "ethjs-util": "0.1.3", + "is-hex-prefixed": "1.0.0", + "number-to-bn": "1.7.0", + "strip-hex-prefix": "1.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha1-UzRK2xRhehP26N0s4okF0cC6MhU=" + } + } + }, + "ethjs-provider-http": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/ethjs-provider-http/-/ethjs-provider-http-0.1.6.tgz", + "integrity": "sha1-HsXZtL4lfvHValALIqdBmF6IlCA=", + "requires": { + "xhr2": "0.1.3" + } + }, + "ethjs-provider-signer": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/ethjs-provider-signer/-/ethjs-provider-signer-0.1.4.tgz", + "integrity": "sha1-a9XLOKjVsN30asHiOmDuoXFhca4=", + "requires": { + "ethjs-provider-http": "0.1.6", + "ethjs-rpc": "0.1.2" + }, + "dependencies": { + "bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha1-UzRK2xRhehP26N0s4okF0cC6MhU=" + }, + "ethjs-format": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/ethjs-format/-/ethjs-format-0.1.8.tgz", + "integrity": "sha1-kl7N2WXqcqKi2vKhIuW/gLWtUio=", + "requires": { + "bn.js": "4.11.6", + "ethjs-schema": "0.1.4", + "ethjs-util": "0.1.3", + "is-hex-prefixed": "1.0.0", + "number-to-bn": "1.7.0", + "strip-hex-prefix": "1.0.0" + } + }, + "ethjs-rpc": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ethjs-rpc/-/ethjs-rpc-0.1.2.tgz", + "integrity": "sha1-OaNFa1HFmu6vtbpVZYmlny2ojSY=", + "requires": { + "ethjs-format": "0.1.8" + } + }, + "ethjs-schema": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/ethjs-schema/-/ethjs-schema-0.1.4.tgz", + "integrity": "sha1-AyOhYzOxrOmo8daWpu5jRI/dRV8=" + } + } + }, + "ethjs-query": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/ethjs-query/-/ethjs-query-0.3.8.tgz", + "integrity": "sha512-/J5JydqrOzU8O7VBOwZKUWXxHDGr46VqNjBCJgBVNNda+tv7Xc8Y2uJc6aMHHVbeN3YOQ7YRElgIc0q1CI02lQ==", + "requires": { + "babel-runtime": "^6.26.0", + "ethjs-format": "0.2.7", + "ethjs-rpc": "0.2.0", + "promise-to-callback": "^1.0.0" + } + }, + "ethjs-rpc": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/ethjs-rpc/-/ethjs-rpc-0.2.0.tgz", + "integrity": "sha512-RINulkNZTKnj4R/cjYYtYMnFFaBcVALzbtEJEONrrka8IeoarNB9Jbzn+2rT00Cv8y/CxAI+GgY1d0/i2iQeOg==", + "requires": { + "promise-to-callback": "^1.0.0" + } + }, + "ethjs-schema": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/ethjs-schema/-/ethjs-schema-0.2.1.tgz", + "integrity": "sha512-DXd8lwNrhT9sjsh/Vd2Z+4pfyGxhc0POVnLBUfwk5udtdoBzADyq+sK39dcb48+ZU+2VgtwHxtGWnLnCfmfW5g==" + }, + "ethjs-signer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ethjs-signer/-/ethjs-signer-0.1.1.tgz", + "integrity": "sha1-Cvd5YeKe5FhgOqvTZguIaNM4ZEE=", + "requires": { + "elliptic": "6.3.2", + "js-sha3": "0.5.5", + "number-to-bn": "1.1.0", + "rlp": "2.0.0", + "strip-hex-prefix": "1.0.0" + }, + "dependencies": { + "elliptic": { + "version": "6.3.2", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.3.2.tgz", + "integrity": "sha1-5MgeCCnPCmWrcOmYuCMnI7XBvEg=", + "requires": { + "bn.js": "^4.4.0", + "brorand": "^1.0.1", + "hash.js": "^1.0.0", + "inherits": "^2.0.1" + } + }, + "js-sha3": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.5.tgz", + "integrity": "sha1-uvDA6MVK1ZA0R9+Wreekobynmko=" + }, + "number-to-bn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/number-to-bn/-/number-to-bn-1.1.0.tgz", + "integrity": "sha1-UaM4fFvGgDWrQFjGJhMvdn2dCL8=", + "requires": { + "bn.js": "4.11.6", + "is-hex-prefixed": "1.0.0", + "strip-hex-prefix": "1.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha1-UzRK2xRhehP26N0s4okF0cC6MhU=" + } + } + } + } + }, + "ethjs-util": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/ethjs-util/-/ethjs-util-0.1.3.tgz", + "integrity": "sha1-39XqSkANxeQhqInK9H4IGtp4u1U=", + "requires": { + "is-hex-prefixed": "1.0.0", + "strip-hex-prefix": "1.0.0" + } + }, + "ethr-did": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ethr-did/-/ethr-did-1.1.0.tgz", + "integrity": "sha512-sk5Q7mM+zC8IpffQaWXyCLZLSVMoasgpZJXZ++7ONslGEJQfs1fcvqvXZ5zLoHqYjVud9I8LpXTgbpGJsONY+A==", + "requires": { + "@babel/runtime": "^7.3.1", + "buffer": "^5.1.0", + "did-jwt": "^0.1.1", + "did-resolver": "^0.0.6", + "ethjs-contract": "^0.1.9", + "ethjs-provider-http": "^0.1.6", + "ethjs-query": "^0.3.8", + "ethr-did-resolver": "^0.2.0" + }, + "dependencies": { + "did-resolver": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/did-resolver/-/did-resolver-0.0.6.tgz", + "integrity": "sha512-PqxzaoomTbJG3IzEouUGgppu3xrsbGKHS75zS3vS/Hfm56XxLpwIe7yFLokgXUbMWmLa0dczFHOibmebO4wRLA==" + }, + "ethr-did-resolver": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/ethr-did-resolver/-/ethr-did-resolver-0.2.0.tgz", + "integrity": "sha512-6ysQhoDa8vGFesECQfxFkEV+DVFMhcWJ35qgMVk0F8a9i7Iy9Fl29cM/5U7JCgBjZoaPrSKCMmNK4rfFNrYc4A==", + "requires": { + "babel-plugin-module-resolver": "^3.1.1", + "babel-runtime": "^6.26.0", + "buffer": "^5.1.0", + "did-resolver": "0.0.6", + "ethjs-abi": "^0.2.1", + "ethjs-contract": "^0.1.9", + "ethjs-provider-http": "^0.1.6", + "ethjs-query": "^0.3.5", + "ethr-did-registry": "^0.0.3" + } + } + } + }, + "ethr-did-registry": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/ethr-did-registry/-/ethr-did-registry-0.0.3.tgz", + "integrity": "sha512-4BPvMGkxAK9vTduCq6D5b8ZqjteD2cvDIPPriXP6nnmPhWKFSxypo+AFvyQ0omJGa0cGTR+dkdI/8jiF7U/qaw==" + }, + "ethr-did-resolver": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/ethr-did-resolver/-/ethr-did-resolver-1.0.3.tgz", + "integrity": "sha512-9XtaB+4Ozc4W0gWHZ4J2HA+c+M7r0xcktmQI6v3GMjFto7b42Mq9zhh24kAxCqmtkqQhmUDJeqqSOIOwHrNbmQ==", + "requires": { + "buffer": "^5.1.0", + "did-resolver": "1.0.0", + "ethjs-abi": "^0.2.1", + "ethjs-contract": "^0.1.9", + "ethjs-provider-http": "^0.1.6", + "ethjs-query": "^0.3.5", + "ethr-did-registry": "^0.0.3" + }, + "dependencies": { + "did-resolver": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/did-resolver/-/did-resolver-1.0.0.tgz", + "integrity": "sha512-mgJG0oqlkG7jfRzW0yN9qKawp24M4thGFdfIaZI30SAJXhpkkjqbkRxqMZLJNwqXEM0cqFbXaiFDqnd9Q1UUaw==" + } + } + }, + "events": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.1.0.tgz", + "integrity": "sha512-Rv+u8MLHNOdMjTAFeT3nCjHn2aGlx435FP/sDHNaRhDEMwyI/aB22Kj2qIN8R0cw3z28psEQLYwxVKLsKrMgWg==" + }, + "find-babel-config": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/find-babel-config/-/find-babel-config-1.2.0.tgz", + "integrity": "sha512-jB2CHJeqy6a820ssiqwrKMeyC6nNdmrcgkKWJWmpoxpE8RKciYJXCcXRq1h2AzCo5I5BJeN2tkGEO3hLTuePRA==", + "requires": { + "json5": "^0.5.1", + "path-exists": "^3.0.0" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "requires": { + "locate-path": "^2.0.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, "hash.js": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", @@ -76,21 +570,64 @@ "minimalistic-crypto-utils": "^1.0.1" } }, + "ieee754": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", + "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, "inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, + "is-fn": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fn/-/is-fn-1.0.0.tgz", + "integrity": "sha1-lUPV3nvPWwiiLsiiC65uKG1RDYw=" + }, + "is-hex-prefixed": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz", + "integrity": "sha1-fY035q135dEnFIkTxXPggtd39VQ=" + }, + "js-sha256": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/js-sha256/-/js-sha256-0.9.0.tgz", + "integrity": "sha512-sga3MHh9sgQN2+pJ9VYZ+1LPwXOxuBJBA5nrR5/ofPfuiJBE2hnjsaN8se8JznOmGLN2p49Pe5U/ttafcs/apA==" + }, "js-sha3": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==" }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=" + }, "libsodium": { "version": "0.7.6", "resolved": "https://registry.npmjs.org/libsodium/-/libsodium-0.7.6.tgz", "integrity": "sha512-hPb/04sEuLcTRdWDtd+xH3RXBihpmbPCsKW/Jtf4PsvdyKh+D6z2D2gvp/5BfoxseP+0FCOg66kE+0oGUE/loQ==" }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, "minimalistic-assert": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", @@ -100,6 +637,195 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=" + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "nacl-did": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/nacl-did/-/nacl-did-1.0.1.tgz", + "integrity": "sha512-eGFtGk8v04QaYYQe0Y+suC0iLarPJh4NC5z/f1+JTQh7nRvA/+5ZT4eh/dtP/JGPtUkh2TdpdeiFtMJ0DEyIKQ==", + "requires": { + "did-resolver": "^1.0.0", + "ed2curve-esm": "^0.3.0-alpha-1", + "tweetnacl": "^1.0.1", + "tweetnacl-util": "^0.15.0" + } + }, + "node-fetch": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz", + "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==" + }, + "number-to-bn": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/number-to-bn/-/number-to-bn-1.7.0.tgz", + "integrity": "sha1-uzYjWS9+X54AMLGXe9QaDFP+HqA=", + "requires": { + "bn.js": "4.11.6", + "strip-hex-prefix": "1.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha1-UzRK2xRhehP26N0s4okF0cC6MhU=" + } + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" + }, + "pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz", + "integrity": "sha1-yBmscoBZpGHKscOImivjxJoATX8=", + "requires": { + "find-up": "^2.1.0" + } + }, + "promise-to-callback": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/promise-to-callback/-/promise-to-callback-1.0.0.tgz", + "integrity": "sha1-XSp0kBC/tn2WNZj805YHRqaP7vc=", + "requires": { + "is-fn": "^1.0.0", + "set-immediate-shim": "^1.0.1" + } + }, + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" + }, + "reselect": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/reselect/-/reselect-3.0.1.tgz", + "integrity": "sha1-79qpjqdFEyTQkrKyFjpqHXqaIUc=" + }, + "resolve": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz", + "integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==", + "requires": { + "path-parse": "^1.0.6" + } + }, + "rlp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/rlp/-/rlp-2.0.0.tgz", + "integrity": "sha1-nbOE/0uJqPYVY9kjldhiWxjzr7A=" + }, + "set-immediate-shim": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", + "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=" + }, + "strip-hex-prefix": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz", + "integrity": "sha1-DF8VX+8RUTczd96du1iNoFUA428=", + "requires": { + "is-hex-prefixed": "1.0.0" + } + }, + "tweetnacl": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", + "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==" + }, + "tweetnacl-util": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz", + "integrity": "sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==" + }, + "typescript": { + "version": "3.7.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.7.5.tgz", + "integrity": "sha512-/P5lkRXkWHNAbcJIiHPfRoKqyd7bsyCma1hZNUGfn20qm64T6ZBlrzprymeu918H+mB/0rIg2gGK/BXkhhYgBw==", + "dev": true + }, + "web-did-resolver": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/web-did-resolver/-/web-did-resolver-1.2.0.tgz", + "integrity": "sha512-nTZHRVhjZpUazmZdkuV9M5UA8BpkRQRxoVw1UTd+hreLR+q/xeQsYs55eWTOr9jmPG1fePTrgXcoFVfkz1YCbQ==", + "requires": { + "cross-fetch": "^3.0.4", + "did-resolver": "1.0.0" + }, + "dependencies": { + "did-resolver": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/did-resolver/-/did-resolver-1.0.0.tgz", + "integrity": "sha512-mgJG0oqlkG7jfRzW0yN9qKawp24M4thGFdfIaZI30SAJXhpkkjqbkRxqMZLJNwqXEM0cqFbXaiFDqnd9Q1UUaw==" + } + } + }, + "whatwg-fetch": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz", + "integrity": "sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q==" + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "xhr2": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/xhr2/-/xhr2-0.1.3.tgz", + "integrity": "sha1-y/xHWaabSoiOeM9PILBRA4dXvRE=" } } } diff --git a/packages/daf-ethr-did-fs/package.json b/packages/daf-ethr-did-fs/package.json index df8a2eae3..ec30b202e 100644 --- a/packages/daf-ethr-did-fs/package.json +++ b/packages/daf-ethr-did-fs/package.json @@ -17,15 +17,11 @@ "ethjs-provider-signer": "^0.1.4", "ethjs-signer": "^0.1.1", "ethr-did": "^1.1.0", - "js-sha3": "^0.8.0", - "libsodium-wrappers": "^0.7.6" + "js-sha3": "^0.8.0" }, "devDependencies": { "@types/debug": "^4.1.5", "@types/ethjs-signer": "^0.1.0", - "@types/libsodium-wrappers": "^0.7.7", - "ethjs-provider-signer": "^0.1.4", - "ethjs-signer": "^0.1.1", "typescript": "^3.7.2" }, "files": [ diff --git a/packages/daf-ethr-did-fs/src/declarations.d.ts b/packages/daf-ethr-did-fs/src/declarations.d.ts deleted file mode 100644 index 9b18d03ce..000000000 --- a/packages/daf-ethr-did-fs/src/declarations.d.ts +++ /dev/null @@ -1 +0,0 @@ -declare module 'ethjs-provider-signer' diff --git a/packages/daf-ethr-did-fs/src/identity-provider.ts b/packages/daf-ethr-did-fs/src/identity-provider.ts index 9a2e89b14..8a49e6fc4 100644 --- a/packages/daf-ethr-did-fs/src/identity-provider.ts +++ b/packages/daf-ethr-did-fs/src/identity-provider.ts @@ -1,5 +1,5 @@ import { AbstractIdentityProvider, AbstractIdentity, Resolver } from 'daf-core' -import { EthrIdentity } from './ethr-identity' +import { Identity } from './identity' import { sign } from 'ethjs-signer' const SignerProvider = require('ethjs-provider-signer') const EthrDID = require('ethr-did') @@ -8,7 +8,8 @@ import Debug from 'debug' const debug = Debug('daf:ethr-did-fs:identity-provider') const EC = require('elliptic').ec const secp256k1 = new EC('secp256k1') -import sodium from 'libsodium-wrappers' +import { DIDComm } from 'DIDComm-js' +const didcomm = new DIDComm() import { keccak_256 } from 'js-sha3' import { sha256 as sha256js, Message } from 'js-sha256' @@ -58,7 +59,7 @@ export class IdentityProvider extends AbstractIdentityProvider { this.rpcUrl = options.rpcUrl this.resolver = options.resolver this.type = options.network + '-' + this.type - this.description = 'did:ethr:' + options.network + ' ' + this.description + this.description = 'did:ethr ' + options.network + ' ' + this.description } private readFromFile(): FileContents { @@ -84,7 +85,7 @@ export class IdentityProvider extends AbstractIdentityProvider { } private identityFromSerialized(serialized: SerializedIdentity): AbstractIdentity { - return new EthrIdentity({ + return new Identity({ did: serialized.did, keys: serialized.keys, identityProviderType: this.type, @@ -115,7 +116,7 @@ export class IdentityProvider extends AbstractIdentityProvider { } const serialized = { - did: 'did:ethr:' + this.network + ':' + address, + did: 'did:ethr:' + (this.network !== 'mainnet' ? this.network + ':' : '') + address, controller: key, keys: [key], } @@ -192,8 +193,8 @@ export class IdentityProvider extends AbstractIdentityProvider { let address switch (type) { case 'Ed25519': - await sodium.ready - const keyPair = sodium.crypto_sign_keypair() + await didcomm.ready + const keyPair = await didcomm.generateKeyPair() privateKey = Buffer.from(keyPair.privateKey).toString('hex') publicKey = Buffer.from(keyPair.publicKey).toString('hex') usg = 'veriKey' diff --git a/packages/daf-ethr-did-fs/src/ethr-identity.ts b/packages/daf-ethr-did-fs/src/identity.ts similarity index 97% rename from packages/daf-ethr-did-fs/src/ethr-identity.ts rename to packages/daf-ethr-did-fs/src/identity.ts index a4c369fe9..b45049722 100644 --- a/packages/daf-ethr-did-fs/src/ethr-identity.ts +++ b/packages/daf-ethr-did-fs/src/identity.ts @@ -4,7 +4,7 @@ import { Key } from './identity-provider' import { DIDComm } from 'DIDComm-js' const didcomm = new DIDComm() -export class EthrIdentity extends AbstractIdentity { +export class Identity extends AbstractIdentity { public readonly did: string public readonly identityProviderType: string private readonly keys: Key[] diff --git a/packages/daf-ethr-did-local-storage/package-lock.json b/packages/daf-ethr-did-local-storage/package-lock.json new file mode 100644 index 000000000..6517fa81e --- /dev/null +++ b/packages/daf-ethr-did-local-storage/package-lock.json @@ -0,0 +1,266 @@ +{ + "name": "daf-ethr-did-local-storage", + "version": "1.4.1", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@types/ethjs-signer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@types/ethjs-signer/-/ethjs-signer-0.1.0.tgz", + "integrity": "sha512-Bom/6SlljFQexWsxYnMLcR18kQxUcqqfXWct7c1ZMNXYzyNNsF5RP60x7cdAhURnlYEmiTGCTO58YEhe063YbA==", + "requires": { + "@types/node": "*" + } + }, + "@types/libsodium-wrappers": { + "version": "0.7.7", + "resolved": "https://registry.npmjs.org/@types/libsodium-wrappers/-/libsodium-wrappers-0.7.7.tgz", + "integrity": "sha512-Li91pVKcLvQJK3ZolwCPo85oxf2gKBCApgnesRxYg4OVYchLXcJB2eivX8S87vfQVv6ZRnyCO1lLDosZGJfpRg==" + }, + "@types/node": { + "version": "13.7.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-13.7.0.tgz", + "integrity": "sha512-GnZbirvmqZUzMgkFn70c74OQpTTUcCzlhQliTzYjQMqg+hVKcDnxdL19Ne3UdYzdMA/+W3eb646FWn/ZaT1NfQ==" + }, + "DIDComm-js": { + "version": "github:decentralized-identity/DIDComm-js#c8ca38df0b78c03d4e3c7e4cde13bd0a933e284a", + "from": "github:decentralized-identity/DIDComm-js", + "requires": { + "@types/libsodium-wrappers": "^0.7.5", + "base-58": "0.0.1", + "libsodium-wrappers": "^0.7.5" + } + }, + "base-58": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/base-58/-/base-58-0.0.1.tgz", + "integrity": "sha1-hdPnAlEHVmGTM4j4MdHri49jFOM=" + }, + "base64url": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/base64url/-/base64url-3.0.1.tgz", + "integrity": "sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A==" + }, + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==" + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" + }, + "elliptic": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.2.tgz", + "integrity": "sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw==", + "requires": { + "bn.js": "^4.4.0", + "brorand": "^1.0.1", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.0" + } + }, + "ethjs-format": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/ethjs-format/-/ethjs-format-0.1.8.tgz", + "integrity": "sha1-kl7N2WXqcqKi2vKhIuW/gLWtUio=", + "requires": { + "bn.js": "4.11.6", + "ethjs-schema": "0.1.4", + "ethjs-util": "0.1.3", + "is-hex-prefixed": "1.0.0", + "number-to-bn": "1.7.0", + "strip-hex-prefix": "1.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha1-UzRK2xRhehP26N0s4okF0cC6MhU=" + } + } + }, + "ethjs-provider-http": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/ethjs-provider-http/-/ethjs-provider-http-0.1.6.tgz", + "integrity": "sha1-HsXZtL4lfvHValALIqdBmF6IlCA=", + "requires": { + "xhr2": "0.1.3" + } + }, + "ethjs-provider-signer": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/ethjs-provider-signer/-/ethjs-provider-signer-0.1.4.tgz", + "integrity": "sha1-a9XLOKjVsN30asHiOmDuoXFhca4=", + "requires": { + "ethjs-provider-http": "0.1.6", + "ethjs-rpc": "0.1.2" + } + }, + "ethjs-rpc": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ethjs-rpc/-/ethjs-rpc-0.1.2.tgz", + "integrity": "sha1-OaNFa1HFmu6vtbpVZYmlny2ojSY=", + "requires": { + "ethjs-format": "0.1.8" + } + }, + "ethjs-schema": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/ethjs-schema/-/ethjs-schema-0.1.4.tgz", + "integrity": "sha1-AyOhYzOxrOmo8daWpu5jRI/dRV8=" + }, + "ethjs-signer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ethjs-signer/-/ethjs-signer-0.1.1.tgz", + "integrity": "sha1-Cvd5YeKe5FhgOqvTZguIaNM4ZEE=", + "requires": { + "elliptic": "6.3.2", + "js-sha3": "0.5.5", + "number-to-bn": "1.1.0", + "rlp": "2.0.0", + "strip-hex-prefix": "1.0.0" + }, + "dependencies": { + "elliptic": { + "version": "6.3.2", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.3.2.tgz", + "integrity": "sha1-5MgeCCnPCmWrcOmYuCMnI7XBvEg=", + "requires": { + "bn.js": "^4.4.0", + "brorand": "^1.0.1", + "hash.js": "^1.0.0", + "inherits": "^2.0.1" + } + }, + "js-sha3": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.5.tgz", + "integrity": "sha1-uvDA6MVK1ZA0R9+Wreekobynmko=" + }, + "number-to-bn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/number-to-bn/-/number-to-bn-1.1.0.tgz", + "integrity": "sha1-UaM4fFvGgDWrQFjGJhMvdn2dCL8=", + "requires": { + "bn.js": "4.11.6", + "is-hex-prefixed": "1.0.0", + "strip-hex-prefix": "1.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha1-UzRK2xRhehP26N0s4okF0cC6MhU=" + } + } + } + } + }, + "ethjs-util": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/ethjs-util/-/ethjs-util-0.1.3.tgz", + "integrity": "sha1-39XqSkANxeQhqInK9H4IGtp4u1U=", + "requires": { + "is-hex-prefixed": "1.0.0", + "strip-hex-prefix": "1.0.0" + } + }, + "hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "is-hex-prefixed": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz", + "integrity": "sha1-fY035q135dEnFIkTxXPggtd39VQ=" + }, + "js-sha3": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", + "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==" + }, + "libsodium": { + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/libsodium/-/libsodium-0.7.6.tgz", + "integrity": "sha512-hPb/04sEuLcTRdWDtd+xH3RXBihpmbPCsKW/Jtf4PsvdyKh+D6z2D2gvp/5BfoxseP+0FCOg66kE+0oGUE/loQ==" + }, + "libsodium-wrappers": { + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/libsodium-wrappers/-/libsodium-wrappers-0.7.6.tgz", + "integrity": "sha512-OUO2CWW5bHdLr6hkKLHIKI4raEkZrf3QHkhXsJ1yCh6MZ3JDA7jFD3kCATNquuGSG6MjjPHQIQms0y0gBDzjQg==", + "requires": { + "libsodium": "0.7.6" + } + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=" + }, + "number-to-bn": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/number-to-bn/-/number-to-bn-1.7.0.tgz", + "integrity": "sha1-uzYjWS9+X54AMLGXe9QaDFP+HqA=", + "requires": { + "bn.js": "4.11.6", + "strip-hex-prefix": "1.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha1-UzRK2xRhehP26N0s4okF0cC6MhU=" + } + } + }, + "rlp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/rlp/-/rlp-2.0.0.tgz", + "integrity": "sha1-nbOE/0uJqPYVY9kjldhiWxjzr7A=" + }, + "strip-hex-prefix": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz", + "integrity": "sha1-DF8VX+8RUTczd96du1iNoFUA428=", + "requires": { + "is-hex-prefixed": "1.0.0" + } + }, + "xhr2": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/xhr2/-/xhr2-0.1.3.tgz", + "integrity": "sha1-y/xHWaabSoiOeM9PILBRA4dXvRE=" + } + } +} diff --git a/packages/daf-ethr-did-local-storage/package.json b/packages/daf-ethr-did-local-storage/package.json index d4e54f66d..424ec615d 100644 --- a/packages/daf-ethr-did-local-storage/package.json +++ b/packages/daf-ethr-did-local-storage/package.json @@ -8,9 +8,16 @@ "build": "tsc" }, "dependencies": { + "@types/ethjs-signer": "^0.1.0", + "DIDComm-js": "github:decentralized-identity/DIDComm-js", + "base64url": "^3.0.1", "daf-core": "^1.4.1", "debug": "^4.1.1", - "ethr-did": "^1.1.0" + "elliptic": "^6.5.2", + "ethjs-provider-signer": "^0.1.4", + "ethjs-signer": "^0.1.1", + "ethr-did": "^1.1.0", + "js-sha3": "^0.8.0" }, "devDependencies": { "@types/debug": "^4.1.5", diff --git a/packages/daf-ethr-did-local-storage/src/identity-controller.ts b/packages/daf-ethr-did-local-storage/src/identity-controller.ts deleted file mode 100644 index cb275ec70..000000000 --- a/packages/daf-ethr-did-local-storage/src/identity-controller.ts +++ /dev/null @@ -1,110 +0,0 @@ -import Debug from 'debug' -import { AbstractIdentityProvider, AbstractIdentity } from 'daf-core' -const EthrDID = require('ethr-did').default -const debug = Debug('daf:ethr-did-local-storage:identity-controller') - -interface Identity { - address: string - privateKey: string - did: string -} - -interface StorageContents { - identities: Identity[] -} - -export class EthrDidLocalStorageController { - public type = 'ethr-did-local-storage' - - // private readFromStorage(): StorageContents { - // try { - // const raw = window.localStorage.getItem(this.type) || '' - // return JSON.parse(raw) as StorageContents - // } catch (e) { - // return { identities: [] } - // } - // } - - // private writeToStorage(json: StorageContents) { - // return window.localStorage.setItem(this.type, JSON.stringify(json)) - // } - - // private issuerFromIdentity(identity: Identity): Issuer { - // const ethrDid = new EthrDID({ ...identity }) - // const issuer: Issuer = { - // did: identity.did, - // signer: ethrDid.signer, - // type: this.type, - // ethereumAddress: ethrDid.address, - // } - // return issuer - // } - - // async listDids() { - // const { identities } = this.readFromStorage() - // return identities.map(identity => identity.did) - // } - - // async listIssuers() { - // const { identities } = this.readFromStorage() - // return identities.map(this.issuerFromIdentity.bind(this)) as Issuer[] - // } - - // async create() { - // const { identities } = this.readFromStorage() - // const keyPair = EthrDID.createKeyPair() - // const ethrDid = new EthrDID({ ...keyPair }) - - // this.writeToStorage({ - // identities: [ - // ...identities, - // { - // did: ethrDid.did, - // address: ethrDid.address, - // privateKey: keyPair.privateKey, - // }, - // ], - // }) - - // debug('Created', ethrDid.did) - - // return ethrDid.did - // } - - // async delete(did: string) { - // const { identities } = this.readFromStorage() - - // if (!identities.find(identity => identity.did === did)) { - // return false - // } - - // const filteredIdentities = identities.filter(identity => identity.did !== did) - - // this.writeToStorage({ identities: filteredIdentities }) - - // debug('Deleted', did) - - // return true - // } - - // async issuer(did: string) { - // const { identities } = this.readFromStorage() - - // const identity = identities.find(identity => identity.did === did) - // if (!identity) { - // return Promise.reject('Did not found: ' + did) - // } - - // return this.issuerFromIdentity(identity) - // } - - // async export(did: string) { - // const { identities } = this.readFromStorage() - - // const identity = identities.find(identity => identity.did === did) - // if (!identity) { - // return Promise.reject('Did not found: ' + did) - // } - // return identity.privateKey - // } -} diff --git a/packages/daf-ethr-did-local-storage/src/identity-provider.ts b/packages/daf-ethr-did-local-storage/src/identity-provider.ts new file mode 100644 index 000000000..fd180ed13 --- /dev/null +++ b/packages/daf-ethr-did-local-storage/src/identity-provider.ts @@ -0,0 +1,224 @@ +import { AbstractIdentityProvider, AbstractIdentity, Resolver } from 'daf-core' +import { Identity } from './identity' +import { sign } from 'ethjs-signer' +const SignerProvider = require('ethjs-provider-signer') +const EthrDID = require('ethr-did') +import Debug from 'debug' +const debug = Debug('daf:ethr-did-local-storage:identity-provider') +const EC = require('elliptic').ec +const secp256k1 = new EC('secp256k1') +import { DIDComm } from 'DIDComm-js' +const didcomm = new DIDComm() + +import { keccak_256 } from 'js-sha3' +import { sha256 as sha256js, Message } from 'js-sha256' + +export function sha256(payload: Message): Buffer { + return Buffer.from(sha256js.arrayBuffer(payload)) +} + +function keccak(data: any): Buffer { + return Buffer.from(keccak_256.arrayBuffer(data)) +} +export function toEthereumAddress(hexPublicKey: string): string { + return `0x${keccak(Buffer.from(hexPublicKey.slice(2), 'hex')) + .slice(-20) + .toString('hex')}` +} + +export interface Key { + type: string + privateKey: string + publicKey: string + address?: string +} + +interface SerializedIdentity { + did: string + controller: Key + keys: Key[] +} + +interface FileContents { + [did: string]: SerializedIdentity +} + +export class IdentityProvider extends AbstractIdentityProvider { + public type = 'ethr-did-local-storage' + public description = 'identities saved in localStorage' + private network: string + private rpcUrl: string + private resolver: Resolver + + constructor(options: { network: string; rpcUrl: string; resolver: Resolver }) { + super() + this.network = options.network + this.rpcUrl = options.rpcUrl + this.resolver = options.resolver + this.type = options.network + '-' + this.type + this.description = 'did:ethr ' + options.network + ' ' + this.description + } + + private readFromFile(): FileContents { + try { + const raw = window.localStorage.getItem(this.type) || '' + return JSON.parse(raw) as FileContents + } catch (e) { + return {} + } + } + + private writeToFile(json: FileContents) { + return window.localStorage.setItem(this.type, JSON.stringify(json)) + } + + private async getSerializedIdentity(did: string): Promise { + const identities = this.readFromFile() + const identity = identities[did] + if (!identity) { + return Promise.reject('Did not found: ' + did) + } + return identity + } + + private identityFromSerialized(serialized: SerializedIdentity): AbstractIdentity { + return new Identity({ + did: serialized.did, + keys: serialized.keys, + identityProviderType: this.type, + resolver: this.resolver, + }) + } + + async getIdentities() { + const identities = this.readFromFile() + const result = [] + for (const did of Object.keys(identities)) { + result.push(this.identityFromSerialized(identities[did])) + } + return result + } + + async createIdentity() { + const kp = secp256k1.genKeyPair() + const publicKey = kp.getPublic('hex') + const privateKey = kp.getPrivate('hex') + const address = toEthereumAddress(publicKey) + + const key = { + privateKey, + publicKey, + address, + type: 'Secp256k1', + } + + const serialized = { + did: 'did:ethr:' + (this.network !== 'mainnet' ? this.network + ':' : '') + address, + controller: key, + keys: [key], + } + + this.saveIdentity(serialized) + return this.identityFromSerialized(serialized) + } + + async saveIdentity(serialized: SerializedIdentity) { + const identities = this.readFromFile() + identities[serialized.did] = serialized + this.writeToFile(identities) + debug('Saved', serialized.did) + } + + async deleteIdentity(did: string) { + const identities = this.readFromFile() + delete identities[did] + this.writeToFile(identities) + debug('Deleted', did) + return true + } + + async getIdentity(did: string) { + const serialized = await this.getSerializedIdentity(did) + return this.identityFromSerialized(serialized) + } + + async exportIdentity(did: string) { + const serialized = await this.getSerializedIdentity(did) + return JSON.stringify(serialized) + } + + async importIdentity(json: string) { + const serialized = JSON.parse(json) + this.saveIdentity(serialized) + return this.identityFromSerialized(serialized) + } + + async addService( + did: string, + service: { id: string; type: string; serviceEndpoint: string }, + ): Promise { + const serialized = await this.getSerializedIdentity(did) + + const provider = new SignerProvider(this.rpcUrl, { + signTransaction: (rawTx: any, cb: any) => + cb(null, sign(rawTx, '0x' + serialized.controller.privateKey)), + }) + const ethrDid = new EthrDID({ address: serialized.controller.address, provider }) + + const attribute = 'did/svc/' + service.type + const value = service.serviceEndpoint + const ttl = 86400 + const gas = 100000 + debug('ethrDid.setAttribute', { attribute, value, ttl, gas }) + const txHash = await ethrDid.setAttribute(attribute, value, ttl, gas) + debug({ txHash }) + return txHash + } + + async addPublicKey(did: string, type: 'Ed25519' | 'Secp256k1', proofPurpose?: string[]): Promise { + const serialized = await this.getSerializedIdentity(did) + + const provider = new SignerProvider(this.rpcUrl, { + signTransaction: (rawTx: any, cb: any) => + cb(null, sign(rawTx, '0x' + serialized.controller.privateKey)), + }) + const ethrDid = new EthrDID({ address: serialized.controller.address, provider }) + + let usg = '' + let publicKey + let privateKey + let address + switch (type) { + case 'Ed25519': + await didcomm.ready + const keyPair = await didcomm.generateKeyPair() + privateKey = Buffer.from(keyPair.privateKey).toString('hex') + publicKey = Buffer.from(keyPair.publicKey).toString('hex') + usg = 'veriKey' + break + case 'Secp256k1': + const kp = secp256k1.genKeyPair() + publicKey = kp.getPublic('hex') + privateKey = kp.getPrivate('hex') + address = toEthereumAddress(publicKey) + usg = 'veriKey' + break + } + + const attribute = 'did/pub/' + type + '/' + usg + '/hex' + const value = '0x' + publicKey + const ttl = 86400 + const gas = 100000 + debug('ethrDid.setAttribute', { attribute, value, ttl, gas }) + const txHash = await ethrDid.setAttribute(attribute, value, ttl, gas) + + if (txHash) { + debug({ txHash }) + serialized.keys = [...serialized.keys, { privateKey, publicKey, address, type }] + this.saveIdentity(serialized) + return true + } + + return false + } +} diff --git a/packages/daf-ethr-did-local-storage/src/identity.ts b/packages/daf-ethr-did-local-storage/src/identity.ts new file mode 100644 index 000000000..b45049722 --- /dev/null +++ b/packages/daf-ethr-did-local-storage/src/identity.ts @@ -0,0 +1,58 @@ +import { AbstractIdentity, Resolver } from 'daf-core' +import { SimpleSigner } from 'did-jwt' +import { Key } from './identity-provider' +import { DIDComm } from 'DIDComm-js' +const didcomm = new DIDComm() + +export class Identity extends AbstractIdentity { + public readonly did: string + public readonly identityProviderType: string + private readonly keys: Key[] + private readonly resolver: Resolver + + constructor(options: { identityProviderType: string; did: string; keys: Key[]; resolver: Resolver }) { + super() + this.did = options.did + this.identityProviderType = options.identityProviderType + this.keys = options.keys + this.resolver = options.resolver + } + + public signer(keyId?: string) { + const key = this.keys.find(item => item.type === 'Secp256k1') + if (!key) throw Error('Key not found') + return SimpleSigner(key.privateKey) + } + + async didDoc() { + return this.resolver.resolve(this.did) + } + async encrypt(to: string, data: string): Promise { + const didDoc = await this.resolver.resolve(to) + const publicKey = didDoc?.publicKey.find(item => item.type == 'Ed25519VerificationKey2018') + if (publicKey?.publicKeyHex) { + await didcomm.ready + return await didcomm.pack_anon_msg_for_recipients(data, [ + Uint8Array.from(Buffer.from(publicKey.publicKeyHex, 'hex')), + ]) + } else { + return Promise.reject('Encryption public key not found for ' + to) + } + } + async decrypt(encrypted: string): Promise { + const key = this.keys.find(item => item.type === 'Ed25519') + if (!key) throw Error('Encryption key not found for ' + this.did) + await didcomm.ready + try { + const unpackMessage = await didcomm.unpackMessage(encrypted, { + keyType: 'ed25519', + publicKey: Uint8Array.from(Buffer.from(key.publicKey, 'hex')), + privateKey: Uint8Array.from(Buffer.from(key.privateKey, 'hex')), + }) + + return unpackMessage.message + } catch (e) { + return Promise.reject('Error: ' + e.message) + } + } +} diff --git a/packages/daf-ethr-did-local-storage/src/index.ts b/packages/daf-ethr-did-local-storage/src/index.ts index 108f6fb25..531854f24 100644 --- a/packages/daf-ethr-did-local-storage/src/index.ts +++ b/packages/daf-ethr-did-local-storage/src/index.ts @@ -1 +1 @@ -export { EthrDidLocalStorageController } from './identity-controller' +export { IdentityProvider } from './identity-provider' diff --git a/packages/daf-ethr-did-metamask/src/identity-provider.ts b/packages/daf-ethr-did-metamask/src/identity-provider.ts index bb04ca9a9..3516c46df 100644 --- a/packages/daf-ethr-did-metamask/src/identity-provider.ts +++ b/packages/daf-ethr-did-metamask/src/identity-provider.ts @@ -27,8 +27,12 @@ export class MetamaskIdentity extends AbstractIdentity { async didDoc() { return Promise.reject('not implemented') } - async encrypt(): Promise {} - async decrypt(): Promise {} + async encrypt(): Promise { + return Promise.reject('not implemented') + } + async decrypt(): Promise { + return Promise.reject('not implemented') + } } export class IdentityProvider extends AbstractIdentityProvider { diff --git a/packages/daf-ethr-did-react-native/src/identity-provider.ts b/packages/daf-ethr-did-react-native/src/identity-provider.ts index 42bcd9f27..9ecde9b9c 100644 --- a/packages/daf-ethr-did-react-native/src/identity-provider.ts +++ b/packages/daf-ethr-did-react-native/src/identity-provider.ts @@ -35,8 +35,12 @@ export class Identity extends AbstractIdentity { async didDoc() { return Promise.reject('not implemented') } - async encrypt(): Promise {} - async decrypt(): Promise {} + async encrypt(): Promise { + return Promise.reject('not implemented') + } + async decrypt(): Promise { + return Promise.reject('not implemented') + } } export class IdentityProvider extends AbstractIdentityProvider { diff --git a/yarn.lock b/yarn.lock index 6a051c668..8dd0c99b5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3130,6 +3130,14 @@ base-58 "0.0.1" libsodium-wrappers "^0.7.5" +"DIDComm-js@github:decentralized-identity/DIDComm-js": + version "0.6.0" + resolved "https://codeload.github.com/decentralized-identity/DIDComm-js/tar.gz/c8ca38df0b78c03d4e3c7e4cde13bd0a933e284a" + dependencies: + "@types/libsodium-wrappers" "^0.7.5" + base-58 "0.0.1" + libsodium-wrappers "^0.7.5" + JSONStream@^1.0.4, JSONStream@^1.3.4, JSONStream@^1.3.5: version "1.3.5" resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0"