v0.4.8-pre.013

This commit is contained in:
2026-08-08 22:28:17 +02:00
parent f5efce576b
commit 8b831f8692
77 changed files with 15590 additions and 1585 deletions

View File

@@ -1,8 +1,13 @@
<!-- file: kb-wallet/CHANGELOG.md -->
<!-- version: 3 -->
<!-- version: 4 -->
# CHANGELOG — kb-wallet
## `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 nexpose toujours aucun octet secret.
## 0.4.6
- alignement de la crate sur la version fonctionnelle bot3 `0.4.6` ;

View File

@@ -1,5 +1,5 @@
<!-- file: kb-wallet/USAGE.md -->
<!-- version: 1 -->
<!-- version: 2 -->
# Utilisation de kb-wallet
@@ -61,6 +61,8 @@ println!("signature={signature}");
`as_signer()` retourne une référence au trait Solana `Signer` sans exposer les octets du keypair.
Pour une API async qui conserve la référence au travers dun `await` et impose un futur `Send`, `as_sync_signer()` préserve explicitement le marqueur `Sync` du keypair concret. Cette vue ne change ni la clé utilisée ni les règles dautorisation de la couche dexécution.
## Créer un stockage local
```rust

View File

@@ -1,5 +1,5 @@
// file: kb-wallet/src/wallet.rs
// version: 8
// version: 9
//! Local wallet storage and signing primitives.
@@ -104,6 +104,11 @@ impl crate::TemporaryWallet {
return &self.keypair;
}
/// Returns the signer interface with the `Sync` auto-trait preserved for `Send` async futures.
pub fn as_sync_signer(&self) -> &(dyn solana_signer::Signer + std::marker::Sync) {
return &self.keypair;
}
/// Signs arbitrary message bytes and returns the base58 signature.
pub fn sign_message(&self, message: &[u8]) -> kb_core::Result<std::string::String> {
let signature = match self.keypair.try_sign_message(message) {
@@ -437,6 +442,7 @@ mod tests {
.unwrap_or_else(|error| panic!("unexpected signing error: {error}"));
assert!(!signature.is_empty());
assert_eq!(wallet.public_key(), wallet.as_signer().pubkey().to_string());
assert_eq!(wallet.public_key(), wallet.as_sync_signer().pubkey().to_string());
assert!(wallet.summary().storage_path.is_none());
assert!(!format!("{wallet:?}").contains("secret"));
}