diff --git a/src/secrets.rs b/src/secrets.rs index acb478c..9d2221d 100644 --- a/src/secrets.rs +++ b/src/secrets.rs @@ -109,6 +109,31 @@ impl SecretsStore { self.shared_secrets.get(&address) } + pub fn get_all_confirmed_secrets(&self) -> HashMap { + self.shared_secrets.clone() + } + + pub fn get_all_unconfirmed_secrets(&self) -> Vec { + self.unconfirmed_secrets.clone() + } + + pub fn remove_secret_for_address(&mut self, address: SilentPaymentAddress) -> Result<(SilentPaymentAddress, AnkSharedSecretHash)> { + if let Some(removed_secret) = self.shared_secrets.remove(&address) { + return Ok((address, removed_secret)); + } else { + return Err(Error::msg("Secret doesn't exist")); + } + } + + pub fn remove_unconfirmed_secret(&mut self, secret: AnkSharedSecretHash) -> Result<()> { + if let Some(i) = self.unconfirmed_secrets.iter().position(|s| *s == secret) { + self.unconfirmed_secrets.swap_remove(i); + Ok(()) + } else { + Err(Error::msg("Unknown secret")) + } + } + pub fn try_decrypt(&self, cipher: &[u8]) -> Result<(AnkSharedSecretHash, Vec)> { let nonce = Nonce::from_slice(&cipher[..12]);