ihm_client/src/pages/iframe-pairing.html
NicolasCantu bf680ab6dd ci: docker_tag=pbkdf2-credentials
🔐 Implémentation PBKDF2 avec credentials navigateur

 Fonctionnalités ajoutées:
- SecureCredentialsService avec PBKDF2 (100k itérations)
- Chiffrement AES-GCM des clés spend/scan
- Interface utilisateur complète pour gestion credentials
- Tests unitaires complets
- Architecture modulaire avec EventBus
- Gestion mémoire optimisée
- Performance monitoring
- Web Workers pour encodage asynchrone

🛡️ Sécurité:
- Dérivation PBKDF2 avec salt unique
- Chiffrement AES-GCM des clés sensibles
- Validation force mot de passe
- Stockage sécurisé IndexedDB + WebAuthn
- Logging sécurisé sans exposition données

🔧 Corrections:
- Erreur 500 résolue (clé dupliquée package.json)
- Configuration Vite simplifiée
- Dépendances manquantes corrigées

📊 Améliorations:
- Architecture découplée avec repositories
- Services spécialisés (PairingService, etc.)
- Monitoring performance et mémoire
- Tests avec couverture complète
- Documentation technique détaillée
2025-10-23 12:51:49 +02:00

70 lines
1.9 KiB
HTML

<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>4NK Pairing - Hidden</title>
<style>
body {
margin: 0;
padding: 0;
width: 1px;
height: 1px;
overflow: hidden;
background: transparent;
}
.hidden-container {
position: absolute;
top: -9999px;
left: -9999px;
width: 1px;
height: 1px;
opacity: 0;
pointer-events: none;
}
</style>
</head>
<body>
<div class="hidden-container">
<!-- This iframe is completely hidden and only used for pairing communication -->
<div id="pairing-status">Ready</div>
</div>
<script type="module">
import { MessageType } from '../models/process.model';
import IframePairingService from '../services/iframe-pairing.service';
// Initialize the iframe pairing service
const pairingService = IframePairingService.getInstance();
// Listen for messages from parent window
window.addEventListener('message', event => {
const { type, data } = event.data;
switch (type) {
case MessageType.PAIRING_4WORDS_CREATE:
console.log('🔐 Parent requested pairing creation');
pairingService.createPairing();
break;
case MessageType.PAIRING_4WORDS_JOIN:
console.log('🔗 Parent requested pairing join with words:', data.words);
pairingService.joinPairing(data.words);
break;
}
});
// Notify parent that iframe is ready
window.parent.postMessage(
{
type: 'IFRAME_READY',
data: { service: 'pairing' },
},
'*'
);
console.log('🔗 Hidden iframe pairing service ready');
</script>
</body>
</html>