diff --git a/example/encryptFile.html b/example/encryptFile.html index 047b2b68..f0b73a19 100644 --- a/example/encryptFile.html +++ b/example/encryptFile.html @@ -7,7 +7,7 @@ Document - + diff --git a/package-lock.json b/package-lock.json index 5265d138..31adc773 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "@virgilsecurity/e3kit", - "version": "0.3.9", + "version": "0.4.1", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -1422,17 +1422,6 @@ } } }, - "cp-file": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/cp-file/-/cp-file-7.0.0.tgz", - "integrity": "sha512-0Cbj7gyvFVApzpK/uhCtQ/9kE9UnYpxMzaq5nQQC/Dh4iaj5fxp7iEFIullrYwzj8nf0qnsI1Qsx34hAeAebvw==", - "requires": { - "graceful-fs": "^4.1.2", - "make-dir": "^3.0.0", - "nested-error-stacks": "^2.0.0", - "p-event": "^4.1.0" - } - }, "cpx": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/cpx/-/cpx-1.5.0.tgz", @@ -3165,7 +3154,8 @@ "graceful-fs": { "version": "4.1.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true }, "growl": { "version": "1.10.5", @@ -4567,21 +4557,6 @@ "sourcemap-codec": "^1.4.1" } }, - "make-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.0.0.tgz", - "integrity": "sha512-grNJDhb8b1Jm1qeqW5R/O63wUo4UXo2v2HMic6YT9i/HBlF93S8jkMgH7yugvY9ABDShH4VZMn8I+U8+fCNegw==", - "requires": { - "semver": "^6.0.0" - }, - "dependencies": { - "semver": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.0.0.tgz", - "integrity": "sha512-0UewU+9rFapKFnlbirLi3byoOuhrSsli/z/ihNnvM24vgF+8sNBiI1LZPBSH9wJKUwaUbw+s3hToDLCXkrghrQ==" - } - } - }, "map-cache": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", @@ -4847,11 +4822,6 @@ "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==", "dev": true }, - "nested-error-stacks": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-2.1.0.tgz", - "integrity": "sha512-AO81vsIO1k1sM4Zrd6Hu7regmJN1NSiAja10gc4bX3F0wd+9rQmcuHQaHVQCYIEC8iFXnE+mavh23GOt7wBgug==" - }, "next-tick": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", @@ -4865,9 +4835,9 @@ "dev": true }, "node-fetch": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.5.0.tgz", - "integrity": "sha512-YuZKluhWGJwCcUu4RlZstdAxr8bFfOVHakc1mplwHkk8J+tqM1Y5yraYvIUpeX8aY7+crCwiELJq7Vl0o0LWXw==" + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz", + "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==" }, "normalize-path": { "version": "1.0.0", @@ -5094,18 +5064,11 @@ "os-tmpdir": "^1.0.0" } }, - "p-event": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-event/-/p-event-4.1.0.tgz", - "integrity": "sha512-4vAd06GCsgflX4wHN1JqrMzBh/8QZ4j+rzp0cd2scXRwuBEv+QR3wrVA5aLhWDLw4y2WgDKvzWF3CCLmVM1UgA==", - "requires": { - "p-timeout": "^2.0.1" - } - }, "p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true }, "p-map": { "version": "1.2.0", @@ -5113,14 +5076,6 @@ "integrity": "sha1-5OlPMR6rvIYzoeeZCBZfyiYkG2s=", "dev": true }, - "p-timeout": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-2.0.1.tgz", - "integrity": "sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA==", - "requires": { - "p-finally": "^1.0.0" - } - }, "parse-glob": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", @@ -7407,9 +7362,9 @@ } }, "virgil-crypto": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/virgil-crypto/-/virgil-crypto-3.2.3.tgz", - "integrity": "sha512-S+Qo39isymVE2DbKDJNZZu4ENQa/niWNwtA0kDfn6+EoFRDzUL9A1QxwR3pTNoWwzcJqJujR2/hKQZSezANCwA==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/virgil-crypto/-/virgil-crypto-3.2.4.tgz", + "integrity": "sha512-ISJ1He0JyqRHElXUGMm4FQUrei8CmemJQxw0kUUUWqp12nNYgCcucdZ4fVqNWaQ50n5pamp9vtzTlLjrpAheyw==", "requires": { "node-fetch": "^2.1.2", "readable-stream": "^3.0.6", @@ -7439,9 +7394,9 @@ } }, "virgil-sdk": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/virgil-sdk/-/virgil-sdk-5.2.2.tgz", - "integrity": "sha512-/Up7GdTHCgcfxidCoUYEdeDGYX59Bvp8JCcecvRc4KQJ4KxBv0cCvfVMGUWQUmBa4siVyW9gXxqWx5ZHP6ehGA==", + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/virgil-sdk/-/virgil-sdk-5.2.3.tgz", + "integrity": "sha512-uxKjMcAUMazqq0dEvC0BKw4WqiQyhHl8n+BKDsKP2b9mqxWWHx+ndr4egnjpw3ewKaAsvG3LaIqAUDlDVcvrCA==", "requires": { "fetch-ponyfill": "^6.0.2", "mkdirp": "^0.5.1", diff --git a/package.json b/package.json index aed69f3f..80de4911 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@virgilsecurity/e3kit", - "version": "0.4.0", + "version": "0.4.1", "description": "End-to-end encryption with multiple device support powered by Virgil Security", "main": "./dist/e3kit.browser.es.js", "module": "./dist/e3kit.browser.es.js", @@ -23,7 +23,7 @@ "precommit": "lint-staged", "test": "karma start", "docs": "typedoc src && npm run build:browser:umd && npm run encryptFileDoc", - "encryptFileDoc": "cpx example/encryptFile.html docs && cpx dist/e3kit.browser.umd.min.js docs" + "encryptFileDoc": "cpx example/encryptFile.html docs" }, "lint-staged": { "src/**/*.ts": [ @@ -33,9 +33,9 @@ }, "dependencies": { "@virgilsecurity/keyknox": "^0.2.4", - "virgil-crypto": "^3.2.3", + "virgil-crypto": "^3.2.4", "virgil-pythia": "^0.2.3", - "virgil-sdk": "^5.2.2" + "virgil-sdk": "^5.2.3" }, "peerDependencies": {}, "devDependencies": { diff --git a/src/EThree.ts b/src/EThree.ts index d0a43498..ffeeece2 100644 --- a/src/EThree.ts +++ b/src/EThree.ts @@ -59,11 +59,11 @@ export default class EThree { /** * Instance of [VirgilCrypto](https://github.com/virgilsecurity/virgil-crypto-javascript). */ - virgilCrypto = new VirgilCrypto(); + virgilCrypto: VirgilCrypto; /** * Instance of VirgilCardCrypto. */ - cardCrypto = new VirgilCardCrypto(this.virgilCrypto); + cardCrypto: VirgilCardCrypto; /** * Instance of VirgilCardVerifier. */ @@ -105,10 +105,19 @@ export default class EThree { * @param identity - Identity of the current user. */ constructor(identity: string, options: EThreeCtorOptions) { - const opts = withDefaults(options, { apiUrl: DEFAULT_API_URL }); + const opts = withDefaults(options, { + apiUrl: DEFAULT_API_URL, + storageName: STORAGE_NAME, + useSha256Identifiers: false, + }); + this.identity = identity; this.accessTokenProvider = opts.accessTokenProvider; - this.keyEntryStorage = opts.keyEntryStorage || new KeyEntryStorage(STORAGE_NAME); + + this.keyEntryStorage = opts.keyEntryStorage || new KeyEntryStorage(opts.storageName); + this.virgilCrypto = new VirgilCrypto({ useSha256Identifiers: opts.useSha256Identifiers }); + this.cardCrypto = new VirgilCardCrypto(this.virgilCrypto); + this.cardVerifier = new VirgilCardVerifier(this.cardCrypto, { verifySelfSignature: opts.apiUrl === DEFAULT_API_URL, verifyVirgilSignature: opts.apiUrl === DEFAULT_API_URL, diff --git a/src/types.ts b/src/types.ts index a453b497..852ba9a6 100644 --- a/src/types.ts +++ b/src/types.ts @@ -17,6 +17,14 @@ export interface EThreeInitializeOptions { * Url of the Card Services. Used for development purposes. */ apiUrl?: string; + /** + * Indicates whether to use old algorithm to calculate keypair identifiers. + */ + useSha256Identifiers?: boolean; + /** + * Name of the IndexedDB database. Default `.virgil-local-storage`. + */ + storageName?: string; } /**