From fe67dfdaddfbdfebbb8cf1676f0bec0210219fc8 Mon Sep 17 00:00:00 2001 From: thesimplekid Date: Sun, 31 Dec 2023 21:19:30 +0000 Subject: [PATCH] feat: mint rotate keyset and set to inactive --- crates/cashu-sdk/src/mint.rs | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/crates/cashu-sdk/src/mint.rs b/crates/cashu-sdk/src/mint.rs index 52c10150..2e95c320 100644 --- a/crates/cashu-sdk/src/mint.rs +++ b/crates/cashu-sdk/src/mint.rs @@ -14,6 +14,7 @@ use serde::{Deserialize, Serialize}; use tracing::{debug, info}; use crate::types::MeltQuote; +use crate::utils::unix_time; use crate::Mnemonic; pub struct Mint { @@ -110,16 +111,32 @@ impl Mint { /// Add current keyset to inactive keysets /// Generate new keyset pub fn rotate_keyset(&mut self, unit: CurrencyUnit, derivation_path: &str, max_order: u8) { - // TODO: Set old keyset as inactive - let new_keyset = MintKeySet::generate( &self.mnemonic.to_seed_normalized(""), - unit, + unit.clone(), derivation_path, max_order, ); - self.keysets.insert(new_keyset.id, new_keyset); + self.keysets.insert(new_keyset.id, new_keyset.clone()); + + for mint_keyset_info in self.keysets_info.values_mut() { + if mint_keyset_info.active && mint_keyset_info.unit.eq(&unit) { + mint_keyset_info.active = false; + } + } + + let mint_keyset_info = MintKeySetInfo { + id: new_keyset.id, + unit, + derivation_path: derivation_path.to_string(), + active: true, + valid_from: unix_time(), + valid_to: None, + max_order, + }; + + self.keysets_info.insert(new_keyset.id, mint_keyset_info); } pub fn process_mint_request(