use crate::factors::contexts::{EncryptionContext, PseudonymizationDomain};
use crate::factors::*;
use pyo3::prelude::*;
use crate::factors::py::types::{
PyAttributeRekeyFactor, PyPseudonymRekeyFactor, PyReshuffleFactor,
};
pub use crate::keys::py::types::{PyEncryptionSecret, PyPseudonymizationSecret};
#[pyfunction]
#[pyo3(name = "make_pseudonym_rekey_factor")]
pub fn py_make_pseudonym_rekey_factor(
secret: &PyEncryptionSecret,
context: &str,
) -> PyPseudonymRekeyFactor {
make_pseudonym_rekey_factor(&secret.0, &EncryptionContext::from(context)).into()
}
#[pyfunction]
#[pyo3(name = "make_attribute_rekey_factor")]
pub fn py_make_attribute_rekey_factor(
secret: &PyEncryptionSecret,
context: &str,
) -> PyAttributeRekeyFactor {
make_attribute_rekey_factor(&secret.0, &EncryptionContext::from(context)).into()
}
#[pyfunction]
#[pyo3(name = "make_pseudonymisation_factor")]
pub fn py_make_pseudonymisation_factor(
secret: &PyPseudonymizationSecret,
domain: &str,
) -> PyReshuffleFactor {
make_pseudonymisation_factor(&secret.0, &PseudonymizationDomain::from(domain)).into()
}
pub fn register(m: &Bound<'_, PyModule>) -> PyResult<()> {
m.add_class::<PyPseudonymizationSecret>()?;
m.add_class::<PyEncryptionSecret>()?;
m.add_function(wrap_pyfunction!(py_make_pseudonym_rekey_factor, m)?)?;
m.add_function(wrap_pyfunction!(py_make_attribute_rekey_factor, m)?)?;
m.add_function(wrap_pyfunction!(py_make_pseudonymisation_factor, m)?)?;
Ok(())
}