Files
khadhroony-solana-project/deltas/0.2.5/pre.004-fix.001.md

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 alloc localement dans ksp-wallet-lib plutô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