14 KiB
14 KiB
CHANGELOG — ks-wallet
0.5.2-pre.007
- retire les chemins locaux inutiles du
Debug, des logs et des erreurs duTemporaryWalletStorelegacy tout en conservant les getters explicites nécessaires aux fixtures ; - ajoute un canari externe garantissant que les erreurs/
Debuglegacy ne divulguent pas le répertoire local ; - ajoute un test concurrent de création native confirmant qu'un seul créateur publie un alias et que la destination
.kswalletreste valide ; - clôt la documentation
0.5.2, archive le plan de version et reporte explicitement l'inventaire dewallets/temporary/**à0.5.4.
0.5.2-pre.006-delta-fix-004
- ajoute
WalletTransferFormat::supported(),code(),label()etdefault_extension()afin que les consommateurs puissent présenter exactement les formats réellement compilés ; - ajoute
inspect_transfer_file()etWalletTransferInspectionpour valider un fichier secret externe et n'en exposer que la pubkey dérivée et le format sélectionné, sans import ni conversion ; - conserve les codecs secrets dans
ks-walletet permet au desktop de diagnostiquer les anciens keypairs dewallets/temporary/**un par un avant toute migration ; - ajoute un test externe couvrant l'inspection publique JSON/Base58 et l'inventaire des formats supportés.
0.5.2-pre.006
- clôt les TODO de sélection non sensible par alias et d'adaptation des consommateurs :
ks-configne porte quewallet_alias, les scénarios exigent un unlock explicite pour une sélection persistante et le desktop ne projette que des DTO sûrs ; - conserve pour la finalisation
pre.007le nettoyage des anciens chemins locaux encore présents dans les logs du store temporaire legacy et la documentation sécurité finale.
0.5.2-pre.005
- ajoute
WalletTransferFormatavecSolanaCliJsonetSolanaPrivateKeyBase58comme formats secrets explicites ; - ajoute
WalletManager::migrate_legacy()pour convertir<alias>.jsonvers<alias>.kswalletsans modifier ni supprimer la source legacy ; - ajoute
WalletManager::import_file()pour importer un keypair Solana depuis un fichier privé JSON CLI ou Base58 vers un nouveau conteneur natif protégé par mot de passe ; - ajoute
WalletManager::export_file()et impose l'authentification du mot de passe du.kswalletavant toute création d'un export secret ; - refuse l'écrasement d'une destination native/export existante et les collisions de pubkey sous un autre alias natif ;
- publie les exports secrets atomiquement en fichier privé
0600sous Unix, sans imposer que leur répertoire parent appartienne au store wallet configuré ; - utilise un buffer crate-private zéroïsé pour l'unique copie des 64 octets du keypair nécessaire à un export secret, sans ajouter de getter public ;
- documente Phantom comme cible de référence du Base58 et la compatibilité Phantom -> Solflare, puis reporte Backpack, Trust Wallet, Solflare Keystore et Base app au TODO tant que leur contrat Solana exact n'est pas suffisamment spécifié ;
- ajoute
docs/WALLET_FORMAT_COMPATIBILITY.mdet des tests de migration non destructive, round-trip JSON/Base58, permissions, collision de pubkey et mauvais mot de passe.
pre.004-delta-fix-001
- conserve les features workspace
argon2,chacha20poly1305etgetrandomvalidées par Cargo ; - corrige le dernier warning Clippy de
WalletPassword::new()en utilisant directementString::len(); - ne modifie aucun contrat fonctionnel ni wire
.kswallet.
0.5.2-pre.004
- ajoute
WalletPassword, type possédé, non clonable, non sérialisable et redacted qui zéroïse sa chaîne à la destruction, y compris lorsqu'une valeur invalide est rejetée ; - ajoute
UnlockedWallet, capacité authentifiée non clonable qui expose uniquement l'identité publique et les interfacesSigner/Signer + Sync, sans getter des bytes privés ; - ajoute
WalletManager::create(),unlock(),unlock_file()etchange_password()pour le cycle de vie natif protégé ; - exécute Argon2id v19 hors du runtime async via
spawn_blocking, avec le profil v1 64 MiB / 3 passes / 4 lanes et les bornes du codec ; - chiffre et authentifie les 64 octets du keypair avec XChaCha20-Poly1305 en utilisant header + alias + sel + nonce comme AAD ;
- génère un sel et un nonce neufs via la source aléatoire système à chaque création ou changement de mot de passe ;
- vérifie après déchiffrement que la pubkey du keypair correspond exactement à la pubkey authentifiée du header avant de produire
UnlockedWallet; - implémente l'encodage v1 et la publication privée atomique/no-clobber d'un nouveau
.kswallet, ainsi que le remplacement atomique après authentification de l'ancien mot de passe ; - permet d'ouvrir avec mot de passe un
.kswalletsélectionné hors du store via sonWalletFileHandle, sans mutation de la configuration ni auto-enregistrement ; - ajoute
argon2,chacha20poly1305etgetrandomcomme dépendances directes réellement utilisées parks-wallet, et activezeroizesurchacha20poly1305au niveau workspace ; - ajoute des tests externes de création, permissions privées, refus d'écrasement, signature, réouverture, ouverture externe, changement de mot de passe, rejet de l'ancien mot de passe, altération de l'AAD et canaris de non-divulgation.
pre.003-delta-fix-003
- corrige la fixture du test externe
crate_root_exposes_multi_wallet_discovery_without_path_disclosureafin que son répertoire temporaire respecte lui aussi le mode Unix0700exigé parWalletManager::scan(); - ne modifie aucune validation runtime, aucun codec
.kswalletet aucune surface publique ; - complète le correctif de permissions de
fix-002sur le dernier test externe qui dépendait encore de l'umask de la machine.
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 mode0700; - 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_extensionetexplicit_file_inspection_accepts_path_outside_configured_directorysans assouplir le contrat de sécurité.
pre.003-delta-fix-001
- déplace la spécification normative de
ks-wallet/NATIVE_FORMAT.mdversdocs/NATIVE_FORMAT.mdet aligne son tableau de layout pour une lecture Markdown plus claire ; - corrige les tests
native.rspour respecter la règlesuper::Itemsur les éléments privés du module parent ; - retire de
pre.003le code d'encodage/publication et les defaults KDF préparés prématurément pourpre.004, afin de ne conserver aucun dead code ni import inutilisé ; - borne
pre.003au décodage/validation stricts et à la lecture nécessaire au scan, sans changer le layout v1 documenté.
0.5.2-pre.003
- fixe et documente dans
docs/NATIVE_FORMAT.mdle layout binaire strict.kswalletversion1; - 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
.kswalletde 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
WalletFileHandlede 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.
0.5.2-pre.002
- ajoute
WalletManagerpour la découverte non récursive des.kswalletdans le répertoire configuré et le lookup par alias ; - ajoute
WalletManager::inspect_file()pour inspecter explicitement un.kswalletsitué hors du store sans modifier la configuration ni l'enregistrer automatiquement ; - ajoute
WalletFileHandle, handle opaque dont le chemin local reste privé et absent deDebug; - introduit le préambule d'identification natif minimal
KSWALLET+ versionu16little-endian1, sans définir encore le payload, KDF ou AEAD ; - ajoute
WalletIdentityetWalletPersistence, et transformeWalletSummaryen alias de compatibilité vers l'identité non sensible ; - retire le chemin de stockage de
WalletSummaryet duDebugdeTemporaryWallet; - conserve les wallets temporaires et la frontière
solana_signer::Signerexistante ; - externalise la caractérisation du legacy dans
tests/legacy_characterization.rsavec fixture synthétique, erreurs, permissions, symlink et refus d'écrasement ; - ajoute
tests/public_api.rspour figer la façade crate-root multi-wallet et l'absence de chemin dans leDebugdu handle ; - ne crée encore aucun
.kswalletréel et n'introduit aucun mot de passe ou chiffrement persistant.
pre.001-delta-fix-002
- précise que
ks-walletdécouvrira les wallets persistants par scan borné des<alias>.kswalletdans 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.
pre.001-delta-fix-001
- corrige la version Cargo de
0.5.2-pre.001vers le SemVer valide0.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.
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 desolana_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.2autour 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
.kswalletavec 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.
0.5.1-pre.002
- renomme
kb-walletenks-walletetkb_walletenks_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.8comme format legacy à importer plutôt qu’à modifier in-place ; - prépare pour
0.5.2un 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-021ajouteTemporaryWallet::as_sync_signer()afin de préserver le marqueurSyncdusolana_keypair::Keypairlorsque le signataire traverse un futur async qui doit êtreSend;- 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 travaux0.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.