use crate::factors::contexts::{EncryptionContext, PseudonymizationDomain};
use crate::factors::wasm::secrets::{EncryptionSecret, PseudonymizationSecret};
use crate::factors::*;
use derive_more::{Deref, From, Into};
use wasm_bindgen::prelude::*;
use crate::factors::wasm::types::{
WASMAttributeRekeyFactor, WASMPseudonymRekeyFactor, WASMReshuffleFactor,
};
#[derive(Clone, Debug, From, Into, Deref)]
#[wasm_bindgen(js_name = PseudonymizationSecret)]
pub struct WASMPseudonymizationSecret(pub(crate) PseudonymizationSecret);
#[wasm_bindgen(js_class = "PseudonymizationSecret")]
impl WASMPseudonymizationSecret {
#[wasm_bindgen(constructor)]
pub fn new(secret: Vec<u8>) -> Self {
Self(PseudonymizationSecret::from(secret))
}
#[wasm_bindgen(js_name = from)]
pub fn wasm_from(secret: Vec<u8>) -> Self {
Self(PseudonymizationSecret::from(secret))
}
}
#[derive(Clone, Debug, From, Into, Deref)]
#[wasm_bindgen(js_name = EncryptionSecret)]
pub struct WASMEncryptionSecret(pub(crate) EncryptionSecret);
#[wasm_bindgen(js_class = "EncryptionSecret")]
impl WASMEncryptionSecret {
#[wasm_bindgen(constructor)]
pub fn new(secret: Vec<u8>) -> Self {
Self(EncryptionSecret::from(secret))
}
#[wasm_bindgen(js_name = from)]
pub fn wasm_from(secret: Vec<u8>) -> Self {
Self(EncryptionSecret::from(secret))
}
}
#[wasm_bindgen(js_name = makePseudonymRekeyFactor)]
pub fn wasm_make_pseudonym_rekey_factor(
secret: &WASMEncryptionSecret,
context: &str,
) -> WASMPseudonymRekeyFactor {
make_pseudonym_rekey_factor(&secret.0, &EncryptionContext::from(context)).into()
}
#[wasm_bindgen(js_name = makeAttributeRekeyFactor)]
pub fn wasm_make_attribute_rekey_factor(
secret: &WASMEncryptionSecret,
context: &str,
) -> WASMAttributeRekeyFactor {
make_attribute_rekey_factor(&secret.0, &EncryptionContext::from(context)).into()
}
#[wasm_bindgen(js_name = makePseudonymisationFactor)]
pub fn wasm_make_pseudonymisation_factor(
secret: &WASMPseudonymizationSecret,
domain: &str,
) -> WASMReshuffleFactor {
make_pseudonymisation_factor(&secret.0, &PseudonymizationDomain::from(domain)).into()
}