use fhe_math::rq::{scaler::Scaler, Context, Poly};
use std::sync::Arc;
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct CipherPlainContext {
pub(crate) delta: Poly,
pub(crate) q_mod_t: u64,
pub(crate) plain_threshold: u64,
pub(crate) scaler: Scaler,
pub(crate) plaintext_context: Arc<Context>,
pub(crate) ciphertext_context: Arc<Context>,
}
impl CipherPlainContext {
pub(crate) fn new_arc(
plaintext_context: &Arc<Context>,
ciphertext_context: &Arc<Context>,
delta: Poly,
q_mod_t: u64,
plain_threshold: u64,
scaler: Scaler,
) -> Arc<Self> {
Arc::new(CipherPlainContext {
delta,
q_mod_t,
plain_threshold,
scaler,
plaintext_context: plaintext_context.clone(),
ciphertext_context: ciphertext_context.clone(),
})
}
}