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
@ -52,6 +52,7 @@ document.addEventListener('DOMContentLoaded', async () => {
|
|||||||
updateProgress(10);
|
updateProgress(10);
|
||||||
|
|
||||||
let services: any; // Déclarer services au niveau supérieur
|
let services: any; // Déclarer services au niveau supérieur
|
||||||
|
let currentMode: string | null = null; // Déclarer currentMode au niveau supérieur
|
||||||
|
|
||||||
try {
|
try {
|
||||||
console.log('🔄 Importing services...');
|
console.log('🔄 Importing services...');
|
||||||
@ -105,24 +106,50 @@ document.addEventListener('DOMContentLoaded', async () => {
|
|||||||
updateStatus('🔐 Génération des clés de sécurité...', 'loading');
|
updateStatus('🔐 Génération des clés de sécurité...', 'loading');
|
||||||
updateProgress(30);
|
updateProgress(30);
|
||||||
|
|
||||||
try {
|
// Vérifier les prérequis en base de données
|
||||||
const { SecureCredentialsService } = await import('../../services/secure-credentials.service');
|
updateStatus('🔍 Vérification des prérequis...', 'loading');
|
||||||
const secureCredentialsService = SecureCredentialsService.getInstance();
|
updateProgress(20);
|
||||||
|
|
||||||
// Vérifier les prérequis en base de données
|
// CRITICAL: wallet-setup ne doit PAS générer de credentials
|
||||||
updateStatus('🔍 Vérification des prérequis...', 'loading');
|
// Les credentials et clé PBKDF2 doivent être créés dans security-setup
|
||||||
updateProgress(20);
|
// On vérifie que la clé PBKDF2 existe dans le store pbkdf2keys
|
||||||
|
console.log('🔐 Checking for existing PBKDF2 key in pbkdf2keys store...');
|
||||||
|
|
||||||
// Vérifier si des credentials existent déjà
|
const { SecureCredentialsService } = await import('../../services/secure-credentials.service');
|
||||||
// CRITICAL: wallet-setup ne doit PAS générer de credentials
|
const secureCredentialsService = SecureCredentialsService.getInstance();
|
||||||
// Les credentials et clé PBKDF2 doivent être créés dans security-setup
|
|
||||||
// On vérifie juste que la clé PBKDF2 existe
|
// Vérifier que la clé PBKDF2 existe pour au moins un mode de sécurité dans le store pbkdf2keys
|
||||||
console.log('🔐 Checking for existing PBKDF2 key...');
|
const securityModes: Array<'otp' | 'password' | 'none' | 'os' | 'proton-pass'> =
|
||||||
} catch (error) {
|
['none', 'otp', 'password', 'os', 'proton-pass'];
|
||||||
// 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');
|
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
|
// Étape 3: Sauvegarde du wallet avec état birthday_waiting
|
||||||
updateStatus('💰 Sauvegarde du portefeuille...', 'loading');
|
updateStatus('💰 Sauvegarde du portefeuille...', 'loading');
|
||||||
updateProgress(60);
|
updateProgress(60);
|
||||||
@ -130,59 +157,8 @@ document.addEventListener('DOMContentLoaded', async () => {
|
|||||||
try {
|
try {
|
||||||
console.log('🔐 Sauvegarde du wallet avec état birthday_waiting...');
|
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é a déjà été trouvé dans la vérification des prérequis
|
||||||
// Le mode de sécurité est identifié par la clé PBKDF2 qui fonctionne
|
// currentMode est déjà défini et vérifié
|
||||||
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;
|
|
||||||
}
|
|
||||||
|
|
||||||
console.log('🔐 Using security mode for wallet encryption:', currentMode);
|
console.log('🔐 Using security mode for wallet encryption:', currentMode);
|
||||||
|
|
||||||
// Générer un wallet temporaire avec état birthday_waiting
|
// Générer un wallet temporaire avec état birthday_waiting
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user