From 5f1ff200810d18df25e1aaaf9bb96b9b3b38aee1 Mon Sep 17 00:00:00 2001 From: Sasha Ilieva <sasha.ilieva@vereign.com> Date: Wed, 1 Apr 2020 13:55:56 +0300 Subject: [PATCH] Add everything back --- javascript/package.json | 1 + javascript/src/iframe/viamapi-iframe.js | 25 +++++++++++++++++++++++++ javascript/src/utilities/secrets.js | 2 +- javascript/yarn.lock | 5 +++++ 4 files changed, 32 insertions(+), 1 deletion(-) diff --git a/javascript/package.json b/javascript/package.json index c5cfef3..b824108 100644 --- a/javascript/package.json +++ b/javascript/package.json @@ -34,6 +34,7 @@ "penpal": "^3.0.3", "pkijs": "^2.1.69", "pvutils": "^1.0.16", + "secrets.js-grempe": "^2.0.0", "webcrypto-liner": "^1.1.4" }, "devDependencies": { diff --git a/javascript/src/iframe/viamapi-iframe.js b/javascript/src/iframe/viamapi-iframe.js index f9daffc..a60244e 100644 --- a/javascript/src/iframe/viamapi-iframe.js +++ b/javascript/src/iframe/viamapi-iframe.js @@ -40,6 +40,11 @@ import { STATUS_USER_BLOCKED } from "../constants/statuses"; import generateQrCode from "../utilities/generateQrCode"; +import { + generateRecoveryKey, + divideSecretToShares, + combineSecret +} from "../utilities/secrets"; const penpalMethods = require("../../temp/penpal-methods").default; const WopiAPI = require("./wopiapi-iframe"); @@ -979,6 +984,26 @@ const connection = Penpal.connectToParent({ console.log({ response }); if (response.code !== "200") return response; + const responseData = response.data; + console.log({ responseData }); + const contactsPublicKeys = Object.values(responseData).flat(); + console.log({ contactsPublicKeys }); + const sharesNumber = contactsPublicKeys.length; + const getThreshold = () => + sharesNumber === 3 ? 2 : parseInt(sharesNumber / 2); + const threshold = getThreshold(); + console.log({ threshold }); + const recoveryKey = generateRecoveryKey(512); + console.log({ recoveryKey }); + const recoveryKeyShares = divideSecretToShares( + recoveryKey, + sharesNumber, + threshold + ); + // Sanity check + const checkKey = combineSecret(recoveryKeyShares.slice(0, 1)); + console.log("first sanity check", checkKey === recoveryKey); + return response; } catch (error) { return { diff --git a/javascript/src/utilities/secrets.js b/javascript/src/utilities/secrets.js index d41a335..6793581 100644 --- a/javascript/src/utilities/secrets.js +++ b/javascript/src/utilities/secrets.js @@ -1,5 +1,5 @@ import { encryptMessage } from "./signingUtilities.js"; -// const secrets = require("secrets.js-grempe"); +const secrets = require("secrets.js-grempe"); /** * Function generates a random bits length string, and output it in hexadecimal format diff --git a/javascript/yarn.lock b/javascript/yarn.lock index e0a36ac..46577e9 100644 --- a/javascript/yarn.lock +++ b/javascript/yarn.lock @@ -4289,6 +4289,11 @@ schema-utils@^1.0.0: ajv-errors "^1.0.0" ajv-keywords "^3.1.0" +secrets.js-grempe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/secrets.js-grempe/-/secrets.js-grempe-2.0.0.tgz#65b32bf6bfe4f40e8ed0e44dc74f469e293a4ab8" + integrity sha512-4xkOIaDAg998dTFXZUJTOoVbdLHfB818SMeLJ69ABccgGEKokxsoRFupAFfAImloUSKv4QUGNMgKVbKMf6z0Ug== + select-hose@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" -- GitLab