Split the encryption test suite into two parts, to help reduce the cost of the test suite.
This commit is contained in:
@@ -91,6 +91,34 @@ fn rsa_decryption_tests()
|
||||
|
||||
#[test]
|
||||
#[ignore]
|
||||
fn rsa_long_decryption_tests()
|
||||
{
|
||||
run_test("tests/rsa/encryption.ext.test", 6, |case| {
|
||||
let (neg1, dbytes) = case.get("d").unwrap();
|
||||
let (neg2, nbytes) = case.get("n").unwrap();
|
||||
let (neg3, hbytes) = case.get("h").unwrap();
|
||||
let (neg4, lbytes) = case.get("l").unwrap();
|
||||
let (neg5, msg) = case.get("m").unwrap();
|
||||
let (neg6, cphtxt) = case.get("c").unwrap();
|
||||
|
||||
assert!(!neg1 & !neg2 & !neg3 & !neg4 & !neg5 & !neg6);
|
||||
let label = String::from_utf8(lbytes.clone()).unwrap();
|
||||
let key = RSAPrivate::new(UCN::from_bytes(nbytes),
|
||||
UCN::from_bytes(dbytes));
|
||||
let wrapped = match usize::from(UCN::from_bytes(hbytes)) {
|
||||
0x1 => key.decrypt(&OAEPParams::new(Sha1::default(), label),cphtxt),
|
||||
0x224 => key.decrypt(&OAEPParams::new(Sha224::default(),label),cphtxt),
|
||||
0x256 => key.decrypt(&OAEPParams::new(Sha256::default(),label),cphtxt),
|
||||
0x384 => key.decrypt(&OAEPParams::new(Sha384::default(),label),cphtxt),
|
||||
0x512 => key.decrypt(&OAEPParams::new(Sha512::default(),label),cphtxt),
|
||||
_ => panic!("Unacceptable hash")
|
||||
};
|
||||
let mymsg = wrapped.unwrap();
|
||||
assert_eq!(msg, &mymsg);
|
||||
});
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn rsa_encryption_tests()
|
||||
{
|
||||
run_test("tests/rsa/encryption.test", 6, |case| {
|
||||
@@ -133,3 +161,48 @@ fn rsa_encryption_tests()
|
||||
assert_eq!(msg, &message);
|
||||
});
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[ignore]
|
||||
fn rsa_long_encryption_tests()
|
||||
{
|
||||
run_test("tests/rsa/encryption.ext.test", 6, |case| {
|
||||
let (neg1, dbytes) = case.get("d").unwrap();
|
||||
let (neg2, nbytes) = case.get("n").unwrap();
|
||||
let (neg3, hbytes) = case.get("h").unwrap();
|
||||
let (neg4, lbytes) = case.get("l").unwrap();
|
||||
let (neg5, msg) = case.get("m").unwrap();
|
||||
|
||||
// This one's a little tricky, because there's randomness in the
|
||||
// encryption phase. So we can't just encrypt and see if we get the
|
||||
// same value. Instead, we just use this as a test vector to round
|
||||
// trip, and trust that the decryption test above makes sure we're
|
||||
// not going off into la la land.
|
||||
assert!(!neg1 & !neg2 & !neg3 & !neg4 & !neg5);
|
||||
let label = String::from_utf8(lbytes.clone()).unwrap();
|
||||
let private = RSAPrivate::new(UCN::from_bytes(nbytes),
|
||||
UCN::from_bytes(dbytes));
|
||||
let public = RSAPublic::new(UCN::from_bytes(nbytes),
|
||||
UCN::from(65537u64));
|
||||
let wrappedc = match usize::from(UCN::from_bytes(hbytes)) {
|
||||
0x1 => public.encrypt(&OAEPParams::new(Sha1::default(), label.clone()), &msg),
|
||||
0x224 => public.encrypt(&OAEPParams::new(Sha224::default(),label.clone()), &msg),
|
||||
0x256 => public.encrypt(&OAEPParams::new(Sha256::default(),label.clone()), &msg),
|
||||
0x384 => public.encrypt(&OAEPParams::new(Sha384::default(),label.clone()), &msg),
|
||||
0x512 => public.encrypt(&OAEPParams::new(Sha512::default(),label.clone()), &msg),
|
||||
_ => panic!("Unacceptable hash")
|
||||
};
|
||||
let ciphertext = wrappedc.unwrap();
|
||||
let wrappedm = match usize::from(UCN::from_bytes(hbytes)) {
|
||||
0x1 => private.decrypt(&OAEPParams::new(Sha1::default(), label), &ciphertext),
|
||||
0x224 => private.decrypt(&OAEPParams::new(Sha224::default(),label), &ciphertext),
|
||||
0x256 => private.decrypt(&OAEPParams::new(Sha256::default(),label), &ciphertext),
|
||||
0x384 => private.decrypt(&OAEPParams::new(Sha384::default(),label), &ciphertext),
|
||||
0x512 => private.decrypt(&OAEPParams::new(Sha512::default(),label), &ciphertext),
|
||||
_ => panic!("Unacceptable hash")
|
||||
};
|
||||
let message = wrappedm.unwrap();
|
||||
|
||||
assert_eq!(msg, &message);
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user