use ntrulp::key::priv_key::PrivKey;
use ntrulp::key::pub_key::PubKey;
use ntrulp::ntru::std_cipher;
use ntrulp::params::params::SECRETKEYS_BYTES;
#[test]
fn decrypt_ntrup761_ciphertext_from_v0_2_3() {
let sk_hex = "14a81a4920004224004508a91961648515850a95211806511aa5885a641591198292488a698406521020059895045a242a42882191a161a246215a216519949818a10542691885126048682a62688655844a61069484098a4644a206005884469899a696805a9445650804508a1955690a2822020aa60a69104142a82a1665104a626488491692908a1a61005a2a04a8a2266804406aa89805a65a0651164016868181654425841924a809a21496a159a8a9944021566014249650892444029502551a64055956515941254a295519241565155566555546581159a5554152955565586555459595a5556519595590455524a6661954641146554a81649545166994686651541444851544022154519416651914449451656594565556556495a55496985955515546558551555959250158554555515919446455a25522155a251552559555555a9a4405959841565921559515845156529454158565a95419401954a04819692541565555651552958964466155599a15945955556500";
let ct_hex = "fb0e00c6fd780225fc31f90102be06a8053dfb08f814081c0426f7bafc40020a084c0810f7cffed70621025800fcfc8e0489fb5c0327fc46ff1600ae07020174f796fd7b05040468fce200a5fec80660fc22062af9cd0531088bff3a048604d704a1f88cfcc702c40717036ffc4303bafef80435015ff895fc2efeb0f80505d0029104b0070b0819f853fecb020a040806ccfa06f72404f8fe05087002fdfa93f8d40027f8fbfe62fb53fb6bff64f856fb53ff55ff8bfa180336fd42ff400744068a07aafdc0fa9c070b05f1ffd30267fc34003cff76f832f8d1010bfd9f048ffd6007bcfbb0facff862047dff1f03600633ff5200f0fcb8074d04daff1c053a05b8fd48fe1702aff7c6052efe35fbf8f75102a3fc67fbb3f8b900f307a4065dfc6d07cb03900057f9b8fb3bf78df78af9bef742fdd2000fff34f8a7f928013500bafbfbfd90fb05055efcf1037b01b308e800aefc91facf03cffab702f7f98e04dafbe905460417fddb03c9f8dd019808d3fc5204f20126fae403db0132ff820510f9b5fbbcfa780042ff760345083405bb00f306dbf92efaf90705fa3ffeb9fb89f8bc01adfe95f8fbfe4afb1d02e8f772f8a7fcdc05c7f868faea08bbf73f0762f8b6f98b08bb03ba08d004ec013ef9a600b400270069fc40fb980321fb11fd21fc4cfeb9fdb402a904d404920654004e06c6fd7e05130768fbb9fd5404bcfe89fa60f745fa84faf30444027cf8eff865fd27f811f772f805fd690477fec507d704bffc580075fdccfdd805730315062a070b00c0fef8f84107f2039900defa6ffa4efabdf985fe0bfec2f7780795fe47061505beff6df859fc19052803240687080a02fafd99008d0777ff67f7f3fa9ff820f883001b05a306720060feef07b90303f9cd0762fc10fd9ff9eb06e40048061bfb1d036303edf8350063fa96fa90fd42f871f88006c6f98efc4306a503baf9dff9dc00c6027c08d9ffdcfc01f78d07ef014af85904fbffa00894002afc46fb3504e90180fa090300070505b2026700c30645f895f7edfdf9fec2f71804e90321fca3fc0106f308700297fd4b056d00e4fbe6f781ff610831fb8003eafbb6fc82fb5308befd42040bff97038a02acfc0afd330669010e0759036c0267f9faf889f961f9e5085e028504b9006905fd0498fe1a011a024ffd84fa9c0723063904b6013504c50354fcd0fcd00309fca90621ffe20651019efb380894032df8470162fec80780ff10fc6af9ca08d0fb29fe2f074d042c0096076ef9eb07c2f87a01380654005dfb9b01950558ff97fbc8f829f8e9039cfdb7007bfac60876ff16f907053701d7f829fddbfbda0450faa5001b06cf0672fc88f9a9020d076ef94ffac600f9002706e1fe5ffe1d059dfd63008d08beffb20444ff37f91007590195ff79fc9dfa09fc1c04890543fa9cfcd601680330074a067e055206c6f76ffc13033cfdcf00c3075903f0022b0519f7a5019e005afda8f98800b1055efe1a0075066ff8e900deff310216f790087c000cfc73063cfad8fc2807bffc730696051304dd07e3fd480888f7e4fe98fd0c02f40630ff0d08700720f94cfdeaffb2fae7fb0b06b1f82cf7d8f949fc5503baff79fa45fdc6fdf0f83b05f4f90a0687ff4fff34fc94f769086df71203e4f9eefea7f853fead04bf04c8ffac061efab7f7b7fe2ffe17fbd100ed00e40546044df92803ae0045f7d2fccdfe2002a9087ff7b1fed703ff020a0531027c064e063f0690f7fcfbc5fda2fd78fc1cfa1803f6007e01d1088bff670033f7b106fffe62fee3f8cb01c5041103b7fe38f8fb02e206bdfd0ffd60ff520114f93af790fd120228018903fc0192026d0474fc6afcc704d105010525fe3efcaf066ff727fbeffc4c03f3f7c004d4fba402c70369fae4fa4206c6020408f40540043ef87dfdb7fd9c005a07350666020406a80408fb9efd0c069c05250279f877ff0a06660705f7420795fa45012f003f0288fdea05a0079efe50f94f00c9061b0825f853faed010b081605b5fe9800000462045cfd24fe8600ff06a2ffb202d3010808a9f82ff8e30318fe59030c083d021f07f206480249fc10022efc64f90a01a108f403360717fcc70240056408acfb530840065d0636180000000000000008000000000000000e9c47ec59ed2fd1";
let expected = b"test".to_vec();
let sk_bytes: [u8; SECRETKEYS_BYTES] = hex::decode(sk_hex).unwrap().try_into().unwrap();
let priv_key = PrivKey::import(&sk_bytes).unwrap();
let _pub_key = PubKey::from_sk(&priv_key).unwrap();
let ciphertext = hex::decode(ct_hex).unwrap();
let plaintext = std_cipher::bytes_decrypt(&ciphertext, priv_key).unwrap();
assert_eq!(plaintext, expected);
}