diff --git a/javascript/src/constants/secrets.js b/javascript/src/constants/secrets.js
index d4adfa2e72594e0c5f44803d9ccb07bf170d8f11..41b9ef5ee76b93cffcc5141a9534e013ff065dbb 100644
--- a/javascript/src/constants/secrets.js
+++ b/javascript/src/constants/secrets.js
@@ -1 +1,2 @@
 export const RECOMMENDED_TRUSTEES = 3;
+export const THRESHOLD = 2;
diff --git a/javascript/src/utilities/secrets.js b/javascript/src/utilities/secrets.js
index 52307d750ce940b0ea06b8d7fc1c7f6b8e48b16b..8da18979d13f3466b644d85b7c016041962332bc 100644
--- a/javascript/src/utilities/secrets.js
+++ b/javascript/src/utilities/secrets.js
@@ -2,8 +2,7 @@ import secrets from "../lib/secrets";
 import { encryptMessage } from "./signingUtilities";
 import { encodeResponse } from "./appUtility";
 import { getSliceRange } from "./numberUtilities";
-
-const THRESHOLD = 2;
+import { THRESHOLD } from "../constants/secrets";
 
 /** Initialize
  */
@@ -58,21 +57,29 @@ export const getRecoveryKeyShares = (recoveryKey, sharesNumber) => {
   return divideSecretToShares(recoveryKey, sharesNumber, THRESHOLD);
 };
 
+function getSecretSliceRange(max) {
+  const { beginIndex, endIndex } = getSliceRange(max);
+  if (endIndex - beginIndex < THRESHOLD) {
+    return getSecretSliceRange(max);
+  }
+
+  return { beginIndex, endIndex };
+}
+
 export const checkRecoveryKeyCombine = (recoveryKey, recoveryKeyShares) => {
   let checkKey;
 
-  if (recoveryKeyShares.length > 1) {
-    const { beginIndex, endIndex } = getSliceRange(
-      recoveryKeyShares.length - 1
-    );
-    checkKey = combineSecret(recoveryKeyShares.slice(beginIndex, endIndex));
-    if (checkKey !== recoveryKey) {
-      return encodeResponse("400", "", "First sanity check failed");
-    }
-    checkKey = combineSecret(recoveryKeyShares.slice(0, 1));
-    if (checkKey === recoveryKey) {
-      return encodeResponse("400", "", "Second sanity check failed");
-    }
+  const { beginIndex, endIndex } = getSecretSliceRange(
+    recoveryKeyShares.length + 1
+  );
+  console.log({ beginIndex, endIndex });
+  checkKey = combineSecret(recoveryKeyShares.slice(beginIndex, endIndex));
+  if (checkKey !== recoveryKey) {
+    return encodeResponse("400", "", "First sanity check failed");
+  }
+  checkKey = combineSecret(recoveryKeyShares.slice(0, 2));
+  if (checkKey === recoveryKey) {
+    return encodeResponse("400", "", "Second sanity check failed");
   }
   checkKey = combineSecret(recoveryKeyShares);
   if (checkKey !== recoveryKey) {