Jelajahi Sumber

'cashu-sdk' `feat:` rotate keyset

thesimplekid 1 tahun lalu
induk
melakukan
4f98aa9e40
1 mengubah file dengan 16 tambahan dan 0 penghapusan
  1. 16 0
      crates/cashu-sdk/src/mint.rs

+ 16 - 0
crates/cashu-sdk/src/mint.rs

@@ -6,6 +6,7 @@ pub use cashu::error::mint::Error;
 use cashu::nuts::nut00::BlindedMessage;
 use cashu::nuts::nut00::BlindedSignature;
 use cashu::nuts::nut00::Proof;
+use cashu::nuts::nut02::mint::KeySet;
 use cashu::nuts::nut06::SplitRequest;
 use cashu::nuts::nut06::SplitResponse;
 use cashu::nuts::nut07::CheckSpendableRequest;
@@ -64,6 +65,21 @@ impl Mint {
         self.inactive_keysets.get(id).map(|k| k.clone().into())
     }
 
+    /// Add current keyset to inactive keysets
+    /// Generate new keyset
+    pub fn rotate_keyset(
+        &mut self,
+        secret: impl Into<String>,
+        derivation_path: impl Into<String>,
+        max_order: u8,
+    ) {
+        // Add current set to inactive keysets
+        self.inactive_keysets
+            .insert(self.active_keyset.id.clone(), self.active_keyset.clone());
+
+        self.active_keyset = KeySet::generate(secret, derivation_path, max_order);
+    }
+
     pub fn process_mint_request(
         &mut self,
         mint_request: nut04::MintRequest,