diff --git a/javascript/package.json b/javascript/package.json
index c5cfef3d0a040be51f69793a8137e639782623cc..b824108e21b83389eaaf17f5648be233a7627d20 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 f9daffc6ea6b15c0fd01b8718633099a5310a5a0..a60244e62857d2f2ca2b4e80a58d49b96a2e61fa 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 d41a335a4d774f77206d948fc55238a648e9216e..679358193ac96d9ba9a484b644f0d8f621970383 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 e0a36ac486014152da670433c3925a3127ccdbdc..46577e93cf9ffe3aabaa5431f2c5eb209f8a244e 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"