# Utilisation de ks-wallet-demo-scenarios ## Exécuter la validation intégrée La validation autonome de la crate utilise un wallet synthétique et n’altère aucun wallet réel du workspace : ```bash cargo test -p ks-wallet-demo-scenarios ``` Le test suit un ordre déterministe dans une seule fonction : A → B, rejet de A, ouverture/signature avec B, B → A, puis ouverture/signature finale avec A. ## Réutiliser une rotation ```rust let summary = match ks_wallet_demo_scenarios::rotate_wallet_password( &manager, &alias, current_password, replacement_password, ) .await { std::result::Result::Ok(value) => value, std::result::Result::Err(error) => { return std::result::Result::Err(error); }, }; println!("public key={}", summary.identity.public_key); ``` La fonction inspecte l’identité avant rotation, appelle `WalletManager::change_password()` puis refuse le résultat si l’alias ou la pubkey a changé. ## Vérifier qu’un ancien mot de passe est rejeté ```rust let rejection = match ks_wallet_demo_scenarios::expect_wallet_password_rejected( &manager, &alias, old_password, ) .await { std::result::Result::Ok(value) => value, std::result::Result::Err(error) => { return std::result::Result::Err(error); }, }; assert_eq!( rejection.rejection_code, "wallet_native_authentication_failed", ); ``` Un échec provenant d’une autre cause n’est pas converti en succès du scénario. Une ouverture réussie avec le mot de passe supposé rejeté fait échouer explicitement la validation. ## Vérifier ouverture et signature ```rust let signing = match ks_wallet_demo_scenarios::unlock_and_sign_wallet( &manager, &alias, active_password, b"wallet scenario challenge", ) .await { std::result::Result::Ok(value) => value, std::result::Result::Err(error) => { return std::result::Result::Err(error); }, }; assert!(!signing.signature.is_empty()); ``` Le challenge doit être non vide. La fonction compare l’identité inspectée à l’identité authentifiée avant de signer, puis verrouille la capacité ouverte avant le retour. ## Limites actuelles La crate ne fournit pas encore de CLI ni de gestion de secrets par variables d’environnement. Les consommateurs construisent les `WalletPassword` explicitement et les transmettent aux étapes de scénario. Les scénarios import/export, migration legacy et formats tiers seront ajoutés lorsqu’ils apporteront une validation supplémentaire au-delà des tests unitaires de `ks-wallet`.