Curve25519 test vectors (#319)

* Curve25519 test vectors

* Adjust `derive_auth_keypair()` for Curve25519

* Update test vectors

* Fix Curve25519 random scalar generation

Co-Authored-By: Kevin Lewi <[email protected]>

* Update test vectors

* Update test vectors

* Update test vectors

---------

Co-authored-by: Kevin Lewi <[email protected]>
This commit is contained in:
daxpedda
2023-05-22 23:04:01 -07:00
committed by GitHub
co-authored by Kevin Lewi
parent e6c9870899
commit 98b42d609f
7 changed files with 492 additions and 145 deletions
+2 -2
View File
@@ -342,7 +342,7 @@ where
.map_err(|_| InternalError::HkdfError)?;
let client_static_keypair = KeyPair::<CS::KeGroup>::from_private_key_slice(
&CS::KeGroup::serialize_sk(CS::KeGroup::derive_auth_keypair::<CS::OprfCs>(
keypair_seed.as_slice(),
keypair_seed,
&GenericArray::from(STR_OPAQUE_DERIVE_AUTH_KEY_PAIR),
)?),
)?;
@@ -368,7 +368,7 @@ where
.map_err(|_| InternalError::HkdfError)?;
let client_static_keypair = KeyPair::<CS::KeGroup>::from_private_key_slice(
&CS::KeGroup::serialize_sk(CS::KeGroup::derive_auth_keypair::<CS::OprfCs>(
keypair_seed.as_slice(),
keypair_seed,
&GenericArray::from(STR_OPAQUE_DERIVE_AUTH_KEY_PAIR),
)?),
)?;
+14 -18
View File
@@ -12,9 +12,8 @@ use curve25519_dalek::montgomery::MontgomeryPoint;
use curve25519_dalek::scalar::Scalar;
use curve25519_dalek::traits::Identity;
use digest::core_api::BlockSizeUser;
use digest::{FixedOutput, HashMarker};
use elliptic_curve::hash2curve::{ExpandMsg, ExpandMsgXmd, Expander};
use generic_array::typenum::{IsLess, IsLessOrEqual, U256, U32, U64};
use digest::{FixedOutput, HashMarker, OutputSizeUser};
use generic_array::typenum::{IsLess, IsLessOrEqual, U256, U32};
use generic_array::GenericArray;
use rand::{CryptoRng, RngCore};
use subtle::ConstantTimeEq;
@@ -58,26 +57,23 @@ impl KeGroup for Curve25519 {
}
}
// Implements the `HashToScalar()` function from
// <https://www.ietf.org/archive/id/draft-irtf-cfrg-voprf-19.html#section-4>
fn hash_to_scalar<'a, H>(input: &[&[u8]], dst: &[&[u8]]) -> Result<Self::Sk, InternalError>
fn hash_to_scalar<'a, H>(_input: &[&[u8]], _dst: &[&[u8]]) -> Result<Self::Sk, InternalError>
where
H: BlockSizeUser + Default + FixedOutput + HashMarker,
H::OutputSize: IsLess<U256> + IsLessOrEqual<H::BlockSize>,
{
let mut uniform_bytes = GenericArray::<_, U64>::default();
ExpandMsgXmd::<H>::expand_message(input, dst, 64)
.map_err(|_| InternalError::HashToScalar)?
.fill_bytes(&mut uniform_bytes);
unimplemented!()
}
let scalar = Scalar::from_bytes_mod_order_wide(&uniform_bytes.into());
let scalar = Scalar::from_bits_clamped(scalar.to_bytes());
if scalar == Scalar::ZERO {
Err(InternalError::HashToScalar)
} else {
Ok(scalar)
}
fn derive_auth_keypair<CS: voprf::CipherSuite>(
seed: GenericArray<u8, Self::SkLen>,
_info: &[u8],
) -> Result<Self::Sk, InternalError>
where
<CS::Hash as OutputSizeUser>::OutputSize:
IsLess<U256> + IsLessOrEqual<<CS::Hash as BlockSizeUser>::BlockSize>,
{
Ok(Scalar::from_bits_clamped(seed.into()))
}
fn is_zero_scalar(scalar: Self::Sk) -> subtle::Choice {
+2 -2
View File
@@ -60,7 +60,7 @@ pub trait KeGroup {
/// ensure that the KeGroup is used for the hash_to_scalar operation (as
/// opposed to the OprfGroup).
fn derive_auth_keypair<CS: voprf::CipherSuite>(
seed: &[u8],
seed: GenericArray<u8, Self::SkLen>,
info: &[u8],
) -> Result<Self::Sk, InternalError>
where
@@ -81,7 +81,7 @@ pub trait KeGroup {
// skS = G.HashToScalar(deriveInput || I2OSP(counter, 1), DST = "DeriveKeyPair"
// || contextString)
let sk_s = Self::hash_to_scalar::<CS::Hash>(
&[seed, &info_len, info, &counter.to_be_bytes()],
&[&seed, &info_len, info, &counter.to_be_bytes()],
&[&dst_1, dst_2],
)
.map_err(|_| InternalError::OprfError(voprf::Error::DeriveKeyPair))?;
+81 -81
View File
@@ -546,114 +546,114 @@ static TEST_VECTOR_P384_RISTRETTO255: &str = r#"
#[cfg(feature = "curve25519")]
static TEST_VECTOR_CURVE25519_P256: &str = r#"
{
"client_s_pk": "e109acb05ead255b0ddef3b1b2a04161149fdbcf9d1a1583cf3bb39dd43f3d6f",
"client_s_sk": "88e628927240f786517e00a5b77ed2fb383e11361c0d4b3324ffb6b927aef373",
"client_e_pk": "334dff6942070b0b1395835e54dc7531699fd5ceed7f197f81d5d28090316b21",
"client_e_sk": "78ab0d232c8231d1a84ad3cfb4d27226d432954ba9a422a825baac4ac4ee3257",
"server_s_pk": "b005c8dca395f0ecd2b6355d600d46199e2f9f389aa84e719d75424b4b8b2b44",
"server_s_sk": "88193c55d0a16c2c833be2a0004ebba32ed63019d94b1a498cdfc04310a9a563",
"server_e_pk": "20303db181367b52118c89bd7e0d4d97d1c6382bd65ca166cd9876c9b6fc9f1d",
"server_e_sk": "58bbac2fd1ee62043eb05631a361b71abfede72530899129035a0ea5454e8042",
"fake_sk": "08f3aeac6bd5d6a30cd59e0c74e0ec90254828a3ff8b18a622a3e8bc6a31be73",
"client_s_pk": "38b0b198b9052e984915d69db446e9f3a849a1757326f515931ee09edcdbc961",
"client_s_sk": "40055b17e92514255397f1d41a3dab3ec99e26e59a3aa87e51e57be393f8bd79",
"client_e_pk": "e4aa7ebf12ea0bbbea4cae36dc7fc6487a1d978c776d9dfc99b242352ad02020",
"client_e_sk": "188d93b88f1f0d53e37e23d3cd02739313225730c604bca989ff7b28092e4a6f",
"server_s_pk": "f55eb503c79e571e2f02df2eb26fc7d8eb643f9bbd6e21e2380b146ac4b63015",
"server_s_sk": "e0413670da0428b85919a9bc5224cd1018a22e2ff0d28806b823939fac56a161",
"server_e_pk": "ad21cc835ae87a3b57f3b4a7a33e910119911fb2191d7d2a9886b236b650076f",
"server_e_sk": "f8d2b5904465387c3f9cf701a90c452118236f55b712e577d80ca1d25a8fbb53",
"fake_sk": "506072af99437e36b7a20edabf6f74b9de5bff63b68498b42093eaa3ff217d59",
"credential_identifier": "637265644964656e746966696572",
"id_u": "696455",
"id_s": "696453",
"password": "70617373776f7264",
"blinding_factor": "6b68b1711d94273abfec09e6a747b8d5f9b3b42250dc867d9a69808ddde97602",
"oprf_seed": "a1ebc0d9b741fbe1b4d3d5b97a89eeca2e3f42ea54afad209e3462d9d8c2f5c3",
"masking_nonce": "653f38d85dd789596c39617ef7a54d33b20dc40bab5b1acfc8deef215c14322ab9d7801cd27ac622bcd31f62cf0d739a1e296a2ca8b2f8be854290e0aad33068",
"envelope_nonce": "aa76064915e29d00600b6a2b694c0da826a9388bf58fa39fb41fa22b3e6083f0",
"client_nonce": "be19d2540482db6096279c55970711cda737c4cc1695a8e417d1ebf19691f223",
"server_nonce": "1eaa5da8f04d0b707e147ff78af9aa56f9d9b6042205063c24579d10048cb06e",
"blinding_factor": "77f72593b0d5929fad255520968e9c50e23be4435e6a905f76f3bea8f7c27b64",
"oprf_seed": "dc731ad0171dfde4bfecabfc1cdeb4a0290154a8471e638d113ee4982256d9a1",
"masking_nonce": "a0e80933055bd24cb72ff56934bc806238f4b73343ad51a79d310d9aa5b42de9ed163be75585cf084abd740d9f4deea8ce8fa9b5d51ac05d5cf05e2ff7978885",
"envelope_nonce": "badbb8f3e2fce06a7e3b55837b0780808dcee7ac66790a7350a54397cdbc2a6f",
"client_nonce": "4f233bf42d70daef2c8d15f8f1f1dd05c17d42a823729e5e03b95b888ffd292f",
"server_nonce": "a6c2b03c340452bbb0beb83145c9b2def77c20dd9273f9b659e7994767d54a6a",
"context": "636f6e74657874",
"registration_request": "02efc05fc89c30469d017160a3ac0630a3546b19dd20193a7cbea801482e4d0f00",
"registration_response": "02120dbe7291cf53739fef3955f49956147f518e9f2ee9f17e4c061fefe09c3cccb005c8dca395f0ecd2b6355d600d46199e2f9f389aa84e719d75424b4b8b2b44",
"registration_upload": "ba486310fcc3cbacf1b3835bcd06aa33d302a8cff11874a34f10d2ed3940f81d547dc06cd2faa5afe8fe75880c1e6ebca4b4734f8a9e95a8ff29e19db3d5d99e88e628927240f786517e00a5b77ed2fb383e11361c0d4b3324ffb6b927aef373ef4454dd53eedad0082f2dafb2ef474394d8a15dfc4a907f5fbf75403b399a9e",
"credential_request": "02efc05fc89c30469d017160a3ac0630a3546b19dd20193a7cbea801482e4d0f00be19d2540482db6096279c55970711cda737c4cc1695a8e417d1ebf19691f223334dff6942070b0b1395835e54dc7531699fd5ceed7f197f81d5d28090316b21",
"credential_response": "02120dbe7291cf53739fef3955f49956147f518e9f2ee9f17e4c061fefe09c3ccc653f38d85dd789596c39617ef7a54d33b20dc40bab5b1acfc8deef215c14322a25ceb12702124627c855cd281b4bedb24821ddee72fac2ff840343772ebb3145b9062e1b6804a9b48782be7194cf1092b0f0873ca01a56c04612b8070602e1a361731d0a51df56d9badcb8dfae739c71d640cd5fc49a53d40d109c261a587b9158bbac2fd1ee62043eb05631a361b71abfede72530899129035a0ea5454e80424a84ce00257ddfcfa70d36591f2c2db293276114660134be94d3f5dad10c312ccdc54d5a631789a6d39697a35e12a4900ff7f356b3aa97773f225d32dc901b21",
"credential_finalization": "e1ac3b00c834a871e3163ea28b4611810e530b57c9e0e698b5fe6353c9f7ebba",
"client_registration_state": "6b68b1711d94273abfec09e6a747b8d5f9b3b42250dc867d9a69808ddde9760202efc05fc89c30469d017160a3ac0630a3546b19dd20193a7cbea801482e4d0f00",
"client_login_state": "6b68b1711d94273abfec09e6a747b8d5f9b3b42250dc867d9a69808ddde9760202efc05fc89c30469d017160a3ac0630a3546b19dd20193a7cbea801482e4d0f00be19d2540482db6096279c55970711cda737c4cc1695a8e417d1ebf19691f223334dff6942070b0b1395835e54dc7531699fd5ceed7f197f81d5d28090316b2178ab0d232c8231d1a84ad3cfb4d27226d432954ba9a422a825baac4ac4ee3257be19d2540482db6096279c55970711cda737c4cc1695a8e417d1ebf19691f223",
"server_login_state": "6c744915f5aba566f8cc9c601e3a0388c679a07da549905f0350ec3fbc2bbecf8b62a285aa728a8a124d9b30b986745e334143e0fdd1b112fcfb7f87c412da6b405910d03caf6cb3ec6b21c3c7095f136ff050f3c294ee268c537116b90c8c18",
"password_file": "ba486310fcc3cbacf1b3835bcd06aa33d302a8cff11874a34f10d2ed3940f81d547dc06cd2faa5afe8fe75880c1e6ebca4b4734f8a9e95a8ff29e19db3d5d99e88e628927240f786517e00a5b77ed2fb383e11361c0d4b3324ffb6b927aef373ef4454dd53eedad0082f2dafb2ef474394d8a15dfc4a907f5fbf75403b399a9e",
"export_key": "c8d95a7b0a2c3baa488949effc399d39e64ee09cae26e26ee0ded26e295d9f0b",
"session_key": "405910d03caf6cb3ec6b21c3c7095f136ff050f3c294ee268c537116b90c8c18"
"registration_request": "02ff13cea4ee0d08c43547401b92ef22cbee3809a82793f408ce06334b6b68e4a4",
"registration_response": "02523d3ffef8304612b881bd531046ebaa9bc4b2a8907aea0bc04c9cf96234c6bdf55eb503c79e571e2f02df2eb26fc7d8eb643f9bbd6e21e2380b146ac4b63015",
"registration_upload": "8010abb90d3e91b604211096baed17a17870e86184b1235d6b63e03e23ce17235c5cff09c6da8bde2b79f14b65182675bd12e43afefb7180c0293b0c691400c340055b17e92514255397f1d41a3dab3ec99e26e59a3aa87e51e57be393f8bd79379d6e9677361f90c04568ece1ed408c3a4bcfee8d2d51fb37be07cf1ff2dd45",
"credential_request": "02ff13cea4ee0d08c43547401b92ef22cbee3809a82793f408ce06334b6b68e4a44f233bf42d70daef2c8d15f8f1f1dd05c17d42a823729e5e03b95b888ffd292fe4aa7ebf12ea0bbbea4cae36dc7fc6487a1d978c776d9dfc99b242352ad02020",
"credential_response": "02523d3ffef8304612b881bd531046ebaa9bc4b2a8907aea0bc04c9cf96234c6bda0e80933055bd24cb72ff56934bc806238f4b73343ad51a79d310d9aa5b42de90715f6d20ea09505d5fee194b49e0bca9298e609c0edd5b8c809664f0cb1bb2f23e54a172f9b51bacce6cdea6a8c726ef7b5f89e60656777b81d5a46d35a06ccb38baffc1310edb238c576e1131e5727fd675308d58bbf261adea4a8d5ca48b0f8d2b5904465387c3f9cf701a90c452118236f55b712e577d80ca1d25a8fbb53a84a2876fce2b84c8e614654eec37c5108839ecde31e59ff7ecda7c8b54fe935f8f1e6658dc5ec3e6a09d1b1e8061e2aed69c4bed011d9643073774efa449f79",
"credential_finalization": "d00d48e102832a2b524a0c78c860cc2a7f6f51ba7b64167aec2625c298e194e2",
"client_registration_state": "77f72593b0d5929fad255520968e9c50e23be4435e6a905f76f3bea8f7c27b6402ff13cea4ee0d08c43547401b92ef22cbee3809a82793f408ce06334b6b68e4a4",
"client_login_state": "77f72593b0d5929fad255520968e9c50e23be4435e6a905f76f3bea8f7c27b6402ff13cea4ee0d08c43547401b92ef22cbee3809a82793f408ce06334b6b68e4a44f233bf42d70daef2c8d15f8f1f1dd05c17d42a823729e5e03b95b888ffd292fe4aa7ebf12ea0bbbea4cae36dc7fc6487a1d978c776d9dfc99b242352ad02020188d93b88f1f0d53e37e23d3cd02739313225730c604bca989ff7b28092e4a6f4f233bf42d70daef2c8d15f8f1f1dd05c17d42a823729e5e03b95b888ffd292f",
"server_login_state": "bc8e945f9bf279ca6e692eef43108aeedf80a8a3218185e17ebf3d4ce615439af1241c85909d21f186c53031317205e55cecd1a946a8c5f24279a8da6dc22246e0a3ffe2e9ba8378de1889ab273d5e163a354f45f0313040368c17f0928c5a27",
"password_file": "8010abb90d3e91b604211096baed17a17870e86184b1235d6b63e03e23ce17235c5cff09c6da8bde2b79f14b65182675bd12e43afefb7180c0293b0c691400c340055b17e92514255397f1d41a3dab3ec99e26e59a3aa87e51e57be393f8bd79379d6e9677361f90c04568ece1ed408c3a4bcfee8d2d51fb37be07cf1ff2dd45",
"export_key": "0829e4020fc39969675e55a41b666c6a6e90828e4d77ec9cadb2a06960757397",
"session_key": "e0a3ffe2e9ba8378de1889ab273d5e163a354f45f0313040368c17f0928c5a27"
}
"#;
#[cfg(feature = "curve25519")]
static TEST_VECTOR_CURVE25519_P384: &str = r#"
{
"client_s_pk": "47bf6620ef1793404dedc4b92516e8633b3580d8e9ab7d38f4664a9cc4308e3c",
"client_s_sk": "7051dd78600860b1c96bfd4729fc792111c06b7653057ab9dd32efe03052a564",
"client_e_pk": "741bb246da7c5b1361038e78d25006c3d8388b7361e9ca082e5a9770edfd7e42",
"client_e_sk": "68ea700379d9f0d73594cd3edcd2096a8ce99af9faf736c11262d15b91584f51",
"server_s_pk": "cef452814c8d96e7187efdc6f39b4cf3b9af79a3303fdc1ff06d73fcdfa9fc09",
"server_s_sk": "40265c6e7b69c63b1dd77b0a5b55736ed5a3a3e1ef4d6a2be5d84a2b8c9f4078",
"server_e_pk": "95f2ea9503fae836c029d7a85229eb537b6a82c9f0362802e488878eaef5655f",
"server_e_sk": "f0209a74b6f09e05d3214bbdbbd4d1c3386a7d47213746876e8d840a56299f65",
"fake_sk": "8865f09f0d9270e951c7fb723922095ace2febd5a673fd2bfe85456140afb97e",
"client_s_pk": "48f5981857f751260755dda39b0bb9301d289cdcd33e1f67e73be3ef6dc3be1a",
"client_s_sk": "50aca1815bff3bb177b08c8266268de689ceae2d1c531e8b8bc43eec5135be44",
"client_e_pk": "d45cd2abb676ce52929d3acb84d5f28728f151dc38cd9a5563ebe3f5a01c9d3e",
"client_e_sk": "2086a9563d612e810c1577ff8ca15c9bde4bdc9a8b798ffbdc2a8c741f523a7c",
"server_s_pk": "6b4714a941d5ead7b95ef5a8a46931b2e1a70a9bcfafaf46e62f899501334c13",
"server_s_sk": "a0f72a112e1eabac338b8db81ec6351849ce5bc87b18621228574f23cc49e742",
"server_e_pk": "aff17bf2ef5da674aaf387d9a9d703f11a49420b16a0ed737b7273302c9c3f2f",
"server_e_sk": "880bb9e8b1f6cd5cfd33244645594597abe0f6745c14673fe7f7b23093645c6e",
"fake_sk": "68d483d304f72cd4a23b168b205a8dc24b5701dfc0b01beaa06d1b981dfa6a68",
"credential_identifier": "637265644964656e746966696572",
"id_u": "696455",
"id_s": "696453",
"password": "70617373776f7264",
"blinding_factor": "23b19816e290cafe9796db34c4922211de1498df4bab2e5ce0c318e533658771d117e9a9eae9d016d7433d3400b4d99c",
"oprf_seed": "b29c73aa3651b3eda0cd7e327c0c60693c2b667707d4d7825f862ccca1e319ab0ca5de2f6fa89829cc73c1340fcff00b",
"masking_nonce": "25431b6a925130d744101b95fd1ddd822173d97a945b3a7f721cff33c4d3afd4fd93c70914553bde5d50144117cd601449bcdc15f2606a38402aea3ba404a8b1",
"envelope_nonce": "f7a5c2edad92af2dc4d0901e54090341a66cd925d0b487f92a64c8cf0aaefe2d",
"client_nonce": "48b90f2c8909576edc61743b84d66ce93ae5432d60bb29eadb076e027a163731",
"server_nonce": "b4e8004b2f78bd47a132a9ae1640984990066856553ec12e6d409c55af0f93db",
"blinding_factor": "6b5d786310cb26e3fe5db136630c8093ff5c0e02e4592aaa661db37afa3633a685cca5f854e7f4a995637f9a47148c45",
"oprf_seed": "bb6299ef75f1fd683b01fe618c97e76f78d00beeaf89f8d9bd26c4957370c763995903e646d79a1e227792e76f3bab25",
"masking_nonce": "6d5c6727439f651e6bcdd9efc0b94c245eb99dd1f93168a39adb606fa2d10999f0982eb5d81ba9d6137e9a3dd67137079f85fa26337a34920644c2876e359ba0",
"envelope_nonce": "f0763b1b82e7ef64ff776c9c54c904fca0daff3ccb3c5491ed0572dde5d80b43",
"client_nonce": "de803700c352584a1acb7dad14ad0b0f3dd9f705cc5d7d116525655b1488aa4e",
"server_nonce": "b223d9c59395281d0c1a0ca400239a13c654b574e009f2fa17c5c0b1bbe122df",
"context": "636f6e74657874",
"registration_request": "036da1da44ad100ce9c80f074b98e8564e131d6d9186c666e44e2f2ac74822a86aa9af120bc2ebbba3f81dddea21fb418e",
"registration_response": "02faff596ac44ab490917a3153c50d67f46bfd12877c2d42d9ae855af3160461aa055ba4900a7c2df6b89acee908376b09cef452814c8d96e7187efdc6f39b4cf3b9af79a3303fdc1ff06d73fcdfa9fc09",
"registration_upload": "4f6f6c4b7d2dce29897218c5c609aea30288112ed8c33d8cd67f2b19c3fd1928fb65782af6070e84bb7a542813fff00fb7f71a7797089072babfe06ba01d1845e0c8b6a9b17b65f6b992c00ce34f115b7051dd78600860b1c96bfd4729fc792111c06b7653057ab9dd32efe03052a564d02881210e8c7e043f278032e691a23e8451377624aebcbf7364155158c8cc0a3df1f2c3e669785b81f17016ba7a7acd",
"credential_request": "036da1da44ad100ce9c80f074b98e8564e131d6d9186c666e44e2f2ac74822a86aa9af120bc2ebbba3f81dddea21fb418e48b90f2c8909576edc61743b84d66ce93ae5432d60bb29eadb076e027a163731741bb246da7c5b1361038e78d25006c3d8388b7361e9ca082e5a9770edfd7e42",
"credential_response": "02faff596ac44ab490917a3153c50d67f46bfd12877c2d42d9ae855af3160461aa055ba4900a7c2df6b89acee908376b0925431b6a925130d744101b95fd1ddd822173d97a945b3a7f721cff33c4d3afd4ef3e8ead079f059d604ce87722708a50b49fd35ab475d7bad69d507e5a7f1bc499ac79e68265a5a89ee3ef56e250e3b724113ba179d07bf846ff2c068e0e46e2c57c5d98571d169bef75148c2adad3e4d6a927b53763fa8fd197ab6b73500a6dcbc6718556f48a74e87e737802d08c9df0209a74b6f09e05d3214bbdbbd4d1c3386a7d47213746876e8d840a56299f65f7bc99ca5350019cc62b759ddacbb55172e13b762614ebe959987840db244c7f548798cdd6a3354f79d58c1fd39715cc31b7ab7feb1702aec24da864500831fb39a83920b1e2e32ef23e73987fde2e24",
"credential_finalization": "554a499b045b2c94d68f0bddeb41f76c32f7b357000eadbfea0487ba8dc0b146491f4ff614619e955686d64d4575f564",
"client_registration_state": "23b19816e290cafe9796db34c4922211de1498df4bab2e5ce0c318e533658771d117e9a9eae9d016d7433d3400b4d99c036da1da44ad100ce9c80f074b98e8564e131d6d9186c666e44e2f2ac74822a86aa9af120bc2ebbba3f81dddea21fb418e",
"client_login_state": "23b19816e290cafe9796db34c4922211de1498df4bab2e5ce0c318e533658771d117e9a9eae9d016d7433d3400b4d99c036da1da44ad100ce9c80f074b98e8564e131d6d9186c666e44e2f2ac74822a86aa9af120bc2ebbba3f81dddea21fb418e48b90f2c8909576edc61743b84d66ce93ae5432d60bb29eadb076e027a163731741bb246da7c5b1361038e78d25006c3d8388b7361e9ca082e5a9770edfd7e4268ea700379d9f0d73594cd3edcd2096a8ce99af9faf736c11262d15b91584f5148b90f2c8909576edc61743b84d66ce93ae5432d60bb29eadb076e027a163731",
"server_login_state": "ef411e8209facbabbeb99d7b73600d6f6c54df43969048381619b7e2c448eff411a67be3f782d9e7a64fb86434cf4923976f0526ff3ddb232492982e34b85e22ca4d6ce6d77608e69966e6ee946df1895483da7e27974d8013f668aab235376d0fc20aa7385934f47c498b804483c436514ac31e3817067615464a89afb46ffff7cc2bd52e05cbee3a23c6ec9a43705e",
"password_file": "4f6f6c4b7d2dce29897218c5c609aea30288112ed8c33d8cd67f2b19c3fd1928fb65782af6070e84bb7a542813fff00fb7f71a7797089072babfe06ba01d1845e0c8b6a9b17b65f6b992c00ce34f115b7051dd78600860b1c96bfd4729fc792111c06b7653057ab9dd32efe03052a564d02881210e8c7e043f278032e691a23e8451377624aebcbf7364155158c8cc0a3df1f2c3e669785b81f17016ba7a7acd",
"export_key": "c90f604c28e60aa7b386ae9b37fc1d9d2f9aabf9c4e6ead8eb2b132667121f19bc6e99afdfc287aff26224fc451a9328",
"session_key": "0fc20aa7385934f47c498b804483c436514ac31e3817067615464a89afb46ffff7cc2bd52e05cbee3a23c6ec9a43705e"
"registration_request": "021479a9b9259fd3468c21a845ae0394f7ae3799eaec2071a704de76a8842650396f5cdf675fce44c576273caa0f0ef91f",
"registration_response": "03aba676b07a6ee5d7f377bc6d63bd44181ff54a2b2e855dc6acafab8a9eefcd907add6d5a727f9b4ed2371f1b634709566b4714a941d5ead7b95ef5a8a46931b2e1a70a9bcfafaf46e62f899501334c13",
"registration_upload": "0e1968eb57014818e1a47db69ffc2e6bd43413fe50724a0f2e66b0bbe00c5968abbc8ddf519182bc468fbd10aba973679e7bf15a3e892dd654ac44e182b5e98b19f191ddd7116c820646da8be696b74450aca1815bff3bb177b08c8266268de689ceae2d1c531e8b8bc43eec5135be44c61537ea762ad6c261d760b4a62f812776e6080b270454f250b7a038519b004883883d61431cf5a579c276997d145473",
"credential_request": "021479a9b9259fd3468c21a845ae0394f7ae3799eaec2071a704de76a8842650396f5cdf675fce44c576273caa0f0ef91fde803700c352584a1acb7dad14ad0b0f3dd9f705cc5d7d116525655b1488aa4ed45cd2abb676ce52929d3acb84d5f28728f151dc38cd9a5563ebe3f5a01c9d3e",
"credential_response": "03aba676b07a6ee5d7f377bc6d63bd44181ff54a2b2e855dc6acafab8a9eefcd907add6d5a727f9b4ed2371f1b634709566d5c6727439f651e6bcdd9efc0b94c245eb99dd1f93168a39adb606fa2d10999a439ad64da556f040fc4b1830ec5f2eb687f0428ba6922790261799bf57da9170c3dc0b4fafcc0d5c29369bf0a0cb5b2c45be562bd2f5916995f4305016814fcfb91a1a7a0ce6e9a838459243bc3f97f8409d7850cdb1898995e8f604ef2d3f5b517103ae49c7295e184908524105e5a880bb9e8b1f6cd5cfd33244645594597abe0f6745c14673fe7f7b23093645c6e7a62bf93aba31ac9fa1cf47d544296b394f332be17ebe261dc877a52925a522ceff4305ad5d438eac1c18eeb41806f132972edc808a6d61d2916a5079dccb7036df014ced5e1e997fd0f261f2e352210",
"credential_finalization": "87f513c31cd2b9cf2925aa837f94830451dd7e77c992a4553be03975c5ebf267a4d2cee9107c070a6d36a080d5382050",
"client_registration_state": "6b5d786310cb26e3fe5db136630c8093ff5c0e02e4592aaa661db37afa3633a685cca5f854e7f4a995637f9a47148c45021479a9b9259fd3468c21a845ae0394f7ae3799eaec2071a704de76a8842650396f5cdf675fce44c576273caa0f0ef91f",
"client_login_state": "6b5d786310cb26e3fe5db136630c8093ff5c0e02e4592aaa661db37afa3633a685cca5f854e7f4a995637f9a47148c45021479a9b9259fd3468c21a845ae0394f7ae3799eaec2071a704de76a8842650396f5cdf675fce44c576273caa0f0ef91fde803700c352584a1acb7dad14ad0b0f3dd9f705cc5d7d116525655b1488aa4ed45cd2abb676ce52929d3acb84d5f28728f151dc38cd9a5563ebe3f5a01c9d3e2086a9563d612e810c1577ff8ca15c9bde4bdc9a8b798ffbdc2a8c741f523a7cde803700c352584a1acb7dad14ad0b0f3dd9f705cc5d7d116525655b1488aa4e",
"server_login_state": "372da5d4c6d77a4fb44434763763edce2d6b83f72097c725c91aae2ff35a42d5954d68fb3cb2e62cbfc1aae56c5c275a5589be237d12cb26f934e78173539d1a48026c1ce9b7d3af0673bdf5088304464103037ccc6358fb87fba80e5b8b1596f51996af62e3d8091418b330cf334522719051d9f5adb904ce2fd2216a1e69fa71c245df8762e6d90d179f6b45ddee4c",
"password_file": "0e1968eb57014818e1a47db69ffc2e6bd43413fe50724a0f2e66b0bbe00c5968abbc8ddf519182bc468fbd10aba973679e7bf15a3e892dd654ac44e182b5e98b19f191ddd7116c820646da8be696b74450aca1815bff3bb177b08c8266268de689ceae2d1c531e8b8bc43eec5135be44c61537ea762ad6c261d760b4a62f812776e6080b270454f250b7a038519b004883883d61431cf5a579c276997d145473",
"export_key": "fb264c2b17768a2d567fe50b42ae3895f367f8c26c01e1d66491667d1971811d295af553a92bf8895499a90818721bc8",
"session_key": "f51996af62e3d8091418b330cf334522719051d9f5adb904ce2fd2216a1e69fa71c245df8762e6d90d179f6b45ddee4c"
}
"#;
#[cfg(all(feature = "curve25519", feature = "ristretto255"))]
static TEST_VECTOR_CURVE25519_RISTRETTO255: &str = r#"
{
"client_s_pk": "425d9690de8c494cf18020f0b8977aa02d2701e20ae22f7e9a22396b219bdd09",
"client_s_sk": "48064fdc57a4f75dd1e07013c7123cc9f63bcc7cc812fd4d6785b10d323b2549",
"client_e_pk": "643a85ac2e212108b822e2ed22705aa1da98db515cc010ea5f803a227be1c919",
"client_e_sk": "70662c87da47502582f94edcc41babaf50eff95125ac666a9ff02f06c852276a",
"server_s_pk": "a4fac053abfb5d79def37a3ea1d19d85d34b84a0ac4cbfc4cea1f368cd99553c",
"server_s_sk": "50e025031678aea84429d14259ab2d7e2d95f552e7a694d58d00e1ed4517b14f",
"server_e_pk": "957eb70736694ad3058275fae43bb48204d88d65b80b7b197192f78c0942d013",
"server_e_sk": "6802638853a41e9773fe51a9ab442465176e2ccef3eb3855a343a411ac35e952",
"fake_sk": "881be0fdc6ba406b4725daf16cf0dd6cef20c8e401db26c6827fb93f30906c69",
"client_s_pk": "363782085dc9ce45941b115cbca3b7ec9edca78b1a1577b1e38f45257db10c47",
"client_s_sk": "f814cf6d954ce49ba9f7d08057fa0532a6f3f26015e6b840f699abb2ff6d3e61",
"client_e_pk": "39d8880879a8d2e59f79bb9e3c2764295ac555fbf55a313dfe833dbfd0492e1b",
"client_e_sk": "20138f08d643dec02a1a7712a2dafaf2fc84b5b0b100f400dc79cc177aa04c52",
"server_s_pk": "2a5ae7873d58cae6380a31e9bb05139569b6788157fd831a86a0b24817e20e47",
"server_s_sk": "088119352422e4c69bec2b9dbe2981547cfbb6a50000885c1f0daa183f62dc5a",
"server_e_pk": "95ed39658ea9dcd4a0faf9592d516221039d40830a5e5c00811bad7c239a6019",
"server_e_sk": "78b4f265e4c44bde1e29235a298565e70ce9213f6e80bf17ca539cf38e801545",
"fake_sk": "18e90cf8c31de503cb9dda3dbc702965b7dee7d1484a7f01a85dd8aae577864f",
"credential_identifier": "637265644964656e746966696572",
"id_u": "696455",
"id_s": "696453",
"password": "70617373776f7264",
"blinding_factor": "7dbc12dd8b1280bc76567b32f150e1c96a7d88d8dbb7083eae67c85990905e01",
"oprf_seed": "4c335f4d75f53e9bf593fbbb4971763fc27caed1151ea054aa582178794a95b11ce9fbead333205f705cb9dc717ed643fa743ddfa606f7d7e02fcb750d70294c",
"masking_nonce": "4df6e5189bce92a87ade075e4bfb5aba25e1a215c9da97bfefe3751abbd516f74e65aa7f5571e603936e8aba0d60a317fe991478e12e97e5303ddac6b5eed135",
"envelope_nonce": "bc787b112a62e219225fb7b157a7455014726c9ef4176551526615511d2b08c1",
"client_nonce": "1e930824df3cd0e4d0423a87371ad1d903770fed134a2ff5839493ea29d4ac5f",
"server_nonce": "6d41b975cd7106c6db6e1d89af45e3e7f1635cd0c1c866be96d517314d04b585",
"blinding_factor": "9d0ccae042dd9cf119313ba1681b32577fd3405d1d1b063cdbb4bede1782780d",
"oprf_seed": "432646fd0cd923ba8c94e5ef119ade9b554d74322f1dd0363b89c122139886d6e15de59bed3d1763509fb0aa7f389aad1fc94dfeaf98ca38f03d88fe072bb56f",
"masking_nonce": "67470c894da0aa7310fe5348bfa58aad824e21dec080afbd3d9925be73291d31c65b7b3bda7d01782d3b48c79c94b56820d005a77a92fe9a93dd72eb1432064d",
"envelope_nonce": "109c0d52194e20d434558b22cd5957dfc10f6123029a8215ab956ac617ce2030",
"client_nonce": "bfd99626a535067869df816d1896f7407b8589ef8d553422b55682b1305e1912",
"server_nonce": "914e71cb6641c8f34cf5bc7c1f0aa091cda4acba1ea00e4dc0f638751b0fc51f",
"context": "636f6e74657874",
"registration_request": "ac14c0042d20a0feb27ef3215db82e66786872cddc0568508318526477cc1830",
"registration_response": "3243003d14d0d29621c4136f9ce9a09d4fc24e77fccffeb9619134a26d14c226a4fac053abfb5d79def37a3ea1d19d85d34b84a0ac4cbfc4cea1f368cd99553c",
"registration_upload": "3b7ccbd3e9aba6b0e1b04e2fe7a5a1e7a9e1d4c2ab66e87e2626ab585c50fb3d8f6ce5c600adf8bb328211944c9ff00135fafad3b3552806bda433db0ea2be69f9abc83d572dfefa4d0062dd98f73a51cf9398621fd7398584488614f611ed3748064fdc57a4f75dd1e07013c7123cc9f63bcc7cc812fd4d6785b10d323b254917976677c28c001c43665f9709975a5c403a2fbbaf2fe853b80497ca5bb0e8300c671775ced7247fe6304c34c4f1f96ddcab1323682741cf899a9d208d392ce0",
"credential_request": "ac14c0042d20a0feb27ef3215db82e66786872cddc0568508318526477cc18301e930824df3cd0e4d0423a87371ad1d903770fed134a2ff5839493ea29d4ac5f643a85ac2e212108b822e2ed22705aa1da98db515cc010ea5f803a227be1c919",
"credential_response": "3243003d14d0d29621c4136f9ce9a09d4fc24e77fccffeb9619134a26d14c2264df6e5189bce92a87ade075e4bfb5aba25e1a215c9da97bfefe3751abbd516f77933211492cc397232556fd7092e998fb80ef2d5fb351cec4ab89864fc6822dcb7c88065773da1f9f89df37a18e012c60a90a8464242bd0b627dfd62a435f2ae4ddb54d57b3fb76f625cdb71b1e1927558c3e378503dd17251997c9d19dba8bb0331f474eb49035edc30b4cb8eec75ad261c6ef789ce1dd24d1dc1c1a4004cb36802638853a41e9773fe51a9ab442465176e2ccef3eb3855a343a411ac35e952925e2d2267d597d6f6a672cd95f6ea7ec152ea4d47d4cc7806ae406910627c2f2e8511ea4a4440a7538f7a964f7e789c8041e7a7bafb60c9c07bf9748a435da4a0b6cd195136427cca4414894202913585e488eb1f3406d3e272415827ddc137",
"credential_finalization": "f3b767aeabf8fccbabee31baae90ccb95f0aff73824f8832e1ef91d988f873d4c1c92c6dd47cc3b6cf3d9ba3d74d2111e7709060da1ad17eda5697ad5bdf1523",
"client_registration_state": "7dbc12dd8b1280bc76567b32f150e1c96a7d88d8dbb7083eae67c85990905e01ac14c0042d20a0feb27ef3215db82e66786872cddc0568508318526477cc1830",
"client_login_state": "7dbc12dd8b1280bc76567b32f150e1c96a7d88d8dbb7083eae67c85990905e01ac14c0042d20a0feb27ef3215db82e66786872cddc0568508318526477cc18301e930824df3cd0e4d0423a87371ad1d903770fed134a2ff5839493ea29d4ac5f643a85ac2e212108b822e2ed22705aa1da98db515cc010ea5f803a227be1c91970662c87da47502582f94edcc41babaf50eff95125ac666a9ff02f06c852276a1e930824df3cd0e4d0423a87371ad1d903770fed134a2ff5839493ea29d4ac5f",
"server_login_state": "74116bce8ba020be04b87f65f0cc7687f01538ba573c931ce11b761dd032e7112a2da04f92adda01a33682e425fda5ec0d473f8fabf9bf5f35ccf226e05dd89399de8bb7f84e9ff90a9e0090c98cd3fcfa930da647db50ccea008d44810297c92e0a27400591aabfe0878c2c7040b6a67da760c0d88fba2443b5f0840afe274edd42475990df27dfd26d3823e429e7092664f5cc3e12e9ca4854f44e8d589d79a1a9b796137c2e72e3ff79aceeaf34aa885f1986b849ddee8d3b8635a79a5e41",
"password_file": "3b7ccbd3e9aba6b0e1b04e2fe7a5a1e7a9e1d4c2ab66e87e2626ab585c50fb3d8f6ce5c600adf8bb328211944c9ff00135fafad3b3552806bda433db0ea2be69f9abc83d572dfefa4d0062dd98f73a51cf9398621fd7398584488614f611ed3748064fdc57a4f75dd1e07013c7123cc9f63bcc7cc812fd4d6785b10d323b254917976677c28c001c43665f9709975a5c403a2fbbaf2fe853b80497ca5bb0e8300c671775ced7247fe6304c34c4f1f96ddcab1323682741cf899a9d208d392ce0",
"export_key": "2bd139ff06ca5fe9897640fefbd00380b080239efb84d796df997c235306c9829e52694193f0d0e2bb69235e42276fffa933b436ebd6132a59d7062f3a74b83d",
"session_key": "dd42475990df27dfd26d3823e429e7092664f5cc3e12e9ca4854f44e8d589d79a1a9b796137c2e72e3ff79aceeaf34aa885f1986b849ddee8d3b8635a79a5e41"
"registration_request": "ea550f244163c4643ee2055f2c8d71c16de90eac9091ba7830bdaf1116f26245",
"registration_response": "60bddc35d89a7ddd0cac9033930c20008152fa131e1658b9540675da55b9ec2f2a5ae7873d58cae6380a31e9bb05139569b6788157fd831a86a0b24817e20e47",
"registration_upload": "848d316d978d6f23b9910a8c1d38ba25c3ecb932500a2fce369532dd23d4d96f786b66a08ba667941c2df7876960a888afedcb174fd3b092ee3d3d5d4cca3a09a9c814b8211cf8c76b47dcdf43a7684a04c151565a5f470b7b7ef251af4a7234f814cf6d954ce49ba9f7d08057fa0532a6f3f26015e6b840f699abb2ff6d3e61ad7b596ad41fdd9d83dce933936475d4a9942c3a02504bb2aff07b53fd21601c600eae15cb46e38609fcc42aa84402df182e3837e3e6579bd56b39dced7b2b90",
"credential_request": "ea550f244163c4643ee2055f2c8d71c16de90eac9091ba7830bdaf1116f26245bfd99626a535067869df816d1896f7407b8589ef8d553422b55682b1305e191239d8880879a8d2e59f79bb9e3c2764295ac555fbf55a313dfe833dbfd0492e1b",
"credential_response": "60bddc35d89a7ddd0cac9033930c20008152fa131e1658b9540675da55b9ec2f67470c894da0aa7310fe5348bfa58aad824e21dec080afbd3d9925be73291d311e2c7ded740a4e877a46f9ce3de36b47d8df2a6d367f5bf6969971769c031e14977c80b0229187f28920e21d81a2d35dc962eb942522ef344e6f54caaf831f452013ddb1ddb1a0ab839846d20dad7a8fb21b739f8cbe5001168bcab7b509899a5b9a0259d3c91e4b8b2316e228612086efd0bc2d3af3a3471a0a627348b6111378b4f265e4c44bde1e29235a298565e70ce9213f6e80bf17ca539cf38e801545b90d704cc69eefd36b223c3fbfa934baeacb845da2e6cc9b097d77c49a2cc6585ea732c3a6bc71b3502053627f293e5fbd30f10ced8506b71f9a371eb99d739b856325235c5633d6f138674e9774539dc3fef6dfc389cc40682ab53e7e7a4139",
"credential_finalization": "a399820723647257ee945cc7ebb8d4e4295d7cb5039152b226f048ffa551dba512a82bb58b5240546d4217b065cc077e5d312ad5943fac507e89136e8d86d020",
"client_registration_state": "9d0ccae042dd9cf119313ba1681b32577fd3405d1d1b063cdbb4bede1782780dea550f244163c4643ee2055f2c8d71c16de90eac9091ba7830bdaf1116f26245",
"client_login_state": "9d0ccae042dd9cf119313ba1681b32577fd3405d1d1b063cdbb4bede1782780dea550f244163c4643ee2055f2c8d71c16de90eac9091ba7830bdaf1116f26245bfd99626a535067869df816d1896f7407b8589ef8d553422b55682b1305e191239d8880879a8d2e59f79bb9e3c2764295ac555fbf55a313dfe833dbfd0492e1b20138f08d643dec02a1a7712a2dafaf2fc84b5b0b100f400dc79cc177aa04c52bfd99626a535067869df816d1896f7407b8589ef8d553422b55682b1305e1912",
"server_login_state": "353a2f9da6867c1092c5d76c955a9d31d38c1f2b8e36789db99fcf7d2c8b80d1550622cd4342c3115f4d3cebb08ecd06a4372fef6a694ea26afa0b6b1106a22fc32c478826167cf97c3dbf8d5ccb08cfb809c8dae83fff45dc94c626795822d5a830c8e5788dfef06981bdb6839cd2ab06a83ec28daa256f9933909d0db6528531977c21609847312aa424536b1b9ce5efeda0a27a127ab60112a8e7fafd80edf2d2b37a55fda89f696fd288fcfa4634a908a1c0daecdb85d6a9fbb894743b1b",
"password_file": "848d316d978d6f23b9910a8c1d38ba25c3ecb932500a2fce369532dd23d4d96f786b66a08ba667941c2df7876960a888afedcb174fd3b092ee3d3d5d4cca3a09a9c814b8211cf8c76b47dcdf43a7684a04c151565a5f470b7b7ef251af4a7234f814cf6d954ce49ba9f7d08057fa0532a6f3f26015e6b840f699abb2ff6d3e61ad7b596ad41fdd9d83dce933936475d4a9942c3a02504bb2aff07b53fd21601c600eae15cb46e38609fcc42aa84402df182e3837e3e6579bd56b39dced7b2b90",
"export_key": "70a22e875296165db438ad81e8c965533edcbed32268515bec41736a5472fc75c3b091a7db670798e6db6f0acc1b26b9a67e4fdee0819ed4af6b1672d8c37510",
"session_key": "31977c21609847312aa424536b1b9ce5efeda0a27a127ab60112a8e7fafd80edf2d2b37a55fda89f696fd288fcfa4634a908a1c0daecdb85d6a9fbb894743b1b"
}
"#;
+335 -31
View File
@@ -51,10 +51,10 @@ server_nonce: 71cd9960ecef2fe0d0f7494986fa3d8b2bb01963537e60efb13981e
138e3d4a1
client_nonce: da7e07376d6d6f034cfa9bb537d11b8c6b4238c334333d1f0aebb38
0cae6a6cc
server_keyshare: c8c39f573135474c51660b02425bca633e339cec4e1acc69c94d
d48497fe4028
client_keyshare: 0c3a00c961fead8a16f818929cc976f0475e4f723519318b96f4
947a7a5f9663
server_public_keyshare: c8c39f573135474c51660b02425bca633e339cec4e1ac
c69c94dd48497fe4028
client_public_keyshare: 0c3a00c961fead8a16f818929cc976f0475e4f7235193
18b96f4947a7a5f9663
server_private_keyshare: 2e842960258a95e28bcfef489cffd19d8ec99cc1375d
840f96936da7dbb0b40d
client_private_keyshare: 22c919134c9bdd9dc0c5ef3450f18b54820f43f646a9
@@ -72,9 +72,9 @@ client_public_key: 2ec892bdbf9b3e2ea834be9eb11f5d187e64ba661ec041c0a3
b66db8b7d6cc30
auth_key: 6cd32316f18d72a9a927a83199fa030663a38ce0c11fbaef82aa9003773
0494fc555c4d49506284516edd1628c27965b7555a4ebfed2223199f6c67966dde822
randomized_pwd: aac48c25ab036e30750839d31d6e73007344cb1155289fb7d329b
eb932e9adeea73d5d5c22a0ce1952f8aba6d66007615cd1698d4ac85ef1fcf150031d
1435d9
randomized_password: aac48c25ab036e30750839d31d6e73007344cb1155289fb7
d329beb932e9adeea73d5d5c22a0ce1952f8aba6d66007615cd1698d4ac85ef1fcf15
0031d1435d9
envelope: ac13171b2f17bc2c74997f0fce1e1f35bec6b91fe2e12dbd323d23ba7a3
8dfecb9dbe7d48cf714fc3533becab6faf60b783c94d258477eb74ecc453413bf61c5
3fd58f0fb3c1175410b674c02e1b59b2d729a865b709db3dc4ee2bb45703d5a8
@@ -170,10 +170,10 @@ server_nonce: 71cd9960ecef2fe0d0f7494986fa3d8b2bb01963537e60efb13981e
138e3d4a1
client_nonce: da7e07376d6d6f034cfa9bb537d11b8c6b4238c334333d1f0aebb38
0cae6a6cc
server_keyshare: c8c39f573135474c51660b02425bca633e339cec4e1acc69c94d
d48497fe4028
client_keyshare: 0c3a00c961fead8a16f818929cc976f0475e4f723519318b96f4
947a7a5f9663
server_public_keyshare: c8c39f573135474c51660b02425bca633e339cec4e1ac
c69c94dd48497fe4028
client_public_keyshare: 0c3a00c961fead8a16f818929cc976f0475e4f7235193
18b96f4947a7a5f9663
server_private_keyshare: 2e842960258a95e28bcfef489cffd19d8ec99cc1375d
840f96936da7dbb0b40d
client_private_keyshare: 22c919134c9bdd9dc0c5ef3450f18b54820f43f646a9
@@ -191,9 +191,9 @@ client_public_key: 2ec892bdbf9b3e2ea834be9eb11f5d187e64ba661ec041c0a3
b66db8b7d6cc30
auth_key: 6cd32316f18d72a9a927a83199fa030663a38ce0c11fbaef82aa9003773
0494fc555c4d49506284516edd1628c27965b7555a4ebfed2223199f6c67966dde822
randomized_pwd: aac48c25ab036e30750839d31d6e73007344cb1155289fb7d329b
eb932e9adeea73d5d5c22a0ce1952f8aba6d66007615cd1698d4ac85ef1fcf150031d
1435d9
randomized_password: aac48c25ab036e30750839d31d6e73007344cb1155289fb7
d329beb932e9adeea73d5d5c22a0ce1952f8aba6d66007615cd1698d4ac85ef1fcf15
0031d1435d9
envelope: ac13171b2f17bc2c74997f0fce1e1f35bec6b91fe2e12dbd323d23ba7a3
8dfec1ac902dc5589e9a5f0de56ad685ea8486210ef41449cd4d8712828913c5d2b68
0b2b3af4a26c765cff329bfb66d38ecf1d6cfa9e7a73c222c6efe0d9520f7d7c
@@ -251,6 +251,242 @@ e60
#### Configuration
~~~
OPRF: ristretto255-SHA512
Hash: SHA512
KSF: Identity
KDF: HKDF-SHA512
MAC: HMAC-SHA512
Group: curve25519
Context: 4f50415155452d504f43
Nh: 64
Npk: 32
Nsk: 32
Nm: 64
Nx: 64
Nok: 32
~~~
#### Input Values
~~~
oprf_seed: a78342ab84d3d30f08d5a9630c79bf311c31ed7f85d9d4959bf492ec67
a0eec8a67dfbf4497248eebd49e878aab173e5e4ff76354288fdd53e949a5f7c9f7f1
b
credential_identifier: 31323334
password: 436f7272656374486f72736542617474657279537461706c65
envelope_nonce: 40d6b67fdd7da7c49894750754514dbd2070a407166bd2a5237cc
a9bf44d6e0b
masking_nonce: 38fe59af0df2c79f57b8780278f5ae47355fe1f817119041951c80
f612fdfc6d
server_private_key: c06139381df63bfc91c850db0b9cfbec7a62e86d80040a41a
a7725bf0e79d564
server_public_key: a41e28269b4e97a66468cc00c5a57753e192e1527669897706
88aa90486ef031
server_nonce: 71cd9960ecef2fe0d0f7494986fa3d8b2bb01963537e60efb13981e
138e3d4a1
client_nonce: da7e07376d6d6f034cfa9bb537d11b8c6b4238c334333d1f0aebb38
0cae6a6cc
server_public_keyshare: 41f55f0bef355cfb34ccd468fdacad75865ee7efef95f
4cb6c25d477f7205026
client_public_keyshare: 10a83b9117d3798cb2957fbdb0268a0d63dbf9d66bde5
c00c78affd80026c911
server_private_keyshare: 00a4f54206eef1ba2f615bc0aa285cb22f26d1153b5b
40a1e85ff80da12f986f
client_private_keyshare: 80850a697b42a505f5b68fcdafce8c31f0af2b581f06
3cf1091933541936304b
blind_registration: c575731ffe1cb0ca5ba63b42c4699767b8b9ab78ba39316ee
04baddb2034a70a
blind_login: 6ecc102d2e7a7cf49617aad7bbe188556792d4acd60a1a8a8d2b65d4
b0790308
~~~
#### Intermediate Values
~~~
client_public_key: 0936ea94ab030ec332e29050d266c520e916731a052d05ced7
e0cfe751142b48
auth_key: 7e880ab484f750e80e6f839d975aff476070ce65066d85ea62523d1d576
4739d91307fac47186a4ab935e6a5c7f70cb47faa9473311947502c022cc67ae9440c
randomized_password: 3a602c295a9c323d9362fe286f104567ed6862b25dbe30fa
da844f19e41cf40047424b7118e15dc2c1a815a70fea5c8de6c30aa61440cd4b4b5e8
f3963fbb2e1
envelope: 40d6b67fdd7da7c49894750754514dbd2070a407166bd2a5237cca9bf44
d6e0b20c1e81fef28e92e897ca8287d49a55075b47c3988ff0fff367d79a3e350ccac
150b4a3ff48b4770c8e84e437b3d4e68d2b95833f7788f7eb93fa6a8afb85ecb
handshake_secret: 6936d2b78f13d865997dd37c42c741dfe4c0297199e55d7f889
1fa4771ed2357e990b44faec69733c607b7541442b5f27ea01513b4f0b84545e0ff75
81ea7764
server_mac_key: 62a11be878ecfcbd7c8875e86a0f479befcb4b1742480c9ac2d2a
5fa8d9e96c3bf60edb953ba15e32dc3e2cba60029c0c61481fdc7a80946f596b77fff
6b18ee
client_mac_key: e646055bf0a395c6c7c61078dabe0f0026ec6ba079ddb70f11ec9
ba41e5ff70e37a87d8fbeca11d7dc22e2aacf2828de6e1d776b451fa1bd4419b0a6b5
9cc353
oprf_key: 62ef7f7d9506a14600c34f642aaf6ef8019cc82a6755db4fded5248ea14
6030a
~~~
#### Output Values
~~~
registration_request: 26f3dbfd76b8e5f85b4da604f42889a7d4b1bc919f65538
1a67de02c59fd5436
registration_response: 506e8f1b89c098fb89b5b6210a05f7898cafdaea221761
e8d5272fc39e0f9f08a41e28269b4e97a66468cc00c5a57753e192e15276698977068
8aa90486ef031
registration_upload: 0936ea94ab030ec332e29050d266c520e916731a052d05ce
d7e0cfe751142b486d23c6ed818882f9bdfdcf91389fcbc0b7a3faf92bd0bd6be4a1e
7730277b694fc7c6ba327fbe786af18487688e0f7c148bbd54dc2fc80c28e7a976d9e
f53c3540d6b67fdd7da7c49894750754514dbd2070a407166bd2a5237cca9bf44d6e0
b20c1e81fef28e92e897ca8287d49a55075b47c3988ff0fff367d79a3e350ccac150b
4a3ff48b4770c8e84e437b3d4e68d2b95833f7788f7eb93fa6a8afb85ecb
KE1: c4dedb0ba6ed5d965d6f250fbe554cd45cba5dfcce3ce836e4aee778aa3cd44d
da7e07376d6d6f034cfa9bb537d11b8c6b4238c334333d1f0aebb380cae6a6cc10a83
b9117d3798cb2957fbdb0268a0d63dbf9d66bde5c00c78affd80026c911
KE2: 9a0e5a1514f62e005ea098b0d8cf6750e358c4389e6add1c52aed9500fa19d00
38fe59af0df2c79f57b8780278f5ae47355fe1f817119041951c80f612fdfc6d22cc3
1127d6f0096755be3c3d2dd6287795c317aeea10c9485bf4f419a786642c19a8f151c
eb5e8767d175248c62c017de94057398d28bf0ed00d1b50ee4f812fd9afddf98af8cd
58067ca43b0633b6cadd0e9d987f89623fed4d3583bdf6910c425600e90dab3c6b351
3188a465461a67f6bbc47aeba808f7f7e2c6d66f5c3271cd9960ecef2fe0d0f749498
6fa3d8b2bb01963537e60efb13981e138e3d4a141f55f0bef355cfb34ccd468fdacad
75865ee7efef95f4cb6c25d477f720502601bd116f3cb70f03d9cbc25d5606b8c5764
a1b9b11b28f2cbbd5630a836f9dbb2e7e8914639bca0fb9c99d58d42dfe3057cfe881
491b1d0812948aa4a7a7c7f7
KE3: 93a3c0da12392ad5336962e340b7c44ed445a67d61dae7bc5e2ccf891f6e9fac
6596f93350d3d559f7bbb182376a07ec7377e7966b7cc549fb8d0b6fb575f157
export_key: 9dec51d6d0f6ce7e4345f10961053713b07310cc2e45872f57bbd2fe5
070fdf0fb5b77c7ddaa2f3dc5c35132df7417ad7fefe0f690ad266e5a54a21d045c9c
38
session_key: a30c5ad775d0bc9aeb47757cc68a9332cb3acb7fc332ca07ba96d707
1847e492c8de3541997f97a605eb9b60cde6feb8dc57322e60ec42ae78c87a2e215e2
77f
~~~
### OPAQUE-3DH Real Test Vector 4
#### Configuration
~~~
OPRF: ristretto255-SHA512
Hash: SHA512
KSF: Identity
KDF: HKDF-SHA512
MAC: HMAC-SHA512
Group: curve25519
Context: 4f50415155452d504f43
Nh: 64
Npk: 32
Nsk: 32
Nm: 64
Nx: 64
Nok: 32
~~~
#### Input Values
~~~
client_identity: 616c696365
server_identity: 626f62
oprf_seed: a78342ab84d3d30f08d5a9630c79bf311c31ed7f85d9d4959bf492ec67
a0eec8a67dfbf4497248eebd49e878aab173e5e4ff76354288fdd53e949a5f7c9f7f1
b
credential_identifier: 31323334
password: 436f7272656374486f72736542617474657279537461706c65
envelope_nonce: 40d6b67fdd7da7c49894750754514dbd2070a407166bd2a5237cc
a9bf44d6e0b
masking_nonce: 38fe59af0df2c79f57b8780278f5ae47355fe1f817119041951c80
f612fdfc6d
server_private_key: c06139381df63bfc91c850db0b9cfbec7a62e86d80040a41a
a7725bf0e79d564
server_public_key: a41e28269b4e97a66468cc00c5a57753e192e1527669897706
88aa90486ef031
server_nonce: 71cd9960ecef2fe0d0f7494986fa3d8b2bb01963537e60efb13981e
138e3d4a1
client_nonce: da7e07376d6d6f034cfa9bb537d11b8c6b4238c334333d1f0aebb38
0cae6a6cc
server_public_keyshare: 41f55f0bef355cfb34ccd468fdacad75865ee7efef95f
4cb6c25d477f7205026
client_public_keyshare: 10a83b9117d3798cb2957fbdb0268a0d63dbf9d66bde5
c00c78affd80026c911
server_private_keyshare: 00a4f54206eef1ba2f615bc0aa285cb22f26d1153b5b
40a1e85ff80da12f986f
client_private_keyshare: 80850a697b42a505f5b68fcdafce8c31f0af2b581f06
3cf1091933541936304b
blind_registration: c575731ffe1cb0ca5ba63b42c4699767b8b9ab78ba39316ee
04baddb2034a70a
blind_login: 6ecc102d2e7a7cf49617aad7bbe188556792d4acd60a1a8a8d2b65d4
b0790308
~~~
#### Intermediate Values
~~~
client_public_key: 0936ea94ab030ec332e29050d266c520e916731a052d05ced7
e0cfe751142b48
auth_key: 7e880ab484f750e80e6f839d975aff476070ce65066d85ea62523d1d576
4739d91307fac47186a4ab935e6a5c7f70cb47faa9473311947502c022cc67ae9440c
randomized_password: 3a602c295a9c323d9362fe286f104567ed6862b25dbe30fa
da844f19e41cf40047424b7118e15dc2c1a815a70fea5c8de6c30aa61440cd4b4b5e8
f3963fbb2e1
envelope: 40d6b67fdd7da7c49894750754514dbd2070a407166bd2a5237cca9bf44
d6e0bb4c0eab6143959a650c5f6b32acf162b1fbe95bb36c5c4f99df53865c4d3537d
69061d80522d772cd0efdbe91f817f6bf7259a56e20b4eb9cbe9443702f4b759
handshake_secret: f5b8fa77a67e638114899eca80c3549aa2c8e277a3412bccbe0
a7e3943a5798d1e5ede2a847144759b17eb253f2f65efcccf82fe7b5f26e17175713d
be845786
server_mac_key: a8cdc5647342743be8ae6fc51e7105651b16bcb5fe4913834e7c2
139dbc06d84c75215e7e84e1785f431c925844eb8c9c0d14959239422368166f41485
e7847a
client_mac_key: b326230809ee373101e8b387aa33a865f7afa375f8c3e5a8fb592
b2e89e3117ccae85b0440421c75eb38a4ca4bde9355a549179b84748e21a3e378a3eb
538e37
oprf_key: 62ef7f7d9506a14600c34f642aaf6ef8019cc82a6755db4fded5248ea14
6030a
~~~
#### Output Values
~~~
registration_request: 26f3dbfd76b8e5f85b4da604f42889a7d4b1bc919f65538
1a67de02c59fd5436
registration_response: 506e8f1b89c098fb89b5b6210a05f7898cafdaea221761
e8d5272fc39e0f9f08a41e28269b4e97a66468cc00c5a57753e192e15276698977068
8aa90486ef031
registration_upload: 0936ea94ab030ec332e29050d266c520e916731a052d05ce
d7e0cfe751142b486d23c6ed818882f9bdfdcf91389fcbc0b7a3faf92bd0bd6be4a1e
7730277b694fc7c6ba327fbe786af18487688e0f7c148bbd54dc2fc80c28e7a976d9e
f53c3540d6b67fdd7da7c49894750754514dbd2070a407166bd2a5237cca9bf44d6e0
bb4c0eab6143959a650c5f6b32acf162b1fbe95bb36c5c4f99df53865c4d3537d6906
1d80522d772cd0efdbe91f817f6bf7259a56e20b4eb9cbe9443702f4b759
KE1: c4dedb0ba6ed5d965d6f250fbe554cd45cba5dfcce3ce836e4aee778aa3cd44d
da7e07376d6d6f034cfa9bb537d11b8c6b4238c334333d1f0aebb380cae6a6cc10a83
b9117d3798cb2957fbdb0268a0d63dbf9d66bde5c00c78affd80026c911
KE2: 9a0e5a1514f62e005ea098b0d8cf6750e358c4389e6add1c52aed9500fa19d00
38fe59af0df2c79f57b8780278f5ae47355fe1f817119041951c80f612fdfc6d22cc3
1127d6f0096755be3c3d2dd6287795c317aeea10c9485bf4f419a786642c19a8f151c
eb5e8767d175248c62c017de94057398d28bf0ed00d1b50ee4f812699bff7663be3c5
d59de94d8e7e58817c7da005b39c25d25555c929e1c5cf6c1b82837b1367c839aab56
a422c0d97719426a79a16f9869cf852100597b23b5a071cd9960ecef2fe0d0f749498
6fa3d8b2bb01963537e60efb13981e138e3d4a141f55f0bef355cfb34ccd468fdacad
75865ee7efef95f4cb6c25d477f7205026816ce1eb529f8f3c6cec676d8c08f5ca760
c4322016850f329c4a2fb07364768a11a5380564d4cbceae511c873627c22c9ee9f05
488278de0fcf646f0825efdd
KE3: f6325cf6a7bd808fca69d54546ef61f2b5ec62fe8b96ca3c9b3e054841ab35ae
552bc5d8eea5ec840f56578be2cd2c30b52fa03266a2f4518cf764d9ced467ec
export_key: 9dec51d6d0f6ce7e4345f10961053713b07310cc2e45872f57bbd2fe5
070fdf0fb5b77c7ddaa2f3dc5c35132df7417ad7fefe0f690ad266e5a54a21d045c9c
38
session_key: 867930cba2b9988acfbe8289bffff728f7c799153be737c8a915ed98
647a7bc7a7f5f9c03deb797d36eda54de6015683a60e08f34e746e37514c4714d0644
99f
~~~
### OPAQUE-3DH Real Test Vector 5
#### Configuration
~~~
OPRF: P256-SHA256
Hash: SHA256
@@ -286,10 +522,10 @@ server_nonce: 71cd9960ecef2fe0d0f7494986fa3d8b2bb01963537e60efb13981e
138e3d4a1
client_nonce: ab3d33bde0e93eda72392346a7a73051110674bbf6b1b7ffab8be4f
91fdaeeb1
server_keyshare: 020e67941e94deba835214421d2d8c90de9b0f7f925d11e2032c
e19b1832ae8e0f
client_keyshare: 03493f36ca12467d1f5eaaabea67ca31377c4869c1e9a62346b6
f01a991624b95d
server_public_keyshare: 020e67941e94deba835214421d2d8c90de9b0f7f925d1
1e2032ce19b1832ae8e0f
client_public_keyshare: 03493f36ca12467d1f5eaaabea67ca31377c4869c1e9a
62346b6f01a991624b95d
server_private_keyshare: 9addab838c920fa7044f3a46b91ecaea24b0e7203992
8ee7d4c37a5b9bc17349
client_private_keyshare: 89d5a7e18567f255748a86beac13913df755a5adf776
@@ -307,8 +543,8 @@ client_public_key: 02dc91b178ba2c4bbf9b9403fca25457b906a7f507e59b6e70
3031e09114ba2be0
auth_key: 5bd4be1602516092dc5078f8d699f5721dc1720a49fb80d8e5c16377abd
0987b
randomized_pwd: 06be0a1a51d56557a3adad57ba29c5510565dcd8b5078fa319151
b9382258fb0
randomized_password: 06be0a1a51d56557a3adad57ba29c5510565dcd8b5078fa3
19151b9382258fb0
envelope: a921f2a014513bd8a90e477a629794e89fec12d12206dde662ebdcf6567
0e51fe155412cb432898eda63529c3b2633521f770cccbd25d7548a4e20665a45e65a
handshake_secret: c59197dd9269abfdb3037ea1c203a97627e2c0aa142000d1c3f
@@ -352,7 +588,7 @@ session_key: a224790a010afc0a3f37e23c1b7a5cb7f9e73e3d9a924116510d97d8
0e2a1e0c
~~~
### OPAQUE-3DH Real Test Vector 4
### OPAQUE-3DH Real Test Vector 6
#### Configuration
@@ -393,10 +629,10 @@ server_nonce: 71cd9960ecef2fe0d0f7494986fa3d8b2bb01963537e60efb13981e
138e3d4a1
client_nonce: ab3d33bde0e93eda72392346a7a73051110674bbf6b1b7ffab8be4f
91fdaeeb1
server_keyshare: 020e67941e94deba835214421d2d8c90de9b0f7f925d11e2032c
e19b1832ae8e0f
client_keyshare: 03493f36ca12467d1f5eaaabea67ca31377c4869c1e9a62346b6
f01a991624b95d
server_public_keyshare: 020e67941e94deba835214421d2d8c90de9b0f7f925d1
1e2032ce19b1832ae8e0f
client_public_keyshare: 03493f36ca12467d1f5eaaabea67ca31377c4869c1e9a
62346b6f01a991624b95d
server_private_keyshare: 9addab838c920fa7044f3a46b91ecaea24b0e7203992
8ee7d4c37a5b9bc17349
client_private_keyshare: 89d5a7e18567f255748a86beac13913df755a5adf776
@@ -414,8 +650,8 @@ client_public_key: 02dc91b178ba2c4bbf9b9403fca25457b906a7f507e59b6e70
3031e09114ba2be0
auth_key: 5bd4be1602516092dc5078f8d699f5721dc1720a49fb80d8e5c16377abd
0987b
randomized_pwd: 06be0a1a51d56557a3adad57ba29c5510565dcd8b5078fa319151
b9382258fb0
randomized_password: 06be0a1a51d56557a3adad57ba29c5510565dcd8b5078fa3
19151b9382258fb0
envelope: a921f2a014513bd8a90e477a629794e89fec12d12206dde662ebdcf6567
0e51f4d7773a36a208a866301dbb2858e40dc5638017527cf91aef32d3848eebe0971
handshake_secret: 0ee4a82c4a34992f72bfbcb5d2ce64044477dfe200b9d8c92bf
@@ -502,8 +738,8 @@ server_public_key: 825f832667480f08b0c9069da5083ac4d0e9ee31b49c4e0310
031fea04d52966
server_nonce: 1e10f6eeab2a7a420bf09da9b27a4639645622c46358de9cf7ae813
055ae2d12
server_keyshare: 5236e2e06d49f0b496db2a786f6ee1016f15b4fd6c0dbd95d6b1
17055d914157
server_public_keyshare: 5236e2e06d49f0b496db2a786f6ee1016f15b4fd6c0db
d95d6b117055d914157
server_private_keyshare: 6d8fba9741a357584770f85294430bce2252fe212a8a
372152a73c7ffe414503
masking_key: 39ebd51f0e39a07a1c2d2431995b0399bca9996c5d10014d6ebab445
@@ -533,6 +769,74 @@ c9b6e71efc8a89607fd46ed5e7b9bf7cc7dbb997a4fd41194a04bcd0c5d88052e080a
#### Configuration
~~~
OPRF: ristretto255-SHA512
Hash: SHA512
KSF: Identity
KDF: HKDF-SHA512
MAC: HMAC-SHA512
Group: curve25519
Context: 4f50415155452d504f43
Nh: 64
Npk: 32
Nsk: 32
Nm: 64
Nx: 64
Nok: 32
~~~
#### Input Values
~~~
client_identity: 616c696365
server_identity: 626f62
oprf_seed: 66e650652a8266b2205f31fdd68adeb739a05b5e650b19e7edc75e734a
1296d6088188ca46c31ae8ccbd42a52ed338c06e53645387a7efbc94b6a0449526155
e
credential_identifier: 31323334
masking_nonce: 9c035896a043e70f897d87180c543e7a063b83c1bb728fbd189c61
9e27b6e5a6
client_private_key: 288bf63470199221847bb035d99f96531adf8badd14cb1571
b48f7a506649660
client_public_key: 3c64a3153854cc9f0c23aab3c1a19106ec8bab4730736d1d00
3880a1d5a59005
server_private_key: 30fbe7e830be1fe8d2187c97414e3826040cbe49b893b6422
9bab5e85a588846
server_public_key: 78b3040047ff26572a7619617601a61b9c81899bee92f00cfc
aa5eed96863555
server_nonce: 1e10f6eeab2a7a420bf09da9b27a4639645622c46358de9cf7ae813
055ae2d12
server_public_keyshare: 2d9055eb8f83e1b497370adad5cc2a417bf9be436a792
def0c7b7ccb92b9e275
server_private_keyshare: 300b0937f47d45f6123a4d8f0d0c0814b6120d840ebb
8bc5b4f6b62df07f7842
masking_key: 79ad2621b0757a447dff7108a8ae20a068ce67872095620f415ea611
c9dcc04972fa359538cd2fd6528775ca775487b2b56db642049b8a90526b975a38484
c6a
KE1: b0a26dcaca2230b8f5e4b1bcab9c84b586140221bb8b2848486874b0be448905
42d4e61ed3f8d64cdd3b9d153343eca15b9b0d5e388232793c6376bd2d9cfd0ac059b
7ba2aec863933ae48816360c7a9022e83d822704f3b0b86c0502a66e574
~~~
#### Output Values
~~~
KE2: 6606b6fedbb33f19a81a1feb5149c600fe77252f58acd3080d7504d3dad4922f
9c035896a043e70f897d87180c543e7a063b83c1bb728fbd189c619e27b6e5a67db39
8c0f65d8c298eac430abdae4c80e82b552fb940c00f0cbcea853c0f96c1c15099f3d4
b0e83ecc249613116d605b8d77bb68bdf76994c2bc507e2dcae4176f00afed68ad25c
f3040a0e991acece31ca532117f5c12816997372ff031ad04ebcdce06c501da24e7b4
db95343456e2ed260895ec362694230a1fa20e24a9c71e10f6eeab2a7a420bf09da9b
27a4639645622c46358de9cf7ae813055ae2d122d9055eb8f83e1b497370adad5cc2a
417bf9be436a792def0c7b7ccb92b9e27513c6a0d5d96e939563ad168990ed0156b8d
8fb82888ce111f217b1103b4c6d67ee9738777033dd0d85e39776993b5f1f7fa4252b
13a9c37c0fdd06204ca315c6
~~~
### OPAQUE-3DH Fake Test Vector 3
#### Configuration
~~~
OPRF: P256-SHA256
Hash: SHA256
@@ -569,8 +873,8 @@ server_public_key: 0221e034c0e202fe883dcfc96802a7624166fed4cfcab4ae30
cf5f3290d01c88bf
server_nonce: 1e10f6eeab2a7a420bf09da9b27a4639645622c46358de9cf7ae813
055ae2d12
server_keyshare: 03f42965d5bcba2a590a49eb2418061effe40b5c29a34b8e5163
e0ef32044b2e4c
server_public_keyshare: 03f42965d5bcba2a590a49eb2418061effe40b5c29a34
b8e5163e0ef32044b2e4c
server_private_keyshare: 1a2a0ff27f3ca75221378a2a21fe5222ce0b439452f8
70475857a34197ba8f6d
masking_key: caecc6ccb4cae27cb54d8f3a1af1bac52a3d53107ce08497cdd362b1
+2 -2
View File
@@ -35,7 +35,7 @@ fn parse_vector_types(input: &str) -> String {
fn parse_ciphersuites(input: &str) -> String {
let re = regex::Regex::new(
r"# Configuration(.|\n)+?Hash: (?P<hash>.*?)\n(.|\n)*?Group: (?P<group>.*?)\n",
r"#### Configuration\n(.|\n)*?OPRF: (?P<oprf>.*?)\n(.|\n)*?Group: (?P<group>.*?)\n",
)
.unwrap();
let mut ciphersuites = vec![];
@@ -46,8 +46,8 @@ fn parse_ciphersuites(input: &str) -> String {
for caps in re.captures_iter(input) {
let ciphersuite = format!(
"{{ \"{}, {}\": {{ {} }} }}",
&caps["oprf"],
&caps["group"],
&caps["hash"],
parse_params(chunks[count])
);
ciphersuites.push(ciphersuite);
+56 -9
View File
@@ -126,11 +126,11 @@ where
},
context: parse!(values, "Context"),
client_private_key: decode(values, "client_private_key"),
client_keyshare: parse!(values, "client_keyshare"),
client_keyshare: parse!(values, "client_public_keyshare"),
client_private_keyshare: parse!(values, "client_private_keyshare"),
server_public_key: parse!(values, "server_public_key"),
server_private_key: parse!(values, "server_private_key"),
server_keyshare: parse!(values, "server_keyshare"),
server_keyshare: parse!(values, "server_public_keyshare"),
server_private_keyshare: parse!(values, "server_private_keyshare"),
client_identity: decode(values, "client_identity"),
server_identity: decode(values, "server_identity"),
@@ -154,7 +154,7 @@ where
export_key: parse!(values, "export_key"),
session_key: parse!(values, "session_key"),
auth_key: parse!(values, "auth_key"),
randomized_pwd: parse!(values, "randomized_pwd"),
randomized_pwd: parse!(values, "randomized_password"),
handshake_secret: parse!(values, "handshake_secret"),
server_mac_key: parse!(values, "server_mac_key"),
client_mac_key: parse!(values, "client_mac_key"),
@@ -217,11 +217,19 @@ fn tests() -> Result<(), ProtocolError> {
type Ksf = Identity;
}
let ristretto_real_tvs =
json_to_test_vectors!(rfc, "Real", "ristretto255, SHA512", Ristretto255Sha512NoKsf);
let ristretto_real_tvs = json_to_test_vectors!(
rfc,
"Real",
"ristretto255-SHA512, ristretto255",
Ristretto255Sha512NoKsf
);
let ristretto_fake_tvs =
json_to_test_vectors!(rfc, "Fake", "ristretto255, SHA512", Ristretto255Sha512NoKsf);
let ristretto_fake_tvs = json_to_test_vectors!(
rfc,
"Fake",
"ristretto255-SHA512, ristretto255",
Ristretto255Sha512NoKsf
);
assert!(
!(ristretto_real_tvs.is_empty() || ristretto_fake_tvs.is_empty()),
@@ -238,6 +246,45 @@ fn tests() -> Result<(), ProtocolError> {
test_fake_vectors::<Ristretto255Sha512NoKsf>(&ristretto_fake_tvs)?;
}
#[cfg(all(feature = "ristretto255", feature = "curve25519"))]
{
struct Ristretto255Sha512Curve25519NoKsf;
impl CipherSuite for Ristretto255Sha512Curve25519NoKsf {
type OprfCs = crate::Ristretto255;
type KeGroup = crate::Curve25519;
type KeyExchange = TripleDh;
type Ksf = Identity;
}
let ristretto_real_tvs = json_to_test_vectors!(
rfc,
"Real",
"ristretto255-SHA512, curve25519",
Ristretto255Sha512Curve25519NoKsf
);
let ristretto_fake_tvs = json_to_test_vectors!(
rfc,
"Fake",
"ristretto255-SHA512, curve25519",
Ristretto255Sha512Curve25519NoKsf
);
assert!(
!(ristretto_real_tvs.is_empty() || ristretto_fake_tvs.is_empty()),
"Parsing error"
);
test_registration_request::<Ristretto255Sha512Curve25519NoKsf>(&ristretto_real_tvs)?;
test_registration_response::<Ristretto255Sha512Curve25519NoKsf>(&ristretto_real_tvs)?;
test_registration_upload::<Ristretto255Sha512Curve25519NoKsf>(&ristretto_real_tvs)?;
test_ke1::<Ristretto255Sha512Curve25519NoKsf>(&ristretto_real_tvs)?;
test_ke2::<Ristretto255Sha512Curve25519NoKsf>(&ristretto_real_tvs)?;
test_ke3::<Ristretto255Sha512Curve25519NoKsf>(&ristretto_real_tvs)?;
test_server_login_finish::<Ristretto255Sha512Curve25519NoKsf>(&ristretto_real_tvs)?;
test_fake_vectors::<Ristretto255Sha512Curve25519NoKsf>(&ristretto_fake_tvs)?;
}
struct P256Sha256NoKsf;
impl CipherSuite for P256Sha256NoKsf {
type OprfCs = p256::NistP256;
@@ -249,13 +296,13 @@ fn tests() -> Result<(), ProtocolError> {
let p256_real_tvs = json_to_test_vectors!(
rfc,
"Real",
"P256_XMD:SHA-256_SSWU_RO_, SHA256",
"P256-SHA256, P256_XMD:SHA-256_SSWU_RO_",
P256Sha256NoKsf
);
let p256_fake_tvs = json_to_test_vectors!(
rfc,
"Fake",
"P256_XMD:SHA-256_SSWU_RO_, SHA256",
"P256-SHA256, P256_XMD:SHA-256_SSWU_RO_",
P256Sha256NoKsf
);