use rand::{CryptoRng, Rng};
use tari_crypto::{keys::SecretKey, ristretto::RistrettoSecretKey};
use tari_ootle_transaction::{Transaction, UnsealedTransaction};
#[derive(Debug, Clone)]
pub struct EphemeralKeySigner {
key: RistrettoSecretKey,
}
impl EphemeralKeySigner {
pub fn random_with<R: Rng + CryptoRng>(rng: &mut R) -> Self {
let key = RistrettoSecretKey::random(rng);
Self { key }
}
pub fn random() -> Self {
Self::random_with(&mut rand::rng())
}
pub fn seal_transaction(self, transaction: UnsealedTransaction) -> Transaction {
transaction.seal(&self.key)
}
}