5.0 KiB
Delta 0.2.5-pre.004-fix.001 — activation alloc pour Argon2id raw KDF
Base requise
livraison : 0.2.5-pre.004
workspace.package.version = "0.2.5-pre.4"
La base opérateur conserve les réorganisations déjà appliquées dans crates/ksp-wallet-lib/src/constants.rs et crates/ksp-wallet-lib/src/lib.rs. Ce fix ne touche pas ces fichiers.
Motif
La validation opérateur de pre.004 échoue à la compilation de ksp-wallet-lib :
error[E0599]: no method named `hash_password_into` found for struct `Argon2<'key>`
crates/ksp-wallet-lib/src/crypto.rs:177
Le cargo tree -e features -p ksp-wallet-lib fourni par l'opérateur montre que argon2 0.5.3 est activé uniquement avec :
argon2 feature "zeroize"
Or l'API Argon2::hash_password_into utilisée par la tranche est disponible dans argon2 0.5.3 avec la feature alloc. La livraison pre.004 avait donc correctement désactivé les default-features au niveau workspace mais omis d'activer localement la feature nécessaire à l'API effectivement consommée.
Ce défaut de feature-set empêche :
cargo check --workspace
cargo clippy --workspace --all-targets
cargo test -p ksp-wallet-lib
avant l'exécution des tests Wallet.
Correction
Le manifest Wallet passe de :
argon2 = { workspace = true, features = ["zeroize"] }
à :
argon2 = { workspace = true, features = ["alloc", "zeroize"] }
La déclaration commune reste inchangée dans le Cargo.toml racine :
argon2 = { version = "^0.5", default-features = false }
Cela respecte la politique KSP : la version reste possédée par [workspace.dependencies], tandis que la crate membre active uniquement les features nécessaires à sa consommation locale.
Aucune API crypto, aucun paramètre Argon2, aucun wire .kspwallet, aucun vecteur et aucune sémantique de sécurité ne changent.
Canary de dépendances
crates/ksp-wallet-lib/tests/dependency_boundary.rs est mis à jour afin d'exiger explicitement :
argon2 = { workspace = true, features = ["alloc", "zeroize"] }
Le canary continue d'interdire les dépendances directes Wallet vers Config, Transport, ExecutionPolicy, Store, Tauri, tracing et solana-pubkey.
Version Cargo
Le correctif modifie le graphe de features participant à la compilation et un test Rust :
0.2.5-pre.4 -> 0.2.5-pre.4.fix.1
Fichiers modifiés
Cargo.toml
crates/ksp-wallet-lib/Cargo.toml
crates/ksp-wallet-lib/tests/dependency_boundary.rs
Fichiers ajoutés
deltas/0.2.5/pre.004-fix.001.md
Fichiers supprimés
Aucun.
Audit cargo tree pré-fix enregistré
Les sorties opérateur de pre.004 confirment :
argon2 0.5.3 -> Wallet direct
chacha20poly1305 0.11.0 -> Wallet direct
getrandom 0.4.3 -> Wallet direct + uuid/Tauri ailleurs dans le workspace
base64 0.23.1 -> Wallet direct uniquement pour cette génération
zeroize 1.9.0 -> partagé par Wallet et plusieurs branches crypto/TLS
Le sous-arbre Wallet présente plusieurs générations transitives de briques RustCrypto (block-buffer, cpufeatures, crypto-common) provenant respectivement de la pile Argon2 0.5.3 et de la pile XChaCha20-Poly1305 0.11.0. Elles sont transitives et correspondent aux générations stables actuellement retenues ; ce fix ne tente pas de les forcer ou de les unifier artificiellement.
Validation attendue après application
cargo fmt --all
cargo check --workspace
cargo clippy --workspace --all-targets
cargo test -p ksp-wallet-lib
cargo test --workspace
Audit du sous-arbre Wallet :
cargo tree -p ksp-wallet-lib
cargo tree -p ksp-wallet-lib -d
cargo tree -e features -p ksp-wallet-lib
cargo tree -i argon2@0.5.3
cargo tree -i chacha20poly1305@0.11.0
cargo tree -i getrandom@0.4.3
cargo tree -i base64@0.23.1
cargo tree -i zeroize@1.9.0
Le contrôle feature doit notamment faire apparaître :
argon2 feature "alloc"
argon2 feature "zeroize"
Une fois les validations normales propres, le benchmark opérateur de pre.004 peut enfin être exécuté :
cargo test -p ksp-wallet-lib benchmark_argon2_creation_candidates -- --ignored --nocapture --test-threads=1
Son résultat reste nécessaire avant de figer le profil Argon2 de création dans la tranche suivante.
Décisions
- activer
alloclocalement dansksp-wallet-libplutôt que réactiver les default-features Argon2 globalement ; - conserver
zeroize; - ne modifier ni
crypto.rs, ni les paramètres Argon2, ni le format V1 ; - renforcer le canary de manifest pour empêcher une régression identique ;
- ne pas élargir le périmètre fonctionnel de
pre.004.
Questions ouvertes
Aucune nouvelle question fonctionnelle introduite par ce correctif.
Le choix du profil Argon2 de création reste volontairement ouvert jusqu'au benchmark opérateur prévu par pre.004.
Commit attendu
v0.2.5-pre.004-fix.001