diff --git a/javascript/src/utilities/appUtility.js b/javascript/src/utilities/appUtility.js index 6529baafa016614ff9254af6aa2a8d265caab0f6..867369bb343e435f89ca41cf05772675f9bad687 100644 --- a/javascript/src/utilities/appUtility.js +++ b/javascript/src/utilities/appUtility.js @@ -84,9 +84,9 @@ export function destroyIdentityFromLocalStorage(key) { localStorage.removeItem("colors/" + key); localStorage.removeItem("blockFinishTime"); - let serializedIdentitiesList = localStorage.getItem("identities"); + const serializedIdentitiesList = localStorage.getItem("identities"); - let identities = JSON.parse(serializedIdentitiesList); + const identities = JSON.parse(serializedIdentitiesList); identities[key] = null; @@ -95,14 +95,18 @@ export function destroyIdentityFromLocalStorage(key) { localStorage.setItem("identities", JSON.stringify(identities)); } -export function failPincodeAttempt(password) { +function sleep(ms) { + return new Promise(resolve => setTimeout(resolve, ms)); +} + +export async function failPincodeAttempt(password) { let message = "Wrong pincode"; if (password !== "00000000") { let attempt = localStorage.getItem("attempt") || 1; attempt = parseInt(attempt); if (attempt === 9) { const identitiesTemp = listIdentitiesFromLocalStorage(); - for (let i in identitiesTemp) { + for (const i in identitiesTemp) { destroyIdentityFromLocalStorage(i); } message = "9 failed attempts. Identity is revoked!"; @@ -117,6 +121,7 @@ export function failPincodeAttempt(password) { localStorage.setItem("attempt", attempt + 1); } } + await sleep(1000); return message; } diff --git a/javascript/src/utilities/signingUtilities.js b/javascript/src/utilities/signingUtilities.js index 338c627008502fbe3caca72f966d1e15a4596df8..bb6027a04133449d4044806027472b419798a70e 100644 --- a/javascript/src/utilities/signingUtilities.js +++ b/javascript/src/utilities/signingUtilities.js @@ -650,7 +650,11 @@ export function decryptMessage(message, password) { return pvutils.arrayBufferToString(result); }) .catch(() => { - return Promise.reject(failPincodeAttempt(password)); + return new Promise((resolve, reject) => { + failPincodeAttempt(password).then((message) => { + reject(message); + }); + }); }); } else { return Promise.reject(getTimeLeftInLocalStorage());