fix: verify PBKDF2 key in pbkdf2keys store during prerequisites check
**Motivations :** - La vérification des prérequis ne vérifiait pas réellement la présence de la clé PBKDF2 dans le store pbkdf2keys - Il y avait une duplication de code pour la vérification de la clé PBKDF2 - Le mode de sécurité était recherché deux fois au lieu d'être réutilisé **Modifications :** - Déplacement de la vérification réelle de la clé PBKDF2 dans la section des prérequis - Vérification explicite de la présence de la clé dans le store pbkdf2keys avant de continuer - Stockage du mode de sécurité trouvé dans une variable au niveau supérieur pour réutilisation - Suppression de la vérification dupliquée plus tard dans le code - Amélioration des messages de log pour indiquer explicitement la vérification dans le store pbkdf2keys **Pages affectées :** - src/pages/wallet-setup/wallet-setup.ts (vérification des prérequis améliorée)
This commit is contained in:
parent
b0694eba22
commit
aedfa09bbc
@ -39,7 +39,7 @@ document.addEventListener('DOMContentLoaded', async () => {
|
||||
// Vérifier que le PBKDF2 key existe d'abord (prérequis le plus basique)
|
||||
const { SecureCredentialsService } = await import('../../services/secure-credentials.service');
|
||||
const secureCredentials = SecureCredentialsService.getInstance();
|
||||
|
||||
|
||||
let pbkdf2KeyFound = false;
|
||||
const securityModes = ['none', 'password', 'os', 'proton-pass'];
|
||||
for (const mode of securityModes) {
|
||||
@ -77,7 +77,7 @@ document.addEventListener('DOMContentLoaded', async () => {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (!wallet) {
|
||||
console.log('⚠️ Wallet still not found after retries, redirecting to wallet-setup...');
|
||||
updateStatus('⚠️ Redirection vers la configuration du wallet...', 'loading');
|
||||
|
||||
@ -52,6 +52,7 @@ document.addEventListener('DOMContentLoaded', async () => {
|
||||
updateProgress(10);
|
||||
|
||||
let services: any; // Déclarer services au niveau supérieur
|
||||
let currentMode: string | null = null; // Déclarer currentMode au niveau supérieur
|
||||
|
||||
try {
|
||||
console.log('🔄 Importing services...');
|
||||
@ -105,24 +106,50 @@ document.addEventListener('DOMContentLoaded', async () => {
|
||||
updateStatus('🔐 Génération des clés de sécurité...', 'loading');
|
||||
updateProgress(30);
|
||||
|
||||
try {
|
||||
const { SecureCredentialsService } = await import('../../services/secure-credentials.service');
|
||||
const secureCredentialsService = SecureCredentialsService.getInstance();
|
||||
// Vérifier les prérequis en base de données
|
||||
updateStatus('🔍 Vérification des prérequis...', 'loading');
|
||||
updateProgress(20);
|
||||
|
||||
// Vérifier les prérequis en base de données
|
||||
updateStatus('🔍 Vérification des prérequis...', 'loading');
|
||||
updateProgress(20);
|
||||
// CRITICAL: wallet-setup ne doit PAS générer de credentials
|
||||
// Les credentials et clé PBKDF2 doivent être créés dans security-setup
|
||||
// On vérifie que la clé PBKDF2 existe dans le store pbkdf2keys
|
||||
console.log('🔐 Checking for existing PBKDF2 key in pbkdf2keys store...');
|
||||
|
||||
const { SecureCredentialsService } = await import('../../services/secure-credentials.service');
|
||||
const secureCredentialsService = SecureCredentialsService.getInstance();
|
||||
|
||||
// Vérifier si des credentials existent déjà
|
||||
// CRITICAL: wallet-setup ne doit PAS générer de credentials
|
||||
// Les credentials et clé PBKDF2 doivent être créés dans security-setup
|
||||
// On vérifie juste que la clé PBKDF2 existe
|
||||
console.log('🔐 Checking for existing PBKDF2 key...');
|
||||
} catch (error) {
|
||||
// Erreur lors de la vérification, on continuera pour tester les clés PBKDF2
|
||||
console.log('ℹ️ Could not check credentials status, will test PBKDF2 keys directly');
|
||||
// Vérifier que la clé PBKDF2 existe pour au moins un mode de sécurité dans le store pbkdf2keys
|
||||
const securityModes: Array<'otp' | 'password' | 'none' | 'os' | 'proton-pass'> =
|
||||
['none', 'otp', 'password', 'os', 'proton-pass'];
|
||||
|
||||
for (const mode of securityModes) {
|
||||
try {
|
||||
const hasKey = await secureCredentialsService.hasPBKDF2Key(mode);
|
||||
if (hasKey) {
|
||||
const key = await secureCredentialsService.retrievePBKDF2Key(mode);
|
||||
if (key) {
|
||||
currentMode = mode;
|
||||
console.log(`✅ PBKDF2 key found in pbkdf2keys store for security mode: ${mode}`);
|
||||
break;
|
||||
}
|
||||
}
|
||||
} catch (error) {
|
||||
// Continue to next mode
|
||||
console.log(`⚠️ No PBKDF2 key found in pbkdf2keys store for mode ${mode}`);
|
||||
}
|
||||
}
|
||||
|
||||
if (!currentMode) {
|
||||
console.log('⚠️ No PBKDF2 key found in pbkdf2keys store, redirecting to security-setup...');
|
||||
updateStatus('⚠️ Redirection vers la configuration de sécurité...', 'loading');
|
||||
setTimeout(() => {
|
||||
window.location.href = '/src/pages/security-setup/security-setup.html';
|
||||
}, 1000);
|
||||
return;
|
||||
}
|
||||
|
||||
console.log('✅ Prerequisites verified: PBKDF2 key found in pbkdf2keys store for mode:', currentMode);
|
||||
|
||||
// Étape 3: Sauvegarde du wallet avec état birthday_waiting
|
||||
updateStatus('💰 Sauvegarde du portefeuille...', 'loading');
|
||||
updateProgress(60);
|
||||
@ -130,59 +157,8 @@ document.addEventListener('DOMContentLoaded', async () => {
|
||||
try {
|
||||
console.log('🔐 Sauvegarde du wallet avec état birthday_waiting...');
|
||||
|
||||
// DÉTECTER le mode de sécurité via la clé PBKDF2 disponible
|
||||
// Le mode de sécurité est identifié par la clé PBKDF2 qui fonctionne
|
||||
const { SecureCredentialsService } = await import('../../services/secure-credentials.service');
|
||||
const secureCredentialsService = SecureCredentialsService.getInstance();
|
||||
|
||||
// TEST: Log credentialId from sessionStorage
|
||||
const storedCredentialId = sessionStorage.getItem('webauthn_credential_id');
|
||||
if (storedCredentialId) {
|
||||
console.log('🔐 TEST: credentialId from sessionStorage in wallet-setup:', storedCredentialId);
|
||||
} else {
|
||||
console.log('🔐 TEST: No credentialId found in sessionStorage');
|
||||
}
|
||||
|
||||
console.log('🔍 Testing all security modes to find a PBKDF2 key...');
|
||||
|
||||
// Tester tous les modes de sécurité pour trouver une clé PBKDF2 valide
|
||||
// Mettre 'none' en premier pour éviter d'ouvrir la fenêtre du navigateur
|
||||
const allSecurityModes: Array<'otp' | 'password' | 'none' | 'os' | 'proton-pass'> =
|
||||
['none', 'otp', 'password', 'os', 'proton-pass'];
|
||||
|
||||
let currentMode: string | null = null;
|
||||
|
||||
for (const mode of allSecurityModes) {
|
||||
console.log(`🔍 Testing security mode: ${mode}`);
|
||||
try {
|
||||
// Vérifier d'abord silencieusement si une clé existe
|
||||
const hasKey = await secureCredentialsService.hasPBKDF2Key(mode);
|
||||
if (hasKey) {
|
||||
// Si une clé existe, essayer de la récupérer
|
||||
const key = await secureCredentialsService.retrievePBKDF2Key(mode);
|
||||
if (key) {
|
||||
currentMode = mode;
|
||||
console.log(`✅ PBKDF2 key found for security mode: ${mode}`);
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
console.log(`⚠️ No PBKDF2 key found for mode ${mode}`);
|
||||
}
|
||||
} catch (error) {
|
||||
console.log(`⚠️ No PBKDF2 key found for mode ${mode}`);
|
||||
}
|
||||
}
|
||||
|
||||
// CRITICAL: Si aucune clé PBKDF2 n'est disponible, rediriger vers security-setup
|
||||
if (!currentMode) {
|
||||
console.log('⚠️ No PBKDF2 key found, redirecting to security-setup...');
|
||||
updateStatus('⚠️ Redirection vers la configuration de sécurité...', 'loading');
|
||||
setTimeout(() => {
|
||||
window.location.href = '/src/pages/security-setup/security-setup.html';
|
||||
}, 1000);
|
||||
return;
|
||||
}
|
||||
|
||||
// Le mode de sécurité a déjà été trouvé dans la vérification des prérequis
|
||||
// currentMode est déjà défini et vérifié
|
||||
console.log('🔐 Using security mode for wallet encryption:', currentMode);
|
||||
|
||||
// Générer un wallet temporaire avec état birthday_waiting
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user