From 8de2f37235e8e6fac9508eedccae4f2e82d6c243 Mon Sep 17 00:00:00 2001 From: Kevin Lewi Date: Mon, 12 Jul 2021 15:07:29 -0700 Subject: [PATCH] Updating VOPRF dependency --- src/opaque.rs | 10 +- src/oprf.rs | 4 +- src/tests/full_test.rs | 57 ++++---- src/tests/opaque_test_vectors.rs | 222 +++++++++++++++---------------- src/tests/voprf_test_vectors.rs | 16 +-- 5 files changed, 154 insertions(+), 155 deletions(-) diff --git a/src/opaque.rs b/src/opaque.rs index 24d8493..1a0b68f 100644 --- a/src/opaque.rs +++ b/src/opaque.rs @@ -31,6 +31,7 @@ use zeroize::Zeroize; const STR_CREDENTIAL_RESPONSE_PAD: &[u8] = b"CredentialResponsePad"; const STR_MASKING_KEY: &[u8] = b"MaskingKey"; const STR_OPRF_KEY: &[u8] = b"OprfKey"; +const STR_OPAQUE_DERIVE_KEY_PAIR: &[u8] = b"OPAQUE-DeriveKeyPair"; // Server Setup // ============ @@ -917,15 +918,12 @@ fn oprf_key_from_seed( oprf_seed: &GenericArray, credential_identifier: &[u8], ) -> Result { - let mut oprf_key_bytes = vec![0u8; as SizedBytes>::Len::to_usize()]; + let mut ikm = vec![0u8; as SizedBytes>::Len::to_usize()]; Hkdf::::from_prk(oprf_seed) .map_err(|_| InternalPakeError::HkdfError)? - .expand( - &[credential_identifier, STR_OPRF_KEY].concat(), - &mut oprf_key_bytes, - ) + .expand(&[credential_identifier, STR_OPRF_KEY].concat(), &mut ikm) .map_err(|_| InternalPakeError::HkdfError)?; - G::hash_to_scalar::(&oprf_key_bytes[..], b"") + G::hash_to_scalar::(&ikm[..], STR_OPAQUE_DERIVE_KEY_PAIR) } fn mask_response( diff --git a/src/oprf.rs b/src/oprf.rs index 4a6230f..1ca7f04 100644 --- a/src/oprf.rs +++ b/src/oprf.rs @@ -21,8 +21,8 @@ pub struct Token { impl_clone_for!(struct Token, [data, blind]); impl_debug_eq_hash_for!(struct Token, [data, blind], [Grp::Scalar]); -static STR_VOPRF: &[u8] = b"VOPRF06-HashToGroup-"; -static STR_VOPRF_FINALIZE: &[u8] = b"VOPRF06-Finalize-"; +static STR_VOPRF: &[u8] = b"HashToGroup-VOPRF07-"; +static STR_VOPRF_FINALIZE: &[u8] = b"Finalize-VOPRF07-"; static MODE_BASE: u8 = 0x00; /// Computes the first step for the multiplicative blinding version of DH-OPRF. This diff --git a/src/tests/full_test.rs b/src/tests/full_test.rs index 7e3d48e..1183130 100644 --- a/src/tests/full_test.rs +++ b/src/tests/full_test.rs @@ -75,38 +75,38 @@ static STR_CREDENTIAL_IDENTIFIER: &str = "credential_identifier"; static TEST_VECTOR: &str = r#" { - "client_s_pk": "b47c69b4ea5e87139649349516c2842145993a2a00cc6e63d27c57f170475260", - "client_s_sk": "60a33dd8e1970aa3d2ed09c03ad0380e0cf628a669d3b7d030d3fea0dd7f5c06", - "client_e_pk": "5a513aecfa17dab422221a980819c680aea9a49947c7c0caca94fc61dcb4632c", - "client_e_sk": "9f42ca864614d4175e1540e4c56fe18362cb56b778dccf6b0a9446a23735dc03", - "server_s_pk": "8ed3fd51aa5e6931559fa6ae9be9829e609e441efbabb0846933fd5e30a3a268", - "server_s_sk": "a514a8842cd760449887fb2f943440b17073b5073691ceeaa0552210e693ea01", - "server_e_pk": "e8249649f7614f6268df01e54eb992043d49df04c98f8c8cea27c263d95dec4b", - "server_e_sk": "a4b66443250a0cc39ad9baae6ada72c243ddee53b712eb48933993230c13500f", - "fake_sk": "60a33dd8e1970aa3d2ed09c03ad0380e0cf628a669d3b7d030d3fea0dd7f5c06", + "client_s_pk": "0a6c4964697edd7399bd5d785053a1e2539c488d01368e4e413d16e12fec097f", + "client_s_sk": "aa831710cef76640aa5a9dc1442a20276fefb476a13ba0e58b503ef0ef1f2e0d", + "client_e_pk": "be80f3170a73645d10246cfa928e086c994d206c611468b1f5f053b82d3feb07", + "client_e_sk": "21bb9572af542ec7bf97487d81f3c80115f615067a8d1267722aea841d594108", + "server_s_pk": "3883f3d1d9703cdb90d12d388730f73b91b682fb5f375ce1a191b2ce025de703", + "server_s_sk": "bd8d91db143ac70aad47d7c6651578df489a8eaca3f91e7ea8116d89d1319303", + "server_e_pk": "1014d0390f2a96649a1ff6352a030bd78b98771d588d9b204c0121f6b520f96d", + "server_e_sk": "14774279665c0ae85e78f1e33d809eaa282a1adc8688a76e6ff4f87c3c34720a", + "fake_sk": "59905ec82b7db1d9eb54dec8660905b011de8030af1d3ed9bb3c135103db7b08", "credential_identifier": "637265644964656e746966696572", "id_u": "696455", "id_s": "696453", "password": "70617373776f7264", - "blinding_factor": "08f845725404c823f477eb1e8f79dab63fdbbb2110a6c360fc98a4d2720e9d0a", - "oprf_seed": "1e7fddf167679cb1e83a179d4275034c09d2d745a1fec311a5e59ed30d0b80e2100ee8e6bbc996dc298f7f9e7dcc03c052853a02e4273d33c2973c7a6128affd", - "masking_nonce": "2b49d01802a69aacdad4979c503b96d08f44e4c67eaf82bbf6e71c6bb5473aa819359428f408bda29976beb0243c8a91fbeb2ee57840b90c62f4d87f88344db0", - "envelope_nonce": "f4351a2d4f1efb09877fbef82d44bff3a963b08cc727874aa75c5d57d604aa2e", - "client_nonce": "e56a024c1d89f05ff245b98ba097cdfdcc5c181b3d5e9d52100d421d3160f80a", - "server_nonce": "9b78591d87600abf26789c0691dd5f760d5620aa58e34181cb24503bf04c936a", + "blinding_factor": "9a8f70c839f0a9dd821d00208f43e89442df2b844a0cf0dcc0508e8dd3cc3c00", + "oprf_seed": "bd122c79da3f2b04b05793dea984c1229448c8281638f3e7a263b4933b7ba1a82141ad1e24b08076bafb218d0639dcc10d56e87de10c050499b2121c02e4de27", + "masking_nonce": "e56ddfa0e8008f7960e8eef1e05e96ffbc3b86e2e4ff208d711055ecb34e7a16ec457b7d3caea53224fe7f1e4f883de940d04fa2ae69622743c80b75ebe7f809", + "envelope_nonce": "2bad92ff095e50a2b1a995027a46da433610646223cf7932506c550fc1407b97", + "client_nonce": "f71932596f3e394216b5bacae7e1baa29ed87736bae5ffa311d81b57503391b4", + "server_nonce": "dbddcbe38456a6f6d91ccd9321436c74b81e83083dc084a571758ed710293dd9", "context": "636f6e74657874", - "registration_request": "0cdc7df1cca989b56917c95127e59ec8f05bda7c606cb45e714bfa582b429832", - "registration_response": "e88418f5a9145287062e50b060e6f6790583ec8646430af1bff0a2729bf20d1b8ed3fd51aa5e6931559fa6ae9be9829e609e441efbabb0846933fd5e30a3a268", - "registration_upload": "d6f1486284e595707ae341a4d083d454477933b1bcf770bfc4087127c0a8e844e833f76e997aef5b46d2108811667183d08f0cc0a8465dac277287591cac1e42933ed23a2c9476cfa939854a40fc746c21606535b19f0a48cf8cc565f7c3e6df60a33dd8e1970aa3d2ed09c03ad0380e0cf628a669d3b7d030d3fea0dd7f5c0654e4188e55b7fe2eed8a7aee79ae6cfefabab86e7b7822f05bc422ac7e7a9acb968001b3dc5ead255a2d7599a7be60aa97ebed89808db20faa445e912f7df2da", - "credential_request": "0cdc7df1cca989b56917c95127e59ec8f05bda7c606cb45e714bfa582b429832e56a024c1d89f05ff245b98ba097cdfdcc5c181b3d5e9d52100d421d3160f80a5a513aecfa17dab422221a980819c680aea9a49947c7c0caca94fc61dcb4632c", - "credential_response": "e88418f5a9145287062e50b060e6f6790583ec8646430af1bff0a2729bf20d1b2b49d01802a69aacdad4979c503b96d08f44e4c67eaf82bbf6e71c6bb5473aa8718337df372fbb0de1beb29e2f4e6a2419858326ffe3f2a24172cca25e6344edd7db031cac3e206218eda4555d816f341c428317a4d37ed63441a278f78185b202b675b620e6f35056964d400c311cad23a1e6b0d9a91837d9d0021280bf0facf422961c96cffea530a24eb2486d4fa91adadaf7ac9a17d35b329b2add32e368a4b66443250a0cc39ad9baae6ada72c243ddee53b712eb48933993230c13500f2896e6f69e8610ced17584f34c09d872300bac6c99b8157392517ab9e9ed1f4aa163f8040d899cc77cf1f0ca2c4be6aef1616288cd3a6ac21989bdfc07bc4e94a284cf4c588583b2361195feab1ddcd390defde6282db2edc3eb535ede66404b", - "credential_finalization": "2f8c71675d7db1b32ed3daaa7f15fc353f6af536ab1199e41e43ece9871d8b69336b8c84c4906810bb87c1a0407bd5f5d780c7d10a1c94016103639e507cf6d0", - "client_registration_state": "08f845725404c823f477eb1e8f79dab63fdbbb2110a6c360fc98a4d2720e9d0a70617373776f7264", - "client_login_state": "08f845725404c823f477eb1e8f79dab63fdbbb2110a6c360fc98a4d2720e9d0a00600cdc7df1cca989b56917c95127e59ec8f05bda7c606cb45e714bfa582b429832e56a024c1d89f05ff245b98ba097cdfdcc5c181b3d5e9d52100d421d3160f80a5a513aecfa17dab422221a980819c680aea9a49947c7c0caca94fc61dcb4632c00409f42ca864614d4175e1540e4c56fe18362cb56b778dccf6b0a9446a23735dc03e56a024c1d89f05ff245b98ba097cdfdcc5c181b3d5e9d52100d421d3160f80a70617373776f7264", - "server_login_state": "a62f305635e341c151f5e51b89307940031337a0ad8f1369ddec9b672dc31f35d59be00eb66d77bda0079d6eda94809c863da359fef3a636704ae3fa1c9b9b2d18eb9b193528fbb392a5eab5da8068b7c276c8fe00814213ddd70d02157902bebfce850b403aaa4c99f8dbd5ff50d4ad3e703fb564a3fc474861e3f69d7c9a90037d3dbf36f215082644d5c5bc91e138f9665e7bc538f4bc70f97c91dfcd029b1c027b03dc99137478b3570d9da27922b88a8784f1c2f07cd04a0db04246531a", - "password_file": "d6f1486284e595707ae341a4d083d454477933b1bcf770bfc4087127c0a8e844e833f76e997aef5b46d2108811667183d08f0cc0a8465dac277287591cac1e42933ed23a2c9476cfa939854a40fc746c21606535b19f0a48cf8cc565f7c3e6df60a33dd8e1970aa3d2ed09c03ad0380e0cf628a669d3b7d030d3fea0dd7f5c0654e4188e55b7fe2eed8a7aee79ae6cfefabab86e7b7822f05bc422ac7e7a9acb968001b3dc5ead255a2d7599a7be60aa97ebed89808db20faa445e912f7df2da", - "export_key": "f1abeb7ab0a43ff1924b59d744053b271d999f341eedc740f1f62d785d19bec939479e5e39f2ec25f5ef712ecd10a085653ad1ed9049092cb2a3d44d6cc205ba", - "session_key": "037d3dbf36f215082644d5c5bc91e138f9665e7bc538f4bc70f97c91dfcd029b1c027b03dc99137478b3570d9da27922b88a8784f1c2f07cd04a0db04246531a" + "registration_request": "beb3c2ade1d495856db52d9ce9c1729aae621a6b90a4e892a6f48e08a3290032", + "registration_response": "84d28db17b088e33583c3579e54d74bfca04d2fe542049c1302a48125dcc8b343883f3d1d9703cdb90d12d388730f73b91b682fb5f375ce1a191b2ce025de703", + "registration_upload": "f637f1f78397fbc7fd403b2f2c0185a0d61749799e39f46c0f32c0e1629e4e35c903e24984244885abd0ba4e38249c22aeee196b7ab357c0eeb8c70118cb9ac6e377b835bb4b3d0677de272651d2e37da651e42b8dd2460b818fa0243fb69598aa831710cef76640aa5a9dc1442a20276fefb476a13ba0e58b503ef0ef1f2e0d5ddd6ad89f1c35cd5b5f8624ccf83b5e48ba57e1d29e4976ec3ca01dc4c83df5b3f5b891a2e67535d13e0baebc0aeee8807ba2a7254a376687dda6d527d7a069", + "credential_request": "beb3c2ade1d495856db52d9ce9c1729aae621a6b90a4e892a6f48e08a3290032f71932596f3e394216b5bacae7e1baa29ed87736bae5ffa311d81b57503391b4be80f3170a73645d10246cfa928e086c994d206c611468b1f5f053b82d3feb07", + "credential_response": "84d28db17b088e33583c3579e54d74bfca04d2fe542049c1302a48125dcc8b34e56ddfa0e8008f7960e8eef1e05e96ffbc3b86e2e4ff208d711055ecb34e7a169266466939f4ea87803eee09cc4657f16bfe4e04218818376d0eaefe03104a08ff0fb79b22494078c67f3e35b4e74f5830bff2c60a885bcf7a4b6d3ae1884a13144fb6ef6e9de572cd8d111a246243cb77d9242ee009d32f29a2bfa884d672a646415c1e2ef241f67a6572c7f2c4c6297a5b44c2d25f63348371f6bd509d238314774279665c0ae85e78f1e33d809eaa282a1adc8688a76e6ff4f87c3c34720ac26e902d6251c25a81546601e727ca875961a86b21a56c6aa8ea8b5412a5c05c885a44bf7efa323db909cdafbd5f87bd8bd90328c8f3323063677bb2ebbf385bccc1857a2beb6a0ce9feb23eb7bde83f12200aa4a3ee7aab8d216e2b085206cc", + "credential_finalization": "a88839b8eabbf400d30e8f65fe9219045213af3a227643324eedce7042db99bb3bf40f6fa0939d75b0e4ddc9dcd751a09c321aa777bc5022e52e7d8314972ca6", + "client_registration_state": "9a8f70c839f0a9dd821d00208f43e89442df2b844a0cf0dcc0508e8dd3cc3c0070617373776f7264", + "client_login_state": "9a8f70c839f0a9dd821d00208f43e89442df2b844a0cf0dcc0508e8dd3cc3c000060beb3c2ade1d495856db52d9ce9c1729aae621a6b90a4e892a6f48e08a3290032f71932596f3e394216b5bacae7e1baa29ed87736bae5ffa311d81b57503391b4be80f3170a73645d10246cfa928e086c994d206c611468b1f5f053b82d3feb07004021bb9572af542ec7bf97487d81f3c80115f615067a8d1267722aea841d594108f71932596f3e394216b5bacae7e1baa29ed87736bae5ffa311d81b57503391b470617373776f7264", + "server_login_state": "4d7cb8dac6a41b430f8d18e846461e5f6100f884f4916d7bd2e09f3642598358cabd9bc3e00a9fb6140d106ceab8c08437d9ea0967ffd31178f1e4659bf0571162b453052f9b0c0e6ba47dc6a7bf50d27702b3184164bdf8bb946b951b59d05298c24c401980856eb25590541316e324a0c32dae96ad8c0fb5995f8b69f37dabeff8b2b00ab3c5790b7277b63fef74bc61d4c2d4eed56690f33bb1ab0e7a0d3dfb51978be7b575b9ddf01ba5d6bb934267fc4c865d6a18aacc5246b6dddf519f", + "password_file": "f637f1f78397fbc7fd403b2f2c0185a0d61749799e39f46c0f32c0e1629e4e35c903e24984244885abd0ba4e38249c22aeee196b7ab357c0eeb8c70118cb9ac6e377b835bb4b3d0677de272651d2e37da651e42b8dd2460b818fa0243fb69598aa831710cef76640aa5a9dc1442a20276fefb476a13ba0e58b503ef0ef1f2e0d5ddd6ad89f1c35cd5b5f8624ccf83b5e48ba57e1d29e4976ec3ca01dc4c83df5b3f5b891a2e67535d13e0baebc0aeee8807ba2a7254a376687dda6d527d7a069", + "export_key": "11112a0747b2c943de39ac237ceed5b7e4a6a36359545cbb2cdd600c639603891d4ec768c63eb0a2d9b79282815369e2370449a8ab415f9bc12e5d8fc1c4b976", + "session_key": "eff8b2b00ab3c5790b7277b63fef74bc61d4c2d4eed56690f33bb1ab0e7a0d3dfb51978be7b575b9ddf01ba5d6bb934267fc4c865d6a18aacc5246b6dddf519f" } "#; @@ -164,6 +164,7 @@ fn stringify_test_vectors(p: &TestVectorParameters) -> String { s.push_str(format!("\"server_s_sk\": \"{}\",\n", hex::encode(&p.server_s_sk)).as_str()); s.push_str(format!("\"server_e_pk\": \"{}\",\n", hex::encode(&p.server_e_pk)).as_str()); s.push_str(format!("\"server_e_sk\": \"{}\",\n", hex::encode(&p.server_e_sk)).as_str()); + s.push_str(format!("\"fake_sk\": \"{}\",\n", hex::encode(&p.fake_sk)).as_str()); s.push_str( format!( "\"credential_identifier\": \"{}\",\n", @@ -481,7 +482,7 @@ fn test_serialization() -> Result<(), ProtocolError> { serde_json::to_string(&client_registration_start_result.message).unwrap(); assert_eq!( registration_request_json, - r#""DNx98cypibVpF8lRJ+WeyPBb2nxgbLRecUv6WCtCmDI=""# + r#""vrPCreHUlYVttS2c6cFymq5iGmuQpOiSpvSOCKMpADI=""# ); let registration_request: RegistrationRequest = serde_json::from_str(®istration_request_json).unwrap(); diff --git a/src/tests/opaque_test_vectors.rs b/src/tests/opaque_test_vectors.rs index a3d78bd..22b16a9 100644 --- a/src/tests/opaque_test_vectors.rs +++ b/src/tests/opaque_test_vectors.rs @@ -69,9 +69,9 @@ pub struct TestVectorParameters { // of https://datatracker.ietf.org/doc/draft-irtf-cfrg-opaque/ static TEST_VECTORS: &[&str] = &[ r#" -## OPAQUE-3DH Test Vector 1 +### OPAQUE-3DH Real Test Vector 1 -### Configuration +#### Configuration ~~~ OPRF: 0001 @@ -90,7 +90,7 @@ Nx: 64 Nok: 32 ~~~ -### Input Values +#### Input Values ~~~ oprf_seed: 5c4f99877d253be5817b4b03f37b6da680b0d5671d1ec5351fa61c5d82 @@ -122,75 +122,75 @@ blind_registration: c62937d17dc9aa213c9038f84fe8c5bf3d953356db01c4d48 acb7cae48e6a504 blind_login: b5f458822ea11c900ad776e38e29d7be361f75b4d79b55ad74923299 bf8d6503 -oprf_key: 23d431bab39aea4d2737ac391a50076300210730971788e3a6a8c29ad3c -5930e ~~~ -### Intermediate Values +#### Intermediate Values ~~~ -client_public_key: f692d6b738b4e240d5f59d534371363b47817c00c7058d4a33 -439911e66c3c27 -auth_key: 27972f9b1cf2ce524d50a7afa40a2ee6957904e2bef29976bdbda452a84 -fcf01023f3ddd8182e64ea5287f99765dd39b83fa89fe189db227212a144134684783 -randomized_pwd: 750ef06299c2fb102242fd84e59613616338f83e69c09c1dc3f91 -c57ac0642876ccbe785e94aa094262efdc6aed08b3faff7c1bddfa14c434c5a908ad6 -c5f9d5 +client_public_key: 100f6f945b57e4a316e46ed7169b6e9e533c35b29128368a9a +40534b09227428 +auth_key: 0ee186ac3a0fe0ec45d36c7cc9786934918a58d6a1abce6842a2b7bd0ec +1c0626e64d887622e8937e987bfbe042f904728966e121b01c739c8dbe66beb6241eb +randomized_pwd: 22f5e31fbbbf4649f77ebfc92a2ef555fc30a09edc903123d978d +e3ca356b85ce2120b0d2735bd772011ecb573e614cd7b1aeeb86ca0ac6b8732c33cdf +7a6816 envelope: 71b8f14b7a1059cdadc414c409064a22cf9e970b0ffc6f1fc6fdd539c46 -76775455739db882585a7c8b3e9ae7955da7135900d85ab832aa83a34b3ce481efc9e -43d4c2276220c8bcb9d27b5a827a5a2d655700321f3b32d21f578c21316195d8 -handshake_secret: 02fb23a668b7138b029c95d21f1e0eec9e10377be933bdbf3e5 -33ea39073d3ce9d1ef16b55a8a8464f3bf6a991cc645d14c1fa3d9d6cfe36c6c0dcc2 -691d7109 -server_mac_key: e75ce46beeebd26f22540d7988de9809a69cf34fec6c050750708 -e91232297fdbb51e875cd37167d5ce661ebccf0004dbbf96311daf64ddec7faae04c4 -8bbd89 -client_mac_key: 4bce132daa031fff2a6e5ac29287c4641e3b9dc2560394b8c73f3 -b748f1e51e577b932a960b236981217b33bee220b0bce2696638cfb7791f427ade292 -d60f55 +767754ed20356eabd714970fc0058aad92414cc26131c7c3f9a0f5baa76c8fc410984 +0921d83e26786e9c5b6a1cbc4458925fd65415547ffd61d2afbcb593a3a82fb1 +handshake_secret: 9dc2e984200002626dac10f89b9d2efe967f68c8eb19612dd6c +2592d531ca5bd443c0548b8cef946f6e99998d810838c0ee99219fe13052beae3dc2c +b157c991 +server_mac_key: 66739820f04e1cddc7090b05d510baf0de4273ebd9e26f6da961b +687dfdc05c6a68a93f81fd6ed7ff19c1c7f95cc76ceb2c680ed4ab2d6a5eb53088abd +3f7a36 +client_mac_key: e0d836ea8e158a50a7cc610ca27eee2fb92187aa7273cb46ee21d +230be82e7efddf742fe127bc95eb6e034a01efe38ae3c4240b0d0f7fa395dfa52032a +0c1cb5 +oprf_key: 3f76113135e6ca7e51ac5bb3e8774eb84709ad36b8907ec8f7bc3537828 +71906 ~~~ -### Output Values +#### Output Values ~~~ -registration_request: 80576bce33c6ce89f9e1a06d8595cd9d09d9aef46b20dad -d57a845dc50e7c074 -registration_response: 1a80fdb4f4eb1985587b5b95661d2cff1ef2493cdcdd88 -b5699f39048f0d6c2618d5035fd0a9c1d6412226df037125901a43f4dff660c0549d4 +registration_request: 76cc85628d5ac0e01de4ede72479d607490e7f58b94578d +b7a0606d74bc58b03 +registration_response: 865f3305ff73be7388313e7a74b5fc277a165ff2895f92 +60391057b84c7bc72718d5035fd0a9c1d6412226df037125901a43f4dff660c0549d4 02f672bcc0933 -registration_upload: f692d6b738b4e240d5f59d534371363b47817c00c7058d4a -33439911e66c3c2795014d8fc0c710bd763c981c5b9329c95e149c6717af91bad2cec -daf87f2c3c9c11914cb6d44aaee5679e3e61e1b65241fda74902cca908a065495c0b2 -8b799e71b8f14b7a1059cdadc414c409064a22cf9e970b0ffc6f1fc6fdd539c467677 -5455739db882585a7c8b3e9ae7955da7135900d85ab832aa83a34b3ce481efc9e43d4 -c2276220c8bcb9d27b5a827a5a2d655700321f3b32d21f578c21316195d8 -KE1: 60d71c9f5d2a14568807b869e2c251a8e5f7ad8951cd8386c7e32c0634b26b16 +registration_upload: 100f6f945b57e4a316e46ed7169b6e9e533c35b29128368a +9a40534b09227428dc3b0057603d1c23df7e6f239984604c4b0dfa111528ab0ba3c7f +6ab1ceb11d10aa85433f63bbf30b9b0ae8951653bcd3beb12aa61cf942e6e5b442282 +0d810871b8f14b7a1059cdadc414c409064a22cf9e970b0ffc6f1fc6fdd539c467677 +54ed20356eabd714970fc0058aad92414cc26131c7c3f9a0f5baa76c8fc4109840921 +d83e26786e9c5b6a1cbc4458925fd65415547ffd61d2afbcb593a3a82fb1 +KE1: e47c1c5e5eed1910a1cbb6420c5edf26ea3c099aaaedcb03599fc311a724d84f 804133133e7ee6836c8515752e24bb44d323fef4ead34cde967798f2e9784f69f6792 6bd036c5dc4971816b9376e9f64737f361ef8269c18f69f1ab555e96d4a -KE2: 78a428204f552d3532bad040c961324edb22c738d98f1dd770d65caba0bd8966 -54f9341ca183700f6b6acf28dbfe4a86afad788805de49f2d680ab86ff39ed7fbcbbb -84a18810b8eb1dc898d9af686f5901a21d0768720b325279fde4931ee52f0d4a0d0d9 -cd1cd7c424d4622b1588ba554cd9241352a59ef52bbe85e0f865021404b115ba954f5 -540cf2d811a6566a93876cac1239b1f75f39b070250af5a84a819e08b13e9e437a80f -c25cc130f8475dde43efe6d900c664e9bac300298bb0f9c5ec75a8cd571370add249e +KE2: 9692d473e0bde7a1fbb6d2c0e4001ccc58902102857d0e67e5fa44f4b902b17f +54f9341ca183700f6b6acf28dbfe4a86afad788805de49f2d680ab86ff39ed7f7b11e +e2cb784efa8e6cbbb9cc6b52b16290e3906235d71b773534c3da1575a00708219fa81 +05b3d2a1292d58d6ea6b0e464c752df6f957a9e34a66de7e5d44db0e48648d414f7b1 +54e52d5f664c1b88dd42a8117b048fb26428a3b86885d2157a7136708494fd92f50c1 +c3f63bd60d0b458254ac54c6e64841be63f1c4459d3bf9c5ec75a8cd571370add249e 99cb8a8c43f6ef05610ac6e354642bf4fedbf696e77d4749eb304c4d74be9457c5975 -46bc22aed699225499910fc913b3e907120485942e3e077f71c1dd2d87053b39f0d31 -bfe5d5f90df0e85ad9ce771e4f4d1ab697a10a02002cd73916051b887da9554465d58 -68811fd8b22b8f457ed5a4b0 -KE3: b4f8aece9fb4f6b7b5ffe1c98747a91f4ec7bf5481fe5719ba4baad668e3fd4e -8aba4fa227bd4c688ed9e17f6c6d28ab5e5617a883207d80979dc4797ca89304 -export_key: 045f61f4baa0a945c2e85dfb7a85fe4df8a49e6c31344920e863c286b -c8a17fe25fc16c84836335b4b5ecc9743c5d3a221101ab004aa99ce65026b6953ad6c -c0 -session_key: 91187690e5ea0da3110a1dd7d5ffd7c4c3111950c587d9fcf3b9f34b -f73b86dbeafed42a05024fa875a32415c6143d20c39cd732eb0e31db5e60ea3fb2551 -cf7 +46bc22aed699225499910fc913b3e907129491571e3137ff950f905e6c83db79e5103 +bd8b7c27799d1eac8d8c57fd2f0b913e81411c02bc722b30b4eb4ee3a53fc1b21232b +4218eb0ed00996dc8c841a96 +KE3: 5a4e48d857196ce709b054f7be4e3973f0892abfafc030762bd4be5dbeb342af +b5bf1fd24a7b355f556f9d53f146ebb3729ae693f69fc1f7862a0c11c8ee7c9d +export_key: 47d742be256471ec7a7b0ebc022d6ca016b022a7dcbdd41fa1b6dbfcd +6f88285aee60db87e7c5e5aff87b55904b07137b3d85648bb62d70a18954dd1c66cdd +c2 +session_key: e132b5c83951919bc0f22aa4e3b12b4af81831ccf770f318d11c8c0a +854fddf6bbeee72e24114402ff9012cf117bac95dda241b24d055f7ce2750e6975fa2 +22d ~~~ "#, r#" -## OPAQUE-3DH Test Vector 2 +### OPAQUE-3DH Real Test Vector 2 -### Configuration +#### Configuration ~~~ OPRF: 0001 @@ -209,7 +209,7 @@ Nx: 64 Nok: 32 ~~~ -### Input Values +#### Input Values ~~~ client_identity: 616c696365 @@ -243,69 +243,69 @@ blind_registration: a66ffb41ccf1194a8d7dda900f8b6b0652e4c7fac4610066f e0489a804d3bb05 blind_login: e6f161ac189e6873a19a54efca4baa0719e801e336d929d35ca28b5b 4f60560e -oprf_key: 1e0550d2dbb9ce5dd9bdbb5f808afbb724c573dc03306dcfc7217796465 -ce607 ~~~ -### Intermediate Values +#### Intermediate Values ~~~ -client_public_key: ba6cb41f1870e9db7e858440a664e6559d01fdbfb638bbf7e1 -c9004f20d5db71 -auth_key: 5142ae6f6bd80686039656fd7a03cdd7e39cc6e869aa637220d4b5fb64f -afee2f284a1581fff95ad3a5261b413c5e5b91115f78a3c35486fa56023c300d1726b -randomized_pwd: cea240b632b9c1d704034920cc3dc3c664ed8cd82cf5c0339af76 -4d6350d2ee9ba1f675ce8df7b6cf8692d1efb158bafa3c2695ac03a2d92346c19810c -1a698b +client_public_key: c8c9f3a9adab66971bbdb230bd44512741a489e333624186ac +a1b0e967011e06 +auth_key: 494f1326c65c057e301f15e619b9e3de553c77132987828ba20026062da +a1f18d516ac2e37b1dfc296e21137623856fb3ccba48cc511f143110944848764dfb7 +randomized_pwd: a4853e726d14efb03c35686ee2bc67665d02bdccb0c4c02523bf4 +e1398e78b1094195a082b5ebb1b62ac75d06711643e9990c2be0071a42bc21a2b766b +787eac envelope: d0c7b0f0047682bd87a87e0c3553b9bcdce7e1ae3348570df20bf274782 -9b2d26e18240c0cbad3b4cdbd7d9d86512f87e43fac39e3785a17504aaa8508f81e3c -1517b150259be478720935e175b1e34bbe625d0828a62ca9983f9a27aed27f5e -handshake_secret: 7925c12d7bf3050e62fe5c8caaece3c85737754c5df79bc59a6 -0fa87929ab1f4a4730f903b87be8b7d89ded8ec97aaec97bc8e7d53a555fd4ad74c4f -33b9bc83 -server_mac_key: 27d6036335c5654132fb08cc81d95b3067ef7fe795f017531231a -e3fa03cd3ab72f1f5e81473318f9c01f990263d885dfce4b6ac8630fdc8ee8abc6a36 -7c2339 -client_mac_key: ebb3693bac6310075a89922c7a40599d14d03d9104b7a331106e8 -a578a32a4944751f9d3c230a6690a5747137388a86159cf587969d13dadc0a3830218 -dfbca5 +9b2d21a6d25b3a1b8a541f47fc4bbe5783c2cc61c77ed389280a05ed2ef8c2c2d03fe +2066bd22ea959c7bb14b5259ee136e86f4d956fbaa2af2f6a326785f21262909 +handshake_secret: aacad16f4fb6ff90e3a6afb4e430a550000f0351cd30aab930c +3118c8aebbf8bcaa5252809b065d19a26ab475214a1c4dd60c28e91ce310b5a79968d +bb87938c +server_mac_key: 58edbb9aa5489765c102470a5287b5036893b8cea58ecc836bd0c +df4a818f41d6cd58c46d64db3548774f2cc651d10f8e152a7fdd47493c90a28b1106c +8d329b +client_mac_key: 57be496bd6fa74ecfed7a8c30a9ee085f3e56dbf0d5c18c9ad8c3 +8799f0ededd9a8af85e59276935da7bc3ddd2a8cf4fa9ea723ea70b6dba1db2872815 +27944a +oprf_key: 531b0c7b0a3f90060c28d3d96ef5fecf56e25b8e4bf71c14bc770804c3f +b4507 ~~~ -### Output Values +#### Output Values ~~~ -registration_request: f841cbb85844967568c7405f3831a58c4f5f37ccddb0baa -4972ea912c960ae66 -registration_response: 0256257cc6e2b04444edc076b9ad44d8b31593e050bea8 -06485707a818f8a93f8aa90cb321a38759fc253c444f317782962ca18d33101eab2c8 +registration_request: ec2927a03ced1220168b6d5a54f0372f813ced8ad3673d5 +1dee92d2cbfee500c +registration_response: f6e244e131f8cd14bc37a856a933c91128b2498c06540d +2dba3a197ed7d8bd778aa90cb321a38759fc253c444f317782962ca18d33101eab2c8 cda04405a181f -registration_upload: ba6cb41f1870e9db7e858440a664e6559d01fdbfb638bbf7 -e1c9004f20d5db71146e42585d25fa19913876edce4b5ee99b638eb37b1d8a8a76607 -efaa12299e828641ba4fbf1c46fc2c3776e0a0c9791f88a15b9ddfb5495d63ce92d8f -58823bd0c7b0f0047682bd87a87e0c3553b9bcdce7e1ae3348570df20bf2747829b2d -26e18240c0cbad3b4cdbd7d9d86512f87e43fac39e3785a17504aaa8508f81e3c1517 -b150259be478720935e175b1e34bbe625d0828a62ca9983f9a27aed27f5e -KE1: 14cc586d982b6db9846c78e0b3c543591e95fbf2fc877fa0e5eff89897dd3050 +registration_upload: c8c9f3a9adab66971bbdb230bd44512741a489e333624186 +aca1b0e967011e069fabb8544108ec64de2b992935dd5fd9a98441412ccf724bf4853 +c28749d9fd33fb1824b964f616a7fce654e05bb15133bd4a69441dcbfe6a02b8a546e +1b32dbd0c7b0f0047682bd87a87e0c3553b9bcdce7e1ae3348570df20bf2747829b2d +21a6d25b3a1b8a541f47fc4bbe5783c2cc61c77ed389280a05ed2ef8c2c2d03fe2066 +bd22ea959c7bb14b5259ee136e86f4d956fbaa2af2f6a326785f21262909 +KE1: d0a498e621d3ff7a011b37166a63ef40fe268f93c7d75a467eea42a98c0a490d a6bcd29b5aecc3507fc1f8f7631af3d2f5105155222e48099e5e6085d8c1187a642e7 eecf19b804a62817486663d6c6c239396f709b663a4350cda67d025687a -KE2: 8ab71c17547f376ae787741c367142790087090cdde6327dabb2581197bffa59 -30635396b708ddb7fc10fb73c4e3a9258cd9c3f6f761b2c227853b5def228c85dd973 -a1ac59244f674da4a1c057961886661bd29e0c1346f0fcf75bf1c78d4781815c2f9f6 -f2f9fe0e370b256f6e82fb2e14c7ffc374d42caf26abf13dca169a6faafd5cff8baa9 -717090bc1fc5e1ba56acb93492d1a8b789f33ff29b6004c4be9a755ff590d7d00d6e8 -893e7e54e639aebf69d18f2182a9bb0f2e1c27c81ba73fa57f7ef652185f89114109f +KE2: e6d0c01cdc14f7bfdb38effbd63394f6304b47c2dc26fd510ecdbf471486b972 +30635396b708ddb7fc10fb73c4e3a9258cd9c3f6f761b2c227853b5def228c8563625 +e7cfa2857bdc95991bfccc09b69ed53fd5f173389f4d8786b261b6dfd2fc7c18968dd +1be8cdb52b1ca691d8d27ad655e6c78a6ef67c2ad43899259b060706f7d4f4946f97b +d283c009a736227e9c1913b394d0d88419c6463970c0c2887bd5890eac805e8657903 +f7f8887f5eab9e700414af99bbabe3b6594418e2a3723fa57f7ef652185f89114109f 5a61cc8c9216fdd7398246bb7a0c20e2fbca2d8ae070cdffe5bb4b1c373e71be8e7d8 -f356ee5de37881533f10397bcd84d35445401c619d464ab3a134c71da4d9874f2f736 -189b8bbb659c28f8db25a58b9f089272132e3091efa87d6b07d10321ba464047be011 -3e91514aba299fd1553bcebb -KE3: c4a0d5b8148f3ac0f8611b38de38bda085d4eb00d561397ae59676f36dc705be -1c939e7bfdd7301103af5eb164bdfb70298aab889bd2ac797e419a82bfb442e6 -export_key: 6b50ae4dba956930c0465b4a26c3cee58e05afcab623c1c254ae34acc -38babf954530a53475672ff46a1cf7fd53ef9e808f85b08793d021bb5c6d2a1bb9204 -f6 -session_key: c9bc2b7e2237f6fbeccd92dc6ec6d51faeb886492f8d23f21743a967 -597025215df02a4afb75349acbafeef9dfd4f19e6d38da8bea4912f7b691b70849b0d -78e +f356ee5de37881533f10397bcd84d354450f1409ae0d487a21921d7edbfe34f9e16a8 +ac94f6f83b0d4a78c1fe567ea4bda594d375917e22fe0fc203773bf728eff0309f259 +4ac3f4dc2cf066f4febcca0e +KE3: c3dc494d69ef860b348714fd67a3e6490e5afd493d7212729a96d61e9502f7a8 +202a18be10b513f236b3e7e2e2f62ff25a61525991c81c030836cb1933b7a13d +export_key: 7f2e5b749ec5f6ab34663655184f3653275aafd5db070b6aac6afd80a +78309a8ec0f97a2f2cfcc7a971983a914ead081a8a642b65d298c579d3526d2219381 +8d +session_key: a07bb20c5ad960af8caf83b112a008a61e10e2475456fd0620a11ea5 +a75706750b72c4943c3985cae5f31969dea9c74192c8bf601e2d062fcb141c89234ff +7be ~~~ "#, ]; @@ -360,7 +360,7 @@ cec8177d6389ee379b0a masking_key: e968bfe56ad934c3e1088115bcbf1af8b405fd0de94cdf301f9192cc 2781de00617e568b14b7235cc1189265811ea354031ea39b62e31a104f181c01d3dae 4b8 -KE1: 480b6c0066c9320c50dce20f8b6b63e4ded7681defd9da3f70ecdc15770f9e68 +KE1: b61bfe5997b644e9654b7796203831ea9b9e86499c17db3331a40673832c9729 05603c1acb64ea417c0dabaab858a5f9da046d4a0cdbf092034c00451ccdc6e1ee835 5c91d5ed7aa5ea75b8a730ba8dc45f6b41ae9713e6aa7126211346e8754 ~~~ @@ -368,16 +368,16 @@ KE1: 480b6c0066c9320c50dce20f8b6b63e4ded7681defd9da3f70ecdc15770f9e68 #### Output Values ~~~ -KE2: 04013bca360b4b9ba95b2f494927375e0f234dac23053822e466a9738f781522 +KE2: 0826f0581be79672ccf51276e4b4079bf05aa94530591b24acbf4106cf2fa34e 3058799f42516228746821dc8c8530d0e8273ebde81941591d69ca5aea77309078577 13efdc95f69166737cd7a80ead60e1a1f805c1da9cccbc0d29120f34be291518798c7 00793f232374e66182495b76b388d9e11f479580cc2297da02fecee88a99cea6bc411 b9467e8bfa9a4006aba7f21b74b4ce3bccd686785878b0ec9b3fc4200228014d5d073 69d42d1d1b1669ecd2ad8905734ca0a641d8f16667ca4e2a8098173efa2968036f176 2f2e5df41ab976fb1bfb91dae29950f8526de4c0e247410004d83d7cbe3af89c62ff0 -3f942127aec4b0084c9eb588e74ce6dd06fb1a0fd81da51bc1d87c740c186d881ed79 -71fdba5ad1d5cfc94ffe6a731241c78ea7ea5dae503e987edc37355b7348883dc65cd -b57aec04e64593007f98a405 +3f942127aec4b0084c9eb588e74ce6dd0689ffd826511fa128dc90837369bb9ed14d0 +794aa3a6e45d2ef533cf6b7e3b47d963eed736c71c8ca933af078af45f573bd3fb790 +336c9b47cc40f3d7c091a552 ~~~ "#]; diff --git a/src/tests/voprf_test_vectors.rs b/src/tests/voprf_test_vectors.rs index f94f54f..509a650 100644 --- a/src/tests/voprf_test_vectors.rs +++ b/src/tests/voprf_test_vectors.rs @@ -24,22 +24,22 @@ struct VOPRFTestVectorParameters { static OPRF_RISTRETTO255_SHA512: &[&str] = &[ r#" { - "sksm": "758cbac0e1eb4265d80f6e6489d9a74d788f7ddeda67d7fb3c08b08f44bda30a", + "sksm": "caeff69352df4905a9121a4997704ca8cee1524a110819eb87deba1a39ec1701", "input": "00", "blind": "c604c785ada70d77a5256ae21767de8c3304115237d262134f5e46e512cf8e03", - "blinded_element": "3c7f2d901c0d4f245503a186086fbdf5d8b4408432b25c5163e8b5a19c258348", - "evaluation_element": "fc6c2b854553bf1ed6674072ed0bde1a9911e02b4bd64aa02cfb428f30251e77", - "output": "d8ed12382086c74564ae19b7a2b5ed9bdc52656d1fc151faaae51aaba86291e8df0b2143a92f24d44d5efd0892e2e26721d27d88745343493634a66d3a925e3a" + "blinded_element": "fc20e03aff3a9de9b37e8d35886ade11ec7d85c2a1fb5bb0b1686c64e07ac467", + "evaluation_element": "7c72cc293cd7d44c0b57c273f27befd598b132edc665694bdc9c42a4d3083c0a", + "output": "e3a209dce2d3ea3d84fcddb282818caebb756a341e08a310d9904314f5392085d13c3f76339d745db0f46974a6049c3ea9546305af55d37760b2136d9b3f0134" } "#, r#" { - "sksm": "758cbac0e1eb4265d80f6e6489d9a74d788f7ddeda67d7fb3c08b08f44bda30a", + "sksm": "caeff69352df4905a9121a4997704ca8cee1524a110819eb87deba1a39ec1701", "input": "5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a", "blind": "5ed895206bfc53316d307b23e46ecc6623afb3086da74189a416012be037e50b", - "blinded_element": "28a5e797b710f76d20a52507145fbf320a574ec2c8ab0e33e65dd2c277d0ee56", - "evaluation_element": "345e140b707257ae83d4911f7ead3177891e7a62c54097732802c4c7a98ab25a", - "output": "4d5f4221b5ebfd4d1a9dd54830e1ed0bce5a8f30a792723a6fddfe6cfe9f86bb1d95a3725818aeb725eb0b1b52e01ee9a72f47042372ef66c307770054d674fc" + "blinded_element": "483d4f39de5ff77fa0f9a0ad2334dd5bf87f2cda868539d21de67ce49e7d1536", + "evaluation_element": "026f2758fc62f02a7ff95f35ec6f20186aa57c0274361655543ea235d7b2aa34", + "output": "2c17dc3e9398dadb44bb2d3360c446302e99f1fe0ec40f0b1ad25c9cf002be1e4b41b4900ef056537fe8c14532ccea4d796f5feab9541af48057d83c0db86fe9" } "#, ];