115 lines
8.7 KiB
Markdown
115 lines
8.7 KiB
Markdown
<!-- file: ks-wallet/CHANGELOG.md -->
|
||
<!-- version: 14 -->
|
||
|
||
# CHANGELOG — ks-wallet
|
||
|
||
## `0.5.2-pre.003`
|
||
|
||
- fixe et documente dans `docs/NATIVE_FORMAT.md` le layout binaire strict `.kswallet` version `1` ;
|
||
- sélectionne Argon2id v19 et XChaCha20-Poly1305 comme KDF/AEAD du format v1 sans encore traiter de mot de passe ;
|
||
- retient comme profil KDF d'écriture par défaut 64 MiB, 3 passes, 4 lanes, sel 16 octets et sortie 32 octets, avec bornes anti-DoS ;
|
||
- fixe le payload secret v1 à la keypair Solana brute de 64 octets et le ciphertext/tag à exactement 80 octets, pour une taille totale `.kswallet` de 193 à 256 octets ;
|
||
- ajoute le décodage/validation internes stricts pour magic/version, flags, IDs crypto, paramètres KDF, pubkey, alias, sel, nonce et ciphertext ;
|
||
- réserve header + alias + sel + nonce comme données authentifiées de l'AEAD pour `pre.004` ;
|
||
- enrichit `WalletFileHandle` de la pubkey déclarée et de la version du format sans exposer le chemin ;
|
||
- ajoute une lecture bornée avant allocation et rejette truncation, trailing bytes et croissance concurrente du fichier ;
|
||
- ajoute les tests du décodage strict, des bornes KDF/ciphertext, de l'alias et de la réouverture bornée ;
|
||
- laisse volontairement l'encodage de création, la publication atomique, le password, la dérivation Argon2id, l'appel AEAD et la capacité de signature ouverts à `pre.004`.
|
||
|
||
### `pre.003-delta-fix-001`
|
||
|
||
- déplace la spécification normative de `ks-wallet/NATIVE_FORMAT.md` vers `docs/NATIVE_FORMAT.md` et aligne son tableau de layout pour une lecture Markdown plus claire ;
|
||
- corrige les tests `native.rs` pour respecter la règle `super::Item` sur les éléments privés du module parent ;
|
||
- retire de `pre.003` le code d'encodage/publication et les defaults KDF préparés prématurément pour `pre.004`, afin de ne conserver aucun dead code ni import inutilisé ;
|
||
- borne `pre.003` au décodage/validation stricts et à la lecture nécessaire au scan, sans changer le layout v1 documenté.
|
||
|
||
### `pre.003-delta-fix-002`
|
||
|
||
- corrige les fixtures de tests `WalletManager::scan()` afin que les répertoires temporaires utilisés sous Unix soient explicitement privés en mode `0700` ;
|
||
- conserve inchangée la validation runtime qui refuse un répertoire wallet accessible au groupe ou aux autres utilisateurs ;
|
||
- corrige les deux échecs `scan_is_non_recursive_and_filters_by_native_extension` et `explicit_file_inspection_accepts_path_outside_configured_directory` sans assouplir le contrat de sécurité.
|
||
|
||
### `pre.003-delta-fix-003`
|
||
|
||
- corrige la fixture du test externe `crate_root_exposes_multi_wallet_discovery_without_path_disclosure` afin que son répertoire temporaire respecte lui aussi le mode Unix `0700` exigé par `WalletManager::scan()` ;
|
||
- ne modifie aucune validation runtime, aucun codec `.kswallet` et aucune surface publique ;
|
||
- complète le correctif de permissions de `fix-002` sur le dernier test externe qui dépendait encore de l'umask de la machine.
|
||
|
||
## `0.5.2-pre.002`
|
||
|
||
- ajoute `WalletManager` pour la découverte non récursive des `.kswallet` dans le répertoire configuré et le lookup par alias ;
|
||
- ajoute `WalletManager::inspect_file()` pour inspecter explicitement un `.kswallet` situé hors du store sans modifier la configuration ni l'enregistrer automatiquement ;
|
||
- ajoute `WalletFileHandle`, handle opaque dont le chemin local reste privé et absent de `Debug` ;
|
||
- introduit le préambule d'identification natif minimal `KSWALLET` + version `u16` little-endian `1`, sans définir encore le payload, KDF ou AEAD ;
|
||
- ajoute `WalletIdentity` et `WalletPersistence`, et transforme `WalletSummary` en alias de compatibilité vers l'identité non sensible ;
|
||
- retire le chemin de stockage de `WalletSummary` et du `Debug` de `TemporaryWallet` ;
|
||
- conserve les wallets temporaires et la frontière `solana_signer::Signer` existante ;
|
||
- externalise la caractérisation du legacy dans `tests/legacy_characterization.rs` avec fixture synthétique, erreurs, permissions, symlink et refus d'écrasement ;
|
||
- ajoute `tests/public_api.rs` pour figer la façade crate-root multi-wallet et l'absence de chemin dans le `Debug` du handle ;
|
||
- ne crée encore aucun `.kswallet` réel et n'introduit aucun mot de passe ou chiffrement persistant.
|
||
|
||
## `0.5.2-pre.001`
|
||
|
||
- caractérise précisément le format legacy `<alias>.json`, ses permissions Unix, ses erreurs, sa publication directe dans le chemin final et ses limites d’atomicité/TOCTOU ;
|
||
- inventorie les consommateurs `ks-wallet`, les usages directs de `solana_keypair` / `solana_signer`, les variables/configurations wallet et les workflows CLI qui dépendent encore du keypair Solana brut ;
|
||
- définit le contrat fonctionnel `0.5.2` autour de la gestion multi-wallet par alias, des wallets temporaires/jetables, du mot de passe modifiable, de la signature sans exposition du secret et de l’import/export explicite ;
|
||
- retient comme cible un conteneur natif binaire versionné `<alias>.kswallet`, sans fixer prématurément KDF/AEAD ou layout binaire ;
|
||
- impose un mot de passe valide pour tout export contenant ou permettant de reconstruire le secret ;
|
||
- définit la migration legacy comme import vers un nouveau `.kswallet` avec conservation de la pubkey, écriture atomique et rollback, sans réécriture destructive du `.json` ;
|
||
- corrige README/USAGE/TODO afin d’aligner les objectifs sur ce contrat simplifié ;
|
||
- ne modifie aucune API runtime, aucun fichier wallet et n’introduit encore aucun nouveau format persistant.
|
||
|
||
### `pre.001-delta-fix-001`
|
||
|
||
- corrige la version Cargo de `0.5.2-pre.001` vers le SemVer valide `0.5.2-pre.1` ;
|
||
- simplifie profondément le plan initial, retire l’exclusion erronée de l’export privé contrôlé et supprime l’hypothèse d’un alias principal universel par profil ;
|
||
- formalise l’extension native `.kswallet`, le wallet temporaire et l’obligation de password pour tout export secret.
|
||
|
||
### `pre.001-delta-fix-002`
|
||
|
||
- précise que `ks-wallet` découvrira les wallets persistants par scan borné des `<alias>.kswallet` dans son répertoire résolu, sans faire confiance au seul nom de fichier ;
|
||
- distingue explicitement changement de password et rotation de keypair : le password rechiffre la même keypair, tandis qu’un nouveau secret Ed25519 implique une nouvelle pubkey ;
|
||
- rend obligatoires l’import **et** l’export du format keypair JSON standard utilisé par les binaires Solana ;
|
||
- ajoute une matrice de compatibilité à établir pour Phantom, Solflare, Backpack, Trust Wallet, Coinbase/Base et les autres wallets Solana techniquement documentés ;
|
||
- borne `0.5.2` à un adaptateur wallet tiers d’exemple en plus du format Solana CLI obligatoire, avec report des autres adaptateurs faisables au TODO pour une version ultérieure non déterminée ;
|
||
- interdit de synthétiser une recovery phrase supposée restaurer une keypair arbitraire lorsque la mnemonic/seed d’origine n’est pas disponible.
|
||
|
||
## `0.5.1-pre.002`
|
||
|
||
- renomme `kb-wallet` en `ks-wallet` et `kb_wallet` en `ks_wallet` ;
|
||
- aligne le target racine de tracing et les consommateurs sans modifier le format persistant des wallets, réservé à `0.5.2`.
|
||
|
||
## `0.5.0-pre.002`
|
||
|
||
- caractérise le format persistant `0.4.8` comme format legacy à importer plutôt qu’à modifier in-place ;
|
||
- prépare pour `0.5.2` un conteneur versionné, une migration atomique/rollback et la séparation identité/secret/verrouillage/signature ;
|
||
- renforce le TODO sur l’absence de propagation de secrets vers configuration, logs, erreurs, diagnostics ou Tauri.
|
||
|
||
## `0.4.8-pre.013`
|
||
|
||
- `pre.013-delta-fix-021` ajoute `TemporaryWallet::as_sync_signer()` afin de préserver le marqueur `Sync` du `solana_keypair::Keypair` lorsque le signataire traverse un futur async qui doit être `Send` ;
|
||
- conserve `as_signer()` inchangé pour les consommateurs historiques et n’expose toujours aucun octet secret.
|
||
|
||
## 0.4.6
|
||
|
||
- alignement de la crate sur la version fonctionnelle bot3 `0.4.6` ;
|
||
- clôture des tâches de migration applicables et report explicite des évolutions ultérieures dans le TODO.
|
||
|
||
## 0.1.0-pre.072
|
||
|
||
- reclassement du TODO selon les blocants avant `0.4.6`, les travaux `0.4.7`, les versions ultérieures et les dépendances conditionnelles.
|
||
|
||
## 0.1.0-pre.071
|
||
|
||
- réécriture du README avec indication explicite du statut d’ébauche ;
|
||
- ajout du TODO détaillant les fonctionnalités prévues pour `0.5.x` ;
|
||
- ajout du guide d’utilisation et de plusieurs exemples publics ;
|
||
- clarification de la frontière entre signer, politique et exécution.
|
||
|
||
## 0.1.0-pre.062
|
||
|
||
- migration et renommage du wallet temporaire vers `ks-wallet` ;
|
||
- conservation des alias validés, keypairs temporaires et stockage local ;
|
||
- ajout des contrôles de permissions, type de fichier et effacement des buffers secrets ;
|
||
- adaptation aux normes Rust 2024 et Khadhroony bot3.
|