v0.5.2-pre.006-fix-010
This commit is contained in:
88
ks-wallet-demo-scenarios/USAGE.md
Normal file
88
ks-wallet-demo-scenarios/USAGE.md
Normal file
@@ -0,0 +1,88 @@
|
||||
<!-- file: ks-wallet-demo-scenarios/USAGE.md -->
|
||||
<!-- version: 1 -->
|
||||
|
||||
# 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`.
|
||||
Reference in New Issue
Block a user