#[cfg(feature = "legacy")]
#[allow(clippy::unwrap_used, clippy::expect_used)]
mod legacy_pep_repo_tests {
use libpep::arithmetic::scalars::ScalarTraits;
use libpep::factors::contexts::PseudonymizationDomain;
use libpep::factors::secrets::{make_pseudonymisation_factor, PseudonymizationSecret};
use libpep::factors::PseudonymRekeyFactor;
use libpep::keys::distribution::blinding::BlindingFactor;
use libpep::keys::distribution::shares::make_pseudonym_session_key_share;
#[test]
fn test_key_factor_component() {
let test_cases = [
("75520ADD78C581CAAD943E8483461A121288F19197FDCC627842772F10CF8E559C14066F5F0AEB9410A5A1F6B0381C4AD68C6975584802AEA1B8F327C90FBDCE", "4677FE2AA77CA7C49D85B8D0BB91C5239978C2B33C8544D755F503582FD0A009", 0x01, "User group 0", "1F3C5EA78B6792CDCC267B887C18973B7EB94429CCBE0808A726223D1A831907", "5DAB35F62D9895C09E8E98567E9FAB8035BFCB1DB3E7D61378315EA988558004"),
("3E86B60AEB34EB683C7D8DFDB2FD85A34210309F09DF1AC04043C3AE9D515436D1B4619C8B8284504A9DA8BC204A6988CE6A6C771DB257C482FC8061E4CCB447", "07AB8834D6734C05F69EDD2C7231C04016A57A810840C1AEA213EF73809C0A06", 0x02, "StorageFacility", "F98E444785474E5F1348BBB50AAE0B82EE656CD47A356FA17F4AAE8DD8973F0B", "1301E51A2602B34CA5A7B5ECC1FA8ED9E8A4B1E9686940C15A6B59E8B775D101"),
("1C32A26E3D31AFBA6820C41E2A886C79CC14C681127A5A096981CDB6F4CEDBD087FAFF25134BA142FBE29B218A3394CDB2A5049DEA7C11EE1DFA2A48B217F4A0", "947F3A0F7F2716E7B4709D664112C45804F6ADD75EDE33BC72C89364650F350D", 0x03, "AccessManager", "FED672C43A0B330E75FFB9F9B95F586967A6B5254A2317ECBB8CA60F68060302", "04C22EBE514A9CAD4EFA6A423D827F4CD7BEBA112C437DE71187284D6B530C08"),
("73A73E65AE45E13041AE8B2081184D88473FB8B0560A6D1F3F12C371143C6AD6FFED4781E9936B12F5056D4112AFD044023B2BF4E813727A3A03188E24EA0E6D", "40F4C04827AA515F634AB03F25033AC3A450FD98733205C56730F41EBA42D501", 0x04, "Transcryptor", "9FE587F1A12C8DF3A8B58CE2633B048671E9FE19696D6EE6FF6012AC257C7008", "564C48E695357BCD3E0B24E05B1C1BA317CF75775F13514F8ED5DD5FC5782F08"),
("614C5B04E3E8C670736F0DAA44FEB4342C7A71015C724B542C8C8EF55C483562C80C41145DE74A5E7D4B7402B25EF5104F3ED9967FC2835CA7D0F26C9682A5BB", "4D9B384B6B97467A9960D4FDB0BE6527944574E2EF611282F85C45B15F54890E", 0x05, "RegistrationServer", "757491A159F5F4AEB0973C16F071BAB2543CB2BF0D904B744E346D90D9888A0A", "A7D1300588EFD47E9F42FFDB6D65AD77850A2928DF4B7A98880168616BA57E00"),
("511C59764A8EDE35B1A2420CC009E1E8BF4AA42FA584DCF66D8230934EB3616BBA2F96DA2917386E0D3955EF1C7EAD8C28260F7E6793847EA11210BA8A8DCB9F", "BBB12FEEFA6CE7660A4431E75B1760AE7D746876A946AA0F1E0199E9191DE806", 0x01, "User group 5", "7C5A1074D3A40C963CDC6805E3AC9F85EB70D36CF58199F0E2F227243204570C", "464A45403366EA5310F2E64E610185A986E50196FE4A1A746D8CB0DF87BD4C0F"),
("EF4C75B9D242ADB747A58D905FDD2275AEC5A72F1EC652C9390860F8A2CCB5F21BE07587D42A42F173D482358CCD3C82D679CE7E768B9399BC8CF4539F81B920", "AE44930953BD50C976B6AE77CEEF3977D805152B72FE4C1FF4856BEC5F9FE205", 0x02, "StorageFacility", "89DD4C4AFECEE7FADC4C171E13C3B89537098C74625D27BB43256E80663C8207", "2F548C89D9B703A756EB3FC6F80E3F43A76154A953249EA0B3842B882A384002"),
("F520F1655FDA178CE0DF152C96D437F69916514790ADF86C1DD475337FCA4CC4504C54B444EC86D8B5B28C269DA432E1D4A19C4BC5C35F0D376A2C2638D3E1F6", "2DC5A601E191A78D6C881E8CD9885607A87B90580BA64E322190EA601E332A0E", 0x03, "AccessManager", "8C9C183A9818E21188967AD2027BCE5CF0164E565B0BEA3CA03F24059E4E770B", "33F8A43B84870FA07856D5527ABC155B9BCA19245DEE1463B31EFC73F1F5590B"),
("3A77F9568F4CB826CDAB633E6F1FEBDBD6336EC391362E345AAAC906E4281F5D910F6CA422FE48B21A0477B6E6C68E814E762B067398DF0C63B4FE2342A77B46", "0917C8B79F6C64D3236DE9E3DB3164DA85A398FF5B8A2F93C87E0D11CE3B6D08", 0x04, "Transcryptor", "AB1AF07C2C743AEAC915F5E16D7B058EE38DF24CA619CF002E6E5CF6217A5803", "13664C22AD2FB9749E84A52685C76B534D28B5AA5E50BE84F1DAC059E674980E"),
("2810545A8C71F016D9FECD04D063CC2384641C93C194E05EA80AF9D514167C2BE4C18AA6303543822C9425777CA342022E7E223B2B7986DDF9AB39462B41F395", "C6E9B156156903F6AE3DDAEB4A2D09C414390063D0C790193760BDAE5FABE709", 0x05, "RegistrationServer", "5ED99AADBA8CE939CC77E6CFAD84EE64EA7C4763478D0DF2CCAC9B75E84FF50A", "DEB4A6C5587CE5783FC5DEF325788C8562B8EC7274F714C067D62C73C2CA2307"),
("A850D20B8D4648F0AA2C5FC6D495B3AD7E9F79458BB21AD9375E40FC9B594DE084B5764638CA07E835162E38BFA23CA24F43387D35AB629CED8BA619246BFF0A", "5E12739128335B72727F892079A043F12153845C707E1B05FC810165AF259703", 0x01, "User group 10", "736D138B64518A0E2351CD064EF7E50CD580B0C463BE54938973E8773F3C1B09", "F37CD6A9A065B3C3CCD19A8FD48619B1E19FFEE86FD7D5490B46255A3645A708"),
];
for (secret_hex, blinding_hex, audience_type, payload, expected_factor, expected_sks) in
test_cases.iter()
{
let secret = hex::decode(secret_hex).unwrap();
let pseudo_secret = PseudonymizationSecret::from(secret);
let context = PseudonymizationDomain::from_audience(payload, *audience_type as u32);
let pseudo_factor = make_pseudonymisation_factor(&pseudo_secret, &context);
assert_eq!(
pseudo_factor.0.to_hex().to_ascii_uppercase(),
*expected_factor
);
let blinding_factor = BlindingFactor::from_hex(blinding_hex).unwrap();
let rekey_factor = PseudonymRekeyFactor::from(pseudo_factor.0);
let session_key_share =
make_pseudonym_session_key_share(&rekey_factor, &blinding_factor);
assert_eq!(
session_key_share.to_hex().to_ascii_uppercase(),
*expected_sks
)
}
}
}