v0.2.5-pre.010.fix.001
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
<!-- file: docs/plans/012-V0_2_5_WALLET_FOUNDATION_PLAN.md -->
|
||||
<!-- version: 13 -->
|
||||
<!-- version: 14 -->
|
||||
|
||||
# Plan `0.2.5` — Wallet foundation
|
||||
|
||||
@@ -363,7 +363,7 @@ Il faut distinguer :
|
||||
|
||||
**keypair Solana** : immuable dans V1 après création/import. Aucun `replace_keypair` n'est exposé. Toute tentative de modifier `secret` ou la Pubkey metadata sans une réécriture OWNER valide échoue sur la `state_signature`; même avec OWNER, l'import d'une autre keypair crée un nouveau `.kspwallet` au lieu de muter l'identité cryptographique existante.
|
||||
|
||||
## 8. Primitives et dépendances réauditées jusqu’au 2026-08-19
|
||||
## 8. Primitives et dépendances réauditées jusqu’au 2026-08-20
|
||||
|
||||
Aucune dépendance ci-dessous n'est ajoutée dans `pre.001`. Ce sont les candidates pour les tranches qui les consommeront réellement.
|
||||
|
||||
@@ -380,7 +380,7 @@ Aucune dépendance ci-dessous n'est ajoutée dans `pre.001`. Ce sont les candida
|
||||
|
||||
La génération SDK récente définit `Pubkey` comme alias du type `Address`, mais l'écosystème a déjà connu des incompatibilités lorsque plusieurs générations de `solana-address` coexistent. `pre.002` verrouille donc la surface publique Wallet sur **`ksp_core_lib::Pubkey` exclusivement** et n'ajoute aucune dépendance directe `solana-pubkey`. `pre.005` introduit réellement `solana-keypair 3.1.2` uniquement pour posséder/valider la keypair Ed25519 ; la Pubkey Wallet reste construite via `ksp_core_lib::Pubkey` depuis les 32 octets publics du keypair, sans exposer un second type d'adresse KSP.
|
||||
|
||||
Un `cargo tree` est obligatoire avec `pre.005` afin de confirmer l'unification de `solana-address`, `ed25519-dalek`, `rand/getrandom` et d'éviter des duplications crypto injustifiées.
|
||||
Un `cargo tree` est obligatoire avec `pre.005` puis à chaque changement de génération crypto afin de distinguer les convergences réellement possibles des doublons imposés par upstream. Le gate `pre.009` observait encore une génération unique `ed25519-dalek 2.2.0`; `pre.010-fix.001` réouvre explicitement cet audit après passage du Dalek direct KSP à `3.0.0`.
|
||||
|
||||
Audit source notable : `solana-keypair 3.1.2` contient un bloc `unsafe` interne dans sa conversion Base58 vers `String`. Cela ne modifie pas la règle `#![forbid(unsafe_code)]` du code KSP. `pre.008` conserve finalement le codec maintenu par `solana-keypair` au lieu d'ajouter un second codec `bs58` direct ; `pre.009` classe donc cet `unsafe` comme implémentation upstream auditée, sans `unsafe` KSP et sans duplication de codec.
|
||||
|
||||
@@ -415,7 +415,9 @@ AES-GCM-SIV apporte une meilleure tolérance à la réutilisation accidentelle d
|
||||
|
||||
`zeroize 1.9.0` est retenu et devient la seule nouvelle dépendance tierce de `pre.002`, car les wrappers `ViewPassword` / `OwnerPassword` l’utilisent immédiatement pour leur nettoyage au `Drop`. `secrecy` n'est pas ajouté tant qu'un besoin ergonomique concret n'est pas démontré ; des types KSP simples imposent eux-mêmes redaction/non-Clone et utilisent `zeroize`.
|
||||
|
||||
`pre.005` introduit directement **`ed25519-dalek ^2.2`** avec `default-features = false` et les features `signature` + `zeroize`. La génération `3.0.0`, bien que plus récente, n'est volontairement pas ajoutée : `solana-keypair 3.1.2` dépend de `ed25519-dalek ^2.1.1`, donc la branche directe `2.2` permet à Cargo d'unifier une seule génération Dalek et d'activer `zeroize` sur la `SigningKey` utilisée à la fois par l'autorité de format KSP et par le wrapper Solana. Une duplication `2.x + 3.x` n'apporterait aucune capacité nécessaire à V1.
|
||||
`pre.005` avait initialement introduit `ed25519-dalek ^2.2` afin de converger avec `solana-keypair 3.1.2`. Cette décision est **supersédée par `pre.010-fix.001`** : `ed25519-dalek 3.0.0` est stable depuis le 2026-07-06, utilise Rust 2024 et apporte la génération courante de l'API Dalek. KSP passe donc sa dépendance directe à **`ed25519-dalek ^3.0`**, conserve `default-features = false` et active localement uniquement `signature` + `zeroize`.
|
||||
|
||||
`solana-keypair 3.1.2` reste toutefois sur sa branche Dalek `2.x`. Le tree post-fix doit donc montrer **deux générations Dalek intentionnelles** : `3.0.0` directement pour KSP et `2.2.0` transitivement via `solana-keypair`. Cette duplication est désormais acceptée parce qu'elle est imposée par les contraintes upstream ; KSP ne rétrograde pas sa dépendance directe uniquement pour obtenir une unicité artificielle. Le wire `.kspwallet` V1 et les primitives Ed25519 restent inchangés.
|
||||
|
||||
### 8.6 État des audits de sécurité publics
|
||||
|
||||
@@ -1135,7 +1137,8 @@ pre.007 signature Solana + alias/notes + rotations passwords + disable/recreate
|
||||
pre.008 import/export adapters + Solana CLI JSON + generic keypair Base58 + inspect
|
||||
pre.009 audit security/interoperability/compliance + adversarial vectors/tests + cargo trees acquis
|
||||
pre.010 spec finale + README/USAGE + graphes/docs + candidate de clôture + prompt 0.2.6 acquis
|
||||
rel.001 publication strictement publicationnelle prochaine
|
||||
pre.010-fix.001 Dalek direct ^3.0 + normalisation Rust workspace + audit structurel + prompt 0.2.6 renforcé en validation
|
||||
rel.001 publication strictement publicationnelle après validation du fix
|
||||
```
|
||||
|
||||
Une `fix` ou tranche supplémentaire est préférable à la suppression d'une garantie sécurité si un des gates révèle une incompatibilité.
|
||||
@@ -1150,17 +1153,20 @@ pre.003 base64 ^0.23
|
||||
pre.004 argon2 ^0.5
|
||||
chacha20poly1305 ^0.11
|
||||
getrandom ^0.4
|
||||
pre.005 ed25519-dalek ^2.2
|
||||
pre.005 ed25519-dalek ^2.2 à l'origine
|
||||
solana-keypair ^3.1
|
||||
pre.010-fix.001
|
||||
ed25519-dalek ^3.0 direct KSP
|
||||
tokio déjà workspace, feature locale rt pour spawn_blocking
|
||||
pre.006 tempfile ^3.27
|
||||
pre.007 aucune nouvelle dépendance tierce
|
||||
pre.008 aucune nouvelle dépendance tierce
|
||||
pre.009 aucune nouvelle dépendance tierce
|
||||
pre.010 aucune nouvelle dépendance tierce (documentation uniquement)
|
||||
pre.010-fix.001 mise à niveau de la dépendance directe ed25519-dalek ^3.0 ; aucune nouvelle famille de dépendance
|
||||
```
|
||||
|
||||
Toutes les dépendances tierces communes restent centralisées sous `[workspace.dependencies]`; le membre Wallet active uniquement les features nécessaires. `ed25519-dalek ^2.2` est volontairement aligné avec la contrainte `^2.1.1` de `solana-keypair 3.1.2` afin de permettre une seule génération Dalek et d'activer `zeroize` sur la `SigningKey` partagée par résolution Cargo.
|
||||
Toutes les dépendances tierces communes restent centralisées sous `[workspace.dependencies]`; le membre Wallet active uniquement les features nécessaires. À partir de `pre.010-fix.001`, le direct KSP est `ed25519-dalek ^3.0` avec `signature` + `zeroize`, tandis que `solana-keypair 3.1.2` conserve sa génération Dalek `2.x` transitive. Les deux générations sont auditées séparément et leur coexistence est acceptée tant que Solana n'a pas migré son propre contrat.
|
||||
|
||||
Dépendances réauditées mais **non retenues directement** en `0.2.5` :
|
||||
|
||||
@@ -1214,7 +1220,7 @@ https://docs.rs/chacha20poly1305/0.11.0/
|
||||
https://docs.rs/aes-gcm-siv/0.12.0/
|
||||
https://docs.rs/getrandom/0.4.3/
|
||||
https://docs.rs/zeroize/1.9.0/
|
||||
https://docs.rs/ed25519-dalek/2.2.0/
|
||||
https://docs.rs/ed25519-dalek/3.0.0/
|
||||
https://docs.rs/base64/0.23.1/
|
||||
https://docs.rs/tempfile/3.27.0/
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user