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