use bergshamra_enc::{decrypt::decrypt, decrypt::decrypt_to_bytes, EncContext};
use bergshamra_keys::KeysManager;
use crate::crypto::error::CryptoError;
pub struct SamlDecryptor {
keys_manager: KeysManager,
}
impl SamlDecryptor {
pub fn new(keys_manager: KeysManager) -> Self {
Self { keys_manager }
}
pub fn decrypt(&self, encrypted_xml: &str) -> Result<String, CryptoError> {
let ctx = EncContext::new(self.keys_manager.clone());
let plaintext = decrypt(&ctx, encrypted_xml)?;
Ok(plaintext)
}
pub fn decrypt_to_bytes(&self, encrypted_xml: &str) -> Result<Vec<u8>, CryptoError> {
let ctx = EncContext::new(self.keys_manager.clone());
let bytes = decrypt_to_bytes(&ctx, encrypted_xml)?;
Ok(bytes)
}
pub fn keys_manager(&self) -> &KeysManager {
&self.keys_manager
}
}