v0.5.2-pre.004
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
<!-- file: ks-wallet/README.md -->
|
||||
<!-- version: 9 -->
|
||||
<!-- version: 10 -->
|
||||
|
||||
# ks-wallet
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
|
||||
## État actuel
|
||||
|
||||
En `0.5.2-pre.003`, la crate possède désormais le décodage/validation stricts du format binaire `.kswallet` v1 nécessaires au scan. L'encodage de création, la publication atomique, le password et le chiffrement/déchiffrement réel restent pour `pre.004`; le legacy Solana JSON reste utilisé par les consommateurs historiques pendant la transition.
|
||||
En `0.5.2-pre.004`, la crate sait créer, publier, ouvrir et reprotéger un wallet natif `.kswallet` v1 avec un mot de passe. La dérivation Argon2id et le chiffrement authentifié XChaCha20-Poly1305 sont exécutés dans une tâche bloquante dédiée ; le legacy Solana JSON reste disponible pendant la transition et sa migration/importation est réservée à `pre.005`.
|
||||
|
||||
La crate fournit actuellement :
|
||||
|
||||
@@ -15,7 +15,13 @@ La crate fournit actuellement :
|
||||
- identité publique minimale `WalletIdentity` sans chemin local ;
|
||||
- `WalletManager` pour scanner/lookup les `.kswallet` structurellement valides du répertoire configuré ;
|
||||
- inspection explicite d'un `.kswallet` sélectionné hors du store via un handle opaque ;
|
||||
- décodage v1 strict avec identité publique déclarée, paramètres KDF/AEAD bornés et payload keypair de taille exacte ;
|
||||
- décodage et encodage v1 stricts avec identité publique déclarée, paramètres KDF/AEAD bornés et payload keypair de taille exacte ;
|
||||
- création persistante native avec `WalletManager::create()` et publication atomique/no-clobber ;
|
||||
- ouverture authentifiée par alias avec `WalletManager::unlock()` ;
|
||||
- ouverture d'un fichier explicitement sélectionné avec `WalletManager::unlock_file()` sans l'enregistrer dans le store ;
|
||||
- changement du mot de passe avec `WalletManager::change_password()` en conservant exactement la même keypair/pubkey ;
|
||||
- `WalletPassword`, frontière possédée, non clonable et redacted pour une opération ;
|
||||
- `UnlockedWallet`, capacité de signature authentifiée non clonable et sans getter des bytes privés ;
|
||||
- wallet temporaire en mémoire ;
|
||||
- stockage legacy local JSON d'un keypair Solana ;
|
||||
- création exclusive avec refus d'écrasement et reprise des courses `load_or_create` ;
|
||||
@@ -43,9 +49,9 @@ La persistance legacy écrit encore directement le contenu dans le chemin final
|
||||
- importer et exporter obligatoirement le format keypair JSON des binaires Solana ;
|
||||
- documenter les formats compatibles des principaux wallets Solana, implémenter un adaptateur tiers d'exemple et reporter les autres au TODO.
|
||||
|
||||
Le format `.kswallet` est propre à `ks-wallet`, mais sa protection cryptographique utilise des primitives établies : le format v1 fixe Argon2id v19 et XChaCha20-Poly1305. Le layout normatif est documenté dans [`../docs/NATIVE_FORMAT.md`](../docs/NATIVE_FORMAT.md). Le payload secret v1 est exactement la keypair Solana brute de 64 octets ; avec le tag AEAD, le ciphertext est fixé à 80 octets. `pre.003` ne réalise encore aucune dérivation ni encryption réelle. Changer le mot de passe ne change jamais la keypair : une modification réelle du secret Ed25519 produirait une autre pubkey et donc un autre wallet.
|
||||
Le format `.kswallet` est propre à `ks-wallet`, mais sa protection cryptographique utilise des primitives établies : Argon2id v19 pour la dérivation depuis le mot de passe et XChaCha20-Poly1305 pour le chiffrement authentifié. Le layout normatif est documenté dans [`../docs/NATIVE_FORMAT.md`](../docs/NATIVE_FORMAT.md). Le payload secret v1 est exactement la keypair Solana brute de 64 octets ; avec le tag AEAD, le ciphertext est fixé à 80 octets. Le header, l'alias, le sel et le nonce sont authentifiés comme AAD avant qu'une capacité `UnlockedWallet` puisse être produite. Changer le mot de passe ne change jamais la keypair : une modification réelle du secret Ed25519 produirait une autre pubkey et donc un autre wallet. Le changement du mot de passe reprotège le fichier persistant ; il ne révoque pas une capacité `UnlockedWallet` déjà détenue par un consommateur, qui doit être explicitement `lock()`/dropée selon son propre cycle de vie.
|
||||
|
||||
Le scan automatique reste strictement borné au répertoire fourni à `WalletManager`. Un programme peut néanmoins demander l'inspection d'un autre fichier `.kswallet` choisi explicitement, par exemple via un file browser desktop ; cette opération ne modifie pas le store et ne rend pas le chemin public.
|
||||
Le scan automatique reste strictement borné au répertoire fourni à `WalletManager`. Un programme peut néanmoins demander l'inspection d'un autre fichier `.kswallet` choisi explicitement, par exemple via un file browser desktop, puis l'ouvrir avec `unlock_file()` et le mot de passe fourni. Ces opérations ne modifient pas le store et ne rendent pas le chemin public.
|
||||
|
||||
## Relations
|
||||
|
||||
|
||||
Reference in New Issue
Block a user