Fixing test vector bug with envelope ciphertext serialization and updating VOPRF (#145)
This commit is contained in:
@@ -16,8 +16,6 @@ struct VOPRFTestVectorParameters {
|
||||
blind: Vec<u8>,
|
||||
blinded_element: Vec<u8>,
|
||||
evaluation_element: Vec<u8>,
|
||||
unblinded_element: Vec<u8>,
|
||||
info: Vec<u8>,
|
||||
output: Vec<u8>,
|
||||
}
|
||||
|
||||
@@ -26,26 +24,22 @@ struct VOPRFTestVectorParameters {
|
||||
static OPRF_RISTRETTO255_SHA512: &'static [&str] = &[
|
||||
r#"
|
||||
{
|
||||
"sksm": "c604c785ada70d77a5256ae21767de8c3304115237d262134f5e46e512cf8e03",
|
||||
"sksm": "758cbac0e1eb4265d80f6e6489d9a74d788f7ddeda67d7fb3c08b08f44bda30a",
|
||||
"input": "00",
|
||||
"blind": "5ed895206bfc53316d307b23e46ecc6623afb3086da74189a416012be037e50b",
|
||||
"blinded_element": "5cccd309ec729aebe398c53e19c0ab09c24a29f01036960bdad109852e7bdb44",
|
||||
"evaluation_element": "86bd5eeabf29a87cb4a5c7207cb3ade5297e65f9b74c979bd3551891f4b21515",
|
||||
"unblinded_element": "3c7f2d901c0d4f245503a186086fbdf5d8b4408432b25c5163e8b5a19c258348",
|
||||
"info": "4f505246207465737420766563746f7273",
|
||||
"output": "0bb570873cc0402ca38f1a2c395301f2a3627616e305f2bc54bb08c3f6ea9871eb71074e52e36b90778ba7c3e3429ef7170245c9e01647f3827fdef84d3ba930"
|
||||
"blind": "c604c785ada70d77a5256ae21767de8c3304115237d262134f5e46e512cf8e03",
|
||||
"blinded_element": "3c7f2d901c0d4f245503a186086fbdf5d8b4408432b25c5163e8b5a19c258348",
|
||||
"evaluation_element": "fc6c2b854553bf1ed6674072ed0bde1a9911e02b4bd64aa02cfb428f30251e77",
|
||||
"output": "d8ed12382086c74564ae19b7a2b5ed9bdc52656d1fc151faaae51aaba86291e8df0b2143a92f24d44d5efd0892e2e26721d27d88745343493634a66d3a925e3a"
|
||||
}
|
||||
"#,
|
||||
r#"
|
||||
{
|
||||
"sksm": "c604c785ada70d77a5256ae21767de8c3304115237d262134f5e46e512cf8e03",
|
||||
"sksm": "758cbac0e1eb4265d80f6e6489d9a74d788f7ddeda67d7fb3c08b08f44bda30a",
|
||||
"input": "5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a",
|
||||
"blind": "ed8366feb6b1d05d1f46acb727061e43aadfafe9c10e5a64e7518d63e3263503",
|
||||
"blinded_element": "227d63ca69e93bd062193c1e97fff3d5ebf628f646009d77c4e22ba6429be154",
|
||||
"evaluation_element": "063b91a12e7cbb98dfeb75d8a7eeb83aacf9fd6df7e0b4197466fb77a27fa631",
|
||||
"unblinded_element": "804ec6774764ed50a0bbad0a5f477aa04df7323acab8f98ca6e468b7790bca4c",
|
||||
"info": "4f505246207465737420766563746f7273",
|
||||
"output": "af7cc264dbc96a6b898ba0fa33bfa9e1407bf1dcfbf8772204d470d4458b8f047806679dbfa251f656b906edf9fa638e268adf979bd0e2380a092047d61f9db9"
|
||||
"blind": "5ed895206bfc53316d307b23e46ecc6623afb3086da74189a416012be037e50b",
|
||||
"blinded_element": "28a5e797b710f76d20a52507145fbf320a574ec2c8ab0e33e65dd2c277d0ee56",
|
||||
"evaluation_element": "345e140b707257ae83d4911f7ead3177891e7a62c54097732802c4c7a98ab25a",
|
||||
"output": "4d5f4221b5ebfd4d1a9dd54830e1ed0bce5a8f30a792723a6fddfe6cfe9f86bb1d95a3725818aeb725eb0b1b52e01ee9a72f47042372ef66c307770054d674fc"
|
||||
}
|
||||
"#,
|
||||
];
|
||||
@@ -63,8 +57,6 @@ fn populate_test_vectors(values: &Value) -> VOPRFTestVectorParameters {
|
||||
blind: decode(&values, "blind").unwrap(),
|
||||
blinded_element: decode(&values, "blinded_element").unwrap(),
|
||||
evaluation_element: decode(&values, "evaluation_element").unwrap(),
|
||||
unblinded_element: decode(&values, "unblinded_element").unwrap(),
|
||||
info: decode(&values, "info").unwrap(),
|
||||
output: decode(&values, "output").unwrap(),
|
||||
}
|
||||
}
|
||||
@@ -112,34 +104,7 @@ fn test_evaluate() -> Result<(), PakeError> {
|
||||
Ok(())
|
||||
}
|
||||
|
||||
// Tests sksm, evaluation_element -> evaluation_element
|
||||
#[test]
|
||||
fn test_unblind() -> Result<(), PakeError> {
|
||||
for tv in OPRF_RISTRETTO255_SHA512 {
|
||||
let parameters = populate_test_vectors(&serde_json::from_str(tv).unwrap());
|
||||
|
||||
let token = oprf::Token {
|
||||
data: parameters.input,
|
||||
blind: RistrettoPoint::from_scalar_slice(GenericArray::from_slice(
|
||||
¶meters.blind[..],
|
||||
))
|
||||
.unwrap(),
|
||||
};
|
||||
|
||||
let unblinded_element = oprf::unblind::<RistrettoPoint>(
|
||||
&token,
|
||||
RistrettoPoint::from_element_slice(GenericArray::from_slice(
|
||||
¶meters.evaluation_element,
|
||||
))
|
||||
.unwrap(),
|
||||
);
|
||||
|
||||
assert_eq!(¶meters.unblinded_element, &unblinded_element);
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
||||
// Tests input, unblinded_element, info -> output
|
||||
// Tests input, blind, evaluation_element -> output
|
||||
#[test]
|
||||
fn test_finalize() -> Result<(), PakeError> {
|
||||
for tv in OPRF_RISTRETTO255_SHA512 {
|
||||
@@ -147,8 +112,10 @@ fn test_finalize() -> Result<(), PakeError> {
|
||||
|
||||
let output = oprf::finalize::<RistrettoPoint, Sha512>(
|
||||
¶meters.input,
|
||||
¶meters.unblinded_element,
|
||||
¶meters.info,
|
||||
&RistrettoPoint::from_scalar_slice(GenericArray::from_slice(¶meters.blind))?,
|
||||
RistrettoPoint::from_element_slice(GenericArray::from_slice(
|
||||
¶meters.evaluation_element,
|
||||
))?,
|
||||
);
|
||||
|
||||
assert_eq!(¶meters.output, &output.to_vec());
|
||||
|
||||
Reference in New Issue
Block a user