89 lines
2.6 KiB
Markdown
89 lines
2.6 KiB
Markdown
<!-- file: ks-wallet-demo-scenarios/USAGE.md -->
|
||
<!-- version: 2 -->
|
||
|
||
# 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`.
|