From 226fe0ea7ab7b5a3b085f29ac22efed4d6e35d3f Mon Sep 17 00:00:00 2001 From: Kevin Lewi Date: Mon, 8 Sep 2025 11:27:47 -0700 Subject: [PATCH] Updating test vectors to RFC 9807 (#386) * Updating to RFC 9807 * Update CHANGELOG.md Co-authored-by: daxpedda * Update CHANGELOG.md Co-authored-by: daxpedda * Update CHANGELOG.md Co-authored-by: daxpedda --------- Co-authored-by: daxpedda --- CHANGELOG.md | 16 + README.md | 6 +- src/lib.rs | 4 - src/tests/mod.rs | 2 +- src/tests/opaque_vectors.rs | 876 ------------------------------- src/tests/parser.rs | 13 +- src/tests/rfc9807_vectors.rs | 810 ++++++++++++++++++++++++++++ src/tests/test_opaque_vectors.rs | 14 +- 8 files changed, 853 insertions(+), 888 deletions(-) delete mode 100644 src/tests/opaque_vectors.rs create mode 100644 src/tests/rfc9807_vectors.rs diff --git a/CHANGELOG.md b/CHANGELOG.md index 7233341..6a68099 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,21 @@ # Changelog +## 4.0.0-pre.0 (September 8, 2025) +* Increased MSRV to 1.83 +* Synced implementation with RFC 9807 (no core protocol changes) +* Added a SIGMA-I key exchange implementation +* Removed KeGroup type from the Ciphersuite trait (now part of KeyExchange type) + * **Breaking: existing Ciphersuite trait definitions need to be updated** +* Ensured that dummy record is always created to avoid timing attack issues +* Modified the dummy registration file to only contain the public key + instead of the keypair + * **Breaking: existing `ServerSetup`s need to be updated** +* Added remote OPRF seed support +* Replace remote private key trait with a state machine, facilitating async support. +* Serde de/serialization formats have been simplified + * **Breaking: existing `RegistrationUpload`s may need to be updated** + + ## 3.0.0 (October 10, 2024) * Synced implementation with draft-irtf-cfrg-opaque-16 * **Breaking: protocol context string changed from `RFCXXXX` to `OPAQUEv1-`** diff --git a/README.md b/README.md index 6829c81..861fda1 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ [OPAQUE](https://eprint.iacr.org/2018/163.pdf) is an augmented password-authenticated key exchange protocol. It allows a client to authenticate to a server using a password, without ever having to expose the plaintext password to the server. -This implementation is based on the [Internet Draft for OPAQUE](https://github.com/cfrg/draft-irtf-cfrg-opaque). +This implementation is based on [RFC 9807](https://datatracker.ietf.org/doc/rfc9807/). Background ---------- @@ -22,7 +22,7 @@ Installation Add the following line to the dependencies of your `Cargo.toml`: ``` -opaque-ke = "3" +opaque-ke = "4.0.0-pre.0" ``` ### Minimum Supported Rust Version @@ -40,7 +40,7 @@ Resources --------- - [OPAQUE academic publication](https://eprint.iacr.org/2018/163.pdf), including formal definitions and a proof of security -- [draft-irtf-cfrg-opaque-17](https://datatracker.ietf.org/doc/draft-irtf-cfrg-opaque/17/), containing a detailed (byte-level) specification for OPAQUE +- [RFC 9807](https://datatracker.ietf.org/doc/rfc9807/), containing a detailed (byte-level) specification for OPAQUE - ["Let's talk about PAKE"](https://blog.cryptographyengineering.com/2018/10/19/lets-talk-about-pake/), an introductory blog post written by Matthew Green that covers OPAQUE - [@serenity-kit/opaque](https://github.com/serenity-kit/opaque), a WebAssembly package for this library - [opaque-wasm](https://github.com/marucjmar/opaque-wasm), a WebAssembly package for this library. A comparison between `@serenity-kit/opaque` and `opaque-wasm` can be found [here](https://opaque-documentation.netlify.app/docs/faq#how-does-it-compare-to-opaque-wasm) diff --git a/src/lib.rs b/src/lib.rs index 9717eb1..bd31540 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -9,10 +9,6 @@ //! An implementation of the OPAQUE augmented password authentication key //! exchange protocol //! -//! Note: This implementation is in sync with [draft-irtf-cfrg-opaque-16](https://datatracker.ietf.org/doc/draft-irtf-cfrg-opaque/16/), -//! but this specification is subject to change, until the final version -//! published by the IETF. -//! //! ### Minimum Supported Rust Version //! //! Rust **1.85** or higher. diff --git a/src/tests/mod.rs b/src/tests/mod.rs index 45c96b6..9708c9e 100644 --- a/src/tests/mod.rs +++ b/src/tests/mod.rs @@ -10,6 +10,6 @@ mod full_test; #[rustfmt::skip] mod full_test_vectors; pub mod mock_rng; -mod opaque_vectors; mod parser; +mod rfc9807_vectors; mod test_opaque_vectors; diff --git a/src/tests/opaque_vectors.rs b/src/tests/opaque_vectors.rs deleted file mode 100644 index 64127c5..0000000 --- a/src/tests/opaque_vectors.rs +++ /dev/null @@ -1,876 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. -// -// This source code is dual-licensed under either the MIT license found in the -// LICENSE-MIT file in the root directory of this source tree or the Apache -// License, Version 2.0 found in the LICENSE-APACHE file in the root directory -// of this source tree. You may select, at your option, one of the above-listed -// licenses. - -//! The OPAQUE test vectors taken from -//! - -pub(crate) static VECTORS: &str = r#" -## Real Test Vectors {#real-vectors} - -### OPAQUE-3DH Real Test Vector 1 - -#### Configuration - -~~~ -OPRF: ristretto255-SHA512 -Hash: SHA512 -KSF: Identity -KDF: HKDF-SHA512 -MAC: HMAC-SHA512 -Group: ristretto255 -Context: 4f50415155452d504f43 -Nh: 64 -Npk: 32 -Nsk: 32 -Nm: 64 -Nx: 64 -Nok: 32 -~~~ - -#### Input Values - -~~~ -oprf_seed: f433d0227b0b9dd54f7c4422b600e764e47fb503f1f9a0f0a47c6606b0 -54a7fdc65347f1a08f277e22358bbabe26f823fca82c7848e9a75661f4ec5d5c1989e -f -credential_identifier: 31323334 -password: 436f7272656374486f72736542617474657279537461706c65 -envelope_nonce: ac13171b2f17bc2c74997f0fce1e1f35bec6b91fe2e12dbd323d2 -3ba7a38dfec -masking_nonce: 38fe59af0df2c79f57b8780278f5ae47355fe1f817119041951c80 -f612fdfc6d -server_private_key: 47451a85372f8b3537e249d7b54188091fb18edde78094b43 -e2ba42b5eb89f0d -server_public_key: b2fe7af9f48cc502d016729d2fe25cdd433f2c4bc904660b2a -382c9b79df1a78 -server_nonce: 71cd9960ecef2fe0d0f7494986fa3d8b2bb01963537e60efb13981e -138e3d4a1 -client_nonce: da7e07376d6d6f034cfa9bb537d11b8c6b4238c334333d1f0aebb38 -0cae6a6cc -client_keyshare_seed: 82850a697b42a505f5b68fcdafce8c31f0af2b581f063cf -1091933541936304b -server_keyshare_seed: 05a4f54206eef1ba2f615bc0aa285cb22f26d1153b5b40a -1e85ff80da12f982f -blind_registration: 76cfbfe758db884bebb33582331ba9f159720ca8784a2a070 -a265d9c2d6abe01 -blind_login: 6ecc102d2e7a7cf49617aad7bbe188556792d4acd60a1a8a8d2b65d4 -b0790308 -~~~ - -#### Intermediate Values - -~~~ -client_public_key: 76a845464c68a5d2f7e442436bb1424953b17d3e2e289ccbac -cafb57ac5c3675 -auth_key: 6cd32316f18d72a9a927a83199fa030663a38ce0c11fbaef82aa9003773 -0494fc555c4d49506284516edd1628c27965b7555a4ebfed2223199f6c67966dde822 -randomized_password: aac48c25ab036e30750839d31d6e73007344cb1155289fb7 -d329beb932e9adeea73d5d5c22a0ce1952f8aba6d66007615cd1698d4ac85ef1fcf15 -0031d1435d9 -envelope: ac13171b2f17bc2c74997f0fce1e1f35bec6b91fe2e12dbd323d23ba7a3 -8dfec634b0f5b96109c198a8027da51854c35bee90d1e1c781806d07d49b76de6a28b -8d9e9b6c93b9f8b64d16dddd9c5bfb5fea48ee8fd2f75012a8b308605cdd8ba5 -handshake_secret: 81263cb85a0cfa12450f0f388de4e92291ec4c7c7a0878b6245 -50ff528726332f1298fc6cc822a432c89504347c7a2ccd70316ae3da6a15e0399e6db -3f7c1b12 -server_mac_key: 0d36b26cfe38f51f804f0a9361818f32ee1ce2a4e5578653b5271 -84af058d3b2d8075c296fd84d24677913d1baa109290cd81a13ed383f9091a3804e65 -298dfc -client_mac_key: 91750adbac54a5e8e53b4c233cc8d369fe83b0de1b6a3cd85575e -eb0bb01a6a90a086a2cf5fe75fff2a9379c30ba9049510a33b5b0b1444a88800fc3ee -e2260d -oprf_key: 5d4c6a8b7c7138182afb4345d1fae6a9f18a1744afbcc3854f8f5a2b4b4 -c6d05 -~~~ - -#### Output Values - -~~~ -registration_request: 5059ff249eb1551b7ce4991f3336205bde44a105a032e74 -7d21bf382e75f7a71 -registration_response: 7408a268083e03abc7097fc05b587834539065e86fb0c7 -b6342fcf5e01e5b019b2fe7af9f48cc502d016729d2fe25cdd433f2c4bc904660b2a3 -82c9b79df1a78 -registration_upload: 76a845464c68a5d2f7e442436bb1424953b17d3e2e289ccb -accafb57ac5c36751ac5844383c7708077dea41cbefe2fa15724f449e535dd7dd562e -66f5ecfb95864eadddec9db5874959905117dad40a4524111849799281fefe3c51fa8 -2785c5ac13171b2f17bc2c74997f0fce1e1f35bec6b91fe2e12dbd323d23ba7a38dfe -c634b0f5b96109c198a8027da51854c35bee90d1e1c781806d07d49b76de6a28b8d9e -9b6c93b9f8b64d16dddd9c5bfb5fea48ee8fd2f75012a8b308605cdd8ba5 -KE1: c4dedb0ba6ed5d965d6f250fbe554cd45cba5dfcce3ce836e4aee778aa3cd44d -da7e07376d6d6f034cfa9bb537d11b8c6b4238c334333d1f0aebb380cae6a6cc6e29b -ee50701498605b2c085d7b241ca15ba5c32027dd21ba420b94ce60da326 -KE2: 7e308140890bcde30cbcea28b01ea1ecfbd077cff62c4def8efa075aabcbb471 -38fe59af0df2c79f57b8780278f5ae47355fe1f817119041951c80f612fdfc6dd6ec6 -0bcdb26dc455ddf3e718f1020490c192d70dfc7e403981179d8073d1146a4f9aa1ced -4e4cd984c657eb3b54ced3848326f70331953d91b02535af44d9fedc80188ca46743c -52786e0382f95ad85c08f6afcd1ccfbff95e2bdeb015b166c6b20b92f832cc6df01e0 -b86a7efd92c1c804ff865781fa93f2f20b446c8371b671cd9960ecef2fe0d0f749498 -6fa3d8b2bb01963537e60efb13981e138e3d4a1c4f62198a9d6fa9170c42c3c71f197 -1b29eb1d5d0bd733e40816c91f7912cc4a660c48dae03e57aaa38f3d0cffcfc21852e -bc8b405d15bd6744945ba1a93438a162b6111699d98a16bb55b7bdddfe0fc5608b23d -a246e7bd73b47369169c5c90 -KE3: 4455df4f810ac31a6748835888564b536e6da5d9944dfea9e34defb9575fe5e2 -661ef61d2ae3929bcf57e53d464113d364365eb7d1a57b629707ca48da18e442 -export_key: 1ef15b4fa99e8a852412450ab78713aad30d21fa6966c9b8c9fb3262a -970dc62950d4dd4ed62598229b1b72794fc0335199d9f7fcc6eaedde92cc04870e63f -16 -session_key: 42afde6f5aca0cfa5c163763fbad55e73a41db6b41bc87b8e7b62214 -a8eedc6731fa3cb857d657ab9b3764b89a84e91ebcb4785166fbb02cedfcbdfda215b -96f -~~~ - -### OPAQUE-3DH Real Test Vector 2 - -#### Configuration - -~~~ -OPRF: ristretto255-SHA512 -Hash: SHA512 -KSF: Identity -KDF: HKDF-SHA512 -MAC: HMAC-SHA512 -Group: ristretto255 -Context: 4f50415155452d504f43 -Nh: 64 -Npk: 32 -Nsk: 32 -Nm: 64 -Nx: 64 -Nok: 32 -~~~ - -#### Input Values - -~~~ -client_identity: 616c696365 -server_identity: 626f62 -oprf_seed: f433d0227b0b9dd54f7c4422b600e764e47fb503f1f9a0f0a47c6606b0 -54a7fdc65347f1a08f277e22358bbabe26f823fca82c7848e9a75661f4ec5d5c1989e -f -credential_identifier: 31323334 -password: 436f7272656374486f72736542617474657279537461706c65 -envelope_nonce: ac13171b2f17bc2c74997f0fce1e1f35bec6b91fe2e12dbd323d2 -3ba7a38dfec -masking_nonce: 38fe59af0df2c79f57b8780278f5ae47355fe1f817119041951c80 -f612fdfc6d -server_private_key: 47451a85372f8b3537e249d7b54188091fb18edde78094b43 -e2ba42b5eb89f0d -server_public_key: b2fe7af9f48cc502d016729d2fe25cdd433f2c4bc904660b2a -382c9b79df1a78 -server_nonce: 71cd9960ecef2fe0d0f7494986fa3d8b2bb01963537e60efb13981e -138e3d4a1 -client_nonce: da7e07376d6d6f034cfa9bb537d11b8c6b4238c334333d1f0aebb38 -0cae6a6cc -client_keyshare_seed: 82850a697b42a505f5b68fcdafce8c31f0af2b581f063cf -1091933541936304b -server_keyshare_seed: 05a4f54206eef1ba2f615bc0aa285cb22f26d1153b5b40a -1e85ff80da12f982f -blind_registration: 76cfbfe758db884bebb33582331ba9f159720ca8784a2a070 -a265d9c2d6abe01 -blind_login: 6ecc102d2e7a7cf49617aad7bbe188556792d4acd60a1a8a8d2b65d4 -b0790308 -~~~ - -#### Intermediate Values - -~~~ -client_public_key: 76a845464c68a5d2f7e442436bb1424953b17d3e2e289ccbac -cafb57ac5c3675 -auth_key: 6cd32316f18d72a9a927a83199fa030663a38ce0c11fbaef82aa9003773 -0494fc555c4d49506284516edd1628c27965b7555a4ebfed2223199f6c67966dde822 -randomized_password: aac48c25ab036e30750839d31d6e73007344cb1155289fb7 -d329beb932e9adeea73d5d5c22a0ce1952f8aba6d66007615cd1698d4ac85ef1fcf15 -0031d1435d9 -envelope: ac13171b2f17bc2c74997f0fce1e1f35bec6b91fe2e12dbd323d23ba7a3 -8dfec1ac902dc5589e9a5f0de56ad685ea8486210ef41449cd4d8712828913c5d2b68 -0b2b3af4a26c765cff329bfb66d38ecf1d6cfa9e7a73c222c6efe0d9520f7d7c -handshake_secret: 5e723bed1e5276de2503419eba9da61ead573109c4012268323 -98c7e08155b885bfe7bc93451f9d887a0c1d0c19233e40a8e47b347a9ac3907f94032 -a4cff64f -server_mac_key: dad66bb9251073d17a13f8e5500f36e5998e3cde520ca0738e708 -5af62fd97812eb79a745c94d0bf8a6ac17f980cf435504cf64041eeb6bb237796d2c7 -f81e9a -client_mac_key: f816fe2914f7c5b29852385615d7c7f31ac122adf202d7ccd4976 -06d7aabd48930323d1d02b1cc9ecd456c4de6f46c7950becb18bffd921dd5876381b5 -486ffe -oprf_key: 5d4c6a8b7c7138182afb4345d1fae6a9f18a1744afbcc3854f8f5a2b4b4 -c6d05 -~~~ - -#### Output Values - -~~~ -registration_request: 5059ff249eb1551b7ce4991f3336205bde44a105a032e74 -7d21bf382e75f7a71 -registration_response: 7408a268083e03abc7097fc05b587834539065e86fb0c7 -b6342fcf5e01e5b019b2fe7af9f48cc502d016729d2fe25cdd433f2c4bc904660b2a3 -82c9b79df1a78 -registration_upload: 76a845464c68a5d2f7e442436bb1424953b17d3e2e289ccb -accafb57ac5c36751ac5844383c7708077dea41cbefe2fa15724f449e535dd7dd562e -66f5ecfb95864eadddec9db5874959905117dad40a4524111849799281fefe3c51fa8 -2785c5ac13171b2f17bc2c74997f0fce1e1f35bec6b91fe2e12dbd323d23ba7a38dfe -c1ac902dc5589e9a5f0de56ad685ea8486210ef41449cd4d8712828913c5d2b680b2b -3af4a26c765cff329bfb66d38ecf1d6cfa9e7a73c222c6efe0d9520f7d7c -KE1: c4dedb0ba6ed5d965d6f250fbe554cd45cba5dfcce3ce836e4aee778aa3cd44d -da7e07376d6d6f034cfa9bb537d11b8c6b4238c334333d1f0aebb380cae6a6cc6e29b -ee50701498605b2c085d7b241ca15ba5c32027dd21ba420b94ce60da326 -KE2: 7e308140890bcde30cbcea28b01ea1ecfbd077cff62c4def8efa075aabcbb471 -38fe59af0df2c79f57b8780278f5ae47355fe1f817119041951c80f612fdfc6dd6ec6 -0bcdb26dc455ddf3e718f1020490c192d70dfc7e403981179d8073d1146a4f9aa1ced -4e4cd984c657eb3b54ced3848326f70331953d91b02535af44d9fea502150b67fe367 -95dd8914f164e49f81c7688a38928372134b7dccd50e09f8fed9518b7b2f94835b3c4 -fe4c8475e7513f20eb97ff0568a39caee3fd6251876f71cd9960ecef2fe0d0f749498 -6fa3d8b2bb01963537e60efb13981e138e3d4a1c4f62198a9d6fa9170c42c3c71f197 -1b29eb1d5d0bd733e40816c91f7912cc4a292371e7809a9031743e943fb3b56f51de9 -03552fc91fba4e7419029951c3970b2e2f0a9dea218d22e9e4e0000855bb6421aa361 -0d6fc0f4033a6517030d4341 -KE3: 7a026de1d6126905736c3f6d92463a08d209833eb793e46d0f7f15b3e0f62c76 -43763c02bbc6b8d3d15b63250cae98171e9260f1ffa789750f534ac11a0176d5 -export_key: 1ef15b4fa99e8a852412450ab78713aad30d21fa6966c9b8c9fb3262a -970dc62950d4dd4ed62598229b1b72794fc0335199d9f7fcc6eaedde92cc04870e63f -16 -session_key: ae7951123ab5befc27e62e63f52cf472d6236cb386c968cc47b7e34f -866aa4bc7638356a73cfce92becf39d6a7d32a1861f12130e824241fe6cab34fbd471 -a57 -~~~ - -### OPAQUE-3DH Real Test Vector 3 - -#### 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 -client_keyshare_seed: 82850a697b42a505f5b68fcdafce8c31f0af2b581f063cf -1091933541936304b -server_keyshare_seed: 05a4f54206eef1ba2f615bc0aa285cb22f26d1153b5b40a -1e85ff80da12f982f -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: 178c8c15e025252380c3edb1c6ad8ac52573b38d536099e2f86 -5786f5e31c642608550c0c6f281c37ce259667dd72768af31630e0eb36f1096a2e642 -1c2aa163 -server_mac_key: f3c6a8e069c54bb0d8905139f723c9e22f5c662dc08848243a665 -4c8223800019b9823523d84da2ef67ca1c14277630aace464c113be8a0a658c39e181 -a8bb71 -client_mac_key: b1ee7ce52dbd0ab72872924ff11596cb196bbabfc319e74aca78a -de54a0f74dd15dcf5621f6d2e79161b0c9b701381d494836dedbb86e584a65b34267a -370e01 -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 -75865ee7efef95f4cb6c25d477f720502676f06a3b806da262139bf3fa76a1090b94d -ac78bc3bc6f8747d5b35acf94eff3ec2ebe7d49b8cf16be64120b279fe92664e47be5 -da7e60f08f12e91192652f79 -KE3: 550e923829a544496d8316c490da2b979b78c730dd75be3a17f237a26432c19f -bba54b6a0467b1c22ecbd6794bc5fa5b04215ba1ef974c6b090baa42c5bb984f -export_key: 9dec51d6d0f6ce7e4345f10961053713b07310cc2e45872f57bbd2fe5 -070fdf0fb5b77c7ddaa2f3dc5c35132df7417ad7fefe0f690ad266e5a54a21d045c9c -38 -session_key: fd2fdd07c1bcc88e81c1b1d1de5ad62dfdef1c0b8209ff9d671e1fac -55ce9c34d381c1fb2703ff53a797f77daccbe33047ccc167b8105171e10ec962eea20 -3aa -~~~ - -### 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 -client_keyshare_seed: 82850a697b42a505f5b68fcdafce8c31f0af2b581f063cf -1091933541936304b -server_keyshare_seed: 05a4f54206eef1ba2f615bc0aa285cb22f26d1153b5b40a -1e85ff80da12f982f -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: 13e7dc6afa5334b9dfffe26bee3caf744ef4add176caee464cd -eb3d37303b90de35a8bf095df84471ac77d705f12fe232f1571de1d6a001d3e808998 -73a142dc -server_mac_key: a58135acfb2bde92d506cf59119729a6404ad94eba294e4b52a63 -baf58cfe03f21bcf735222c7f2c27a60bd958be7f6aed50dc03a78f64e7ae4ac1ff07 -1b95aa -client_mac_key: 1e1a8ba156aadc4a302f707d2193c9dab477b355f430d450dd407 -ce40dc75613f76ec33dec494f8a6bfdcf951eb060dac33e6572c693954fe92e33730c -9ab0a2 -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 -75865ee7efef95f4cb6c25d477f72050267cc22c87edbf3ecaca64cb33bc60dc3bfc5 -51e365f0d46a7fed0e09d96f9afbb48868f5bb3c3e05a86ed8c9476fc22c58306c5a2 -91be34388e09548ba9d70f39 -KE3: d16344e791c3f18594d22ba068984fa18ec1e9bead662b75f66826ffd627932f -cd1ec40cd01dcf5f63f4055ebe45c7717a57a833aad360256cf1e1c20c0eae1c -export_key: 9dec51d6d0f6ce7e4345f10961053713b07310cc2e45872f57bbd2fe5 -070fdf0fb5b77c7ddaa2f3dc5c35132df7417ad7fefe0f690ad266e5a54a21d045c9c -38 -session_key: f6116d3aa0e4089a179713bad4d98ed5cb57e5443cae8d36ef78996f -a60f3dc6e9fcdd63c001596b06dbc1285d80211035cc0e485506b3f7a650cbf78c5bf -fc9 -~~~ - -### OPAQUE-3DH Real Test Vector 5 - -#### Configuration - -~~~ -OPRF: P256-SHA256 -Hash: SHA256 -KSF: Identity -KDF: HKDF-SHA256 -MAC: HMAC-SHA256 -Group: P256_XMD:SHA-256_SSWU_RO_ -Context: 4f50415155452d504f43 -Nh: 32 -Npk: 33 -Nsk: 32 -Nm: 32 -Nx: 32 -Nok: 32 -~~~ - -#### Input Values - -~~~ -oprf_seed: 62f60b286d20ce4fd1d64809b0021dad6ed5d52a2c8cf27ae6582543a0 -a8dce2 -credential_identifier: 31323334 -password: 436f7272656374486f72736542617474657279537461706c65 -envelope_nonce: a921f2a014513bd8a90e477a629794e89fec12d12206dde662ebd -cf65670e51f -masking_nonce: 38fe59af0df2c79f57b8780278f5ae47355fe1f817119041951c80 -f612fdfc6d -server_private_key: c36139381df63bfc91c850db0b9cfbec7a62e86d80040a41a -a7725bf0e79d5e5 -server_public_key: 035f40ff9cf88aa1f5cd4fe5fd3da9ea65a4923a5594f84fd9 -f2092d6067784874 -server_nonce: 71cd9960ecef2fe0d0f7494986fa3d8b2bb01963537e60efb13981e -138e3d4a1 -client_nonce: ab3d33bde0e93eda72392346a7a73051110674bbf6b1b7ffab8be4f -91fdaeeb1 -client_keyshare_seed: 633b875d74d1556d2a2789309972b06db21dfcc4f5ad51d -7e74d783b7cfab8dc -server_keyshare_seed: 05a4f54206eef1ba2f615bc0aa285cb22f26d1153b5b40a -1e85ff80da12f982f -blind_registration: 411bf1a62d119afe30df682b91a0a33d777972d4f2daa4b34 -ca527d597078153 -blind_login: c497fddf6056d241e6cf9fb7ac37c384f49b357a221eb0a802c989b9 -942256c1 -~~~ - -#### Intermediate Values - -~~~ -client_public_key: 03b218507d978c3db570ca994aaf36695a731ddb2db272c817 -f79746fc37ae5214 -auth_key: 5bd4be1602516092dc5078f8d699f5721dc1720a49fb80d8e5c16377abd -0987b -randomized_password: 06be0a1a51d56557a3adad57ba29c5510565dcd8b5078fa3 -19151b9382258fb0 -envelope: a921f2a014513bd8a90e477a629794e89fec12d12206dde662ebdcf6567 -0e51fad30bbcfc1f8eda0211553ab9aaf26345ad59a128e80188f035fe4924fad67b8 -handshake_secret: 83a932431a8f25bad042f008efa2b07c6cd0faa8285f335b636 -3546a9f9b235f -server_mac_key: 13e928581febfad28855e3e7f03306d61bd69489686f621535d44 -a1365b73b0d -client_mac_key: afdc53910c25183b08b930e6953c35b3466276736d9de2e9c5efa -f150f4082c5 -oprf_key: 2dfb5cb9aa1476093be74ca0d43e5b02862a05f5d6972614d7433acdc66 -f7f31 -~~~ - -#### Output Values - -~~~ -registration_request: 029e949a29cfa0bf7c1287333d2fb3dc586c41aa652f507 -0d26a5315a1b50229f8 -registration_response: 0350d3694c00978f00a5ce7cd08a00547e4ab5fb5fc2b2 -f6717cdaa6c89136efef035f40ff9cf88aa1f5cd4fe5fd3da9ea65a4923a5594f84fd -9f2092d6067784874 -registration_upload: 03b218507d978c3db570ca994aaf36695a731ddb2db272c8 -17f79746fc37ae52147f0ed53532d3ae8e505ecc70d42d2b814b6b0e48156def71ea0 -29148b2803aafa921f2a014513bd8a90e477a629794e89fec12d12206dde662ebdcf6 -5670e51fad30bbcfc1f8eda0211553ab9aaf26345ad59a128e80188f035fe4924fad6 -7b8 -KE1: 037342f0bcb3ecea754c1e67576c86aa90c1de3875f390ad599a26686cdfee6e -07ab3d33bde0e93eda72392346a7a73051110674bbf6b1b7ffab8be4f91fdaeeb1022 -ed3f32f318f81bab80da321fecab3cd9b6eea11a95666dfa6beeaab321280b6 -KE2: 0246da9fe4d41d5ba69faa6c509a1d5bafd49a48615a47a8dd4b0823cc147648 -1138fe59af0df2c79f57b8780278f5ae47355fe1f817119041951c80f612fdfc6d2f0 -c547f70deaeca54d878c14c1aa5e1ab405dec833777132eea905c2fbb12504a67dcbe -0e66740c76b62c13b04a38a77926e19072953319ec65e41f9bfd2ae26837b6ce688bf -9af2542f04eec9ab96a1b9328812dc2f5c89182ed47fead61f09f71cd9960ecef2fe0 -d0f7494986fa3d8b2bb01963537e60efb13981e138e3d4a103c1701353219b53acf33 -7bf6456a83cefed8f563f1040b65afbf3b65d3bc9a19b50a73b145bc87a157e8c58c0 -342e2047ee22ae37b63db17e0a82a30fcc4ecf7b -KE3: e97cab4433aa39d598e76f13e768bba61c682947bdcf9936035e8a3a3ebfb66e -export_key: c3c9a1b0e33ac84dd83d0b7e8af6794e17e7a3caadff289fbd9dc769a -853c64b -session_key: 484ad345715ccce138ca49e4ea362c6183f0949aaaa1125dc3bc3f80 -876e7cd1 -~~~ - -### OPAQUE-3DH Real Test Vector 6 - -#### Configuration - -~~~ -OPRF: P256-SHA256 -Hash: SHA256 -KSF: Identity -KDF: HKDF-SHA256 -MAC: HMAC-SHA256 -Group: P256_XMD:SHA-256_SSWU_RO_ -Context: 4f50415155452d504f43 -Nh: 32 -Npk: 33 -Nsk: 32 -Nm: 32 -Nx: 32 -Nok: 32 -~~~ - -#### Input Values - -~~~ -client_identity: 616c696365 -server_identity: 626f62 -oprf_seed: 62f60b286d20ce4fd1d64809b0021dad6ed5d52a2c8cf27ae6582543a0 -a8dce2 -credential_identifier: 31323334 -password: 436f7272656374486f72736542617474657279537461706c65 -envelope_nonce: a921f2a014513bd8a90e477a629794e89fec12d12206dde662ebd -cf65670e51f -masking_nonce: 38fe59af0df2c79f57b8780278f5ae47355fe1f817119041951c80 -f612fdfc6d -server_private_key: c36139381df63bfc91c850db0b9cfbec7a62e86d80040a41a -a7725bf0e79d5e5 -server_public_key: 035f40ff9cf88aa1f5cd4fe5fd3da9ea65a4923a5594f84fd9 -f2092d6067784874 -server_nonce: 71cd9960ecef2fe0d0f7494986fa3d8b2bb01963537e60efb13981e -138e3d4a1 -client_nonce: ab3d33bde0e93eda72392346a7a73051110674bbf6b1b7ffab8be4f -91fdaeeb1 -client_keyshare_seed: 633b875d74d1556d2a2789309972b06db21dfcc4f5ad51d -7e74d783b7cfab8dc -server_keyshare_seed: 05a4f54206eef1ba2f615bc0aa285cb22f26d1153b5b40a -1e85ff80da12f982f -blind_registration: 411bf1a62d119afe30df682b91a0a33d777972d4f2daa4b34 -ca527d597078153 -blind_login: c497fddf6056d241e6cf9fb7ac37c384f49b357a221eb0a802c989b9 -942256c1 -~~~ - -#### Intermediate Values - -~~~ -client_public_key: 03b218507d978c3db570ca994aaf36695a731ddb2db272c817 -f79746fc37ae5214 -auth_key: 5bd4be1602516092dc5078f8d699f5721dc1720a49fb80d8e5c16377abd -0987b -randomized_password: 06be0a1a51d56557a3adad57ba29c5510565dcd8b5078fa3 -19151b9382258fb0 -envelope: a921f2a014513bd8a90e477a629794e89fec12d12206dde662ebdcf6567 -0e51f4d7773a36a208a866301dbb2858e40dc5638017527cf91aef32d3848eebe0971 -handshake_secret: 80bdcc498f22de492e90ee8101fcc7c101e158dd49c77f7c283 -816ae329ed62f -server_mac_key: 0f82432fbdb5b90daf27a91a3acc42299a9590dba1b77932c2207 -b4cb3d4a157 -client_mac_key: 7f629eb0b1b69979b07ca1f564b3e92ed22f07569fd1d11725d93 -e46731fbe71 -oprf_key: 2dfb5cb9aa1476093be74ca0d43e5b02862a05f5d6972614d7433acdc66 -f7f31 -~~~ - -#### Output Values - -~~~ -registration_request: 029e949a29cfa0bf7c1287333d2fb3dc586c41aa652f507 -0d26a5315a1b50229f8 -registration_response: 0350d3694c00978f00a5ce7cd08a00547e4ab5fb5fc2b2 -f6717cdaa6c89136efef035f40ff9cf88aa1f5cd4fe5fd3da9ea65a4923a5594f84fd -9f2092d6067784874 -registration_upload: 03b218507d978c3db570ca994aaf36695a731ddb2db272c8 -17f79746fc37ae52147f0ed53532d3ae8e505ecc70d42d2b814b6b0e48156def71ea0 -29148b2803aafa921f2a014513bd8a90e477a629794e89fec12d12206dde662ebdcf6 -5670e51f4d7773a36a208a866301dbb2858e40dc5638017527cf91aef32d3848eebe0 -971 -KE1: 037342f0bcb3ecea754c1e67576c86aa90c1de3875f390ad599a26686cdfee6e -07ab3d33bde0e93eda72392346a7a73051110674bbf6b1b7ffab8be4f91fdaeeb1022 -ed3f32f318f81bab80da321fecab3cd9b6eea11a95666dfa6beeaab321280b6 -KE2: 0246da9fe4d41d5ba69faa6c509a1d5bafd49a48615a47a8dd4b0823cc147648 -1138fe59af0df2c79f57b8780278f5ae47355fe1f817119041951c80f612fdfc6d2f0 -c547f70deaeca54d878c14c1aa5e1ab405dec833777132eea905c2fbb12504a67dcbe -0e66740c76b62c13b04a38a77926e19072953319ec65e41f9bfd2ae268d7f10604202 -1c80300e4c6f585980cf39fc51a4a6bba41b0729f9b240c729e5671cd9960ecef2fe0 -d0f7494986fa3d8b2bb01963537e60efb13981e138e3d4a103c1701353219b53acf33 -7bf6456a83cefed8f563f1040b65afbf3b65d3bc9a19b84922c7e5d074838a8f27859 -2c53f61fb59f031e85ad480c0c71086b871e1b24 -KE3: 46833578cee137775f6be3f01b80748daac5a694101ad0e9e7025480552da56a -export_key: c3c9a1b0e33ac84dd83d0b7e8af6794e17e7a3caadff289fbd9dc769a -853c64b -session_key: 27766fabd8dd88ff37fbd0ef1a491e601d10d9f016c2b28c4bd1b0fb -7511a3c3 -~~~ - -## Fake Test Vectors {#fake-vectors} - -### OPAQUE-3DH Fake Test Vector 1 - -#### Configuration - -~~~ -OPRF: ristretto255-SHA512 -Hash: SHA512 -KSF: Identity -KDF: HKDF-SHA512 -MAC: HMAC-SHA512 -Group: ristretto255 -Context: 4f50415155452d504f43 -Nh: 64 -Npk: 32 -Nsk: 32 -Nm: 64 -Nx: 64 -Nok: 32 -~~~ - -#### Input Values - -~~~ -client_identity: 616c696365 -server_identity: 626f62 -oprf_seed: 743fc168d1f826ad43738933e5adb23da6fb95f95a1b069f0daa0522d0 -a78b617f701fc6aa46d3e7981e70de7765dfcd6b1e13e3369a582eb8dc456b10aa53b -0 -credential_identifier: 31323334 -masking_nonce: 9c035896a043e70f897d87180c543e7a063b83c1bb728fbd189c61 -9e27b6e5a6 -client_private_key: 2b98980aa95ab53a0f39f0291903d2fdf04b00c167f081416 -9922df873002409 -client_public_key: 84f43f9492e19c22d8bdaa4447cc3d4db1cdb5427a9f852c47 -07921212c36251 -server_private_key: c788585ae8b5ba2942b693b849be0c0426384e41977c18d2e -81fbe30fd7c9f06 -server_public_key: 825f832667480f08b0c9069da5083ac4d0e9ee31b49c4e0310 -031fea04d52966 -server_nonce: 1e10f6eeab2a7a420bf09da9b27a4639645622c46358de9cf7ae813 -055ae2d12 -client_keyshare_seed: a270dc715dc2b4612bc7864312a05c3e9788ee1bad1f276 -d1e15bdeb4c355e94 -server_keyshare_seed: 360b0937f47d45f6123a4d8f0d0c0814b6120d840ebb8bc -5b4f6b62df07f78c2 -masking_key: 39ebd51f0e39a07a1c2d2431995b0399bca9996c5d10014d6ebab445 -3dc10ce5cef38ed3df6e56bfff40c2d8dd4671c2b4cf63c3d54860f31fe40220d690b -b71 -KE1: b0a26dcaca2230b8f5e4b1bcab9c84b586140221bb8b2848486874b0be448905 -42d4e61ed3f8d64cdd3b9d153343eca15b9b0d5e388232793c6376bd2d9cfd0ab641d -7f20a245a09f1d4dbb6e301661af7f352beb0791d055e48d3645232f77f -~~~ - -#### Output Values - -~~~ -KE2: 928f79ad8df21963e91411b9f55165ba833dea918f441db967cdc09521d22925 -9c035896a043e70f897d87180c543e7a063b83c1bb728fbd189c619e27b6e5a632b5a -b1bff96636144faa4f9f9afaac75dd88ea99cf5175902ae3f3b2195693f165f11929b -a510a5978e64dcdabecbd7ee1e4380ce270e58fea58e6462d92964a1aaef72698bca1 -c673baeb04cc2bf7de5f3c2f5553464552d3a0f7698a9ca7f9c5e70c6cb1f706b2f17 -5ab9d04bbd13926e816b6811a50b4aafa9799d5ed7971e10f6eeab2a7a420bf09da9b -27a4639645622c46358de9cf7ae813055ae2d1298251c5ba55f6b0b2d58d9ff0c88fe -4176484be62a96db6e2a8c4d431bd1bf27fe6c1d0537603835217d42ebf7b25819827 -32e74892fd28211b31ed33863f0beaf75ba6f59474c0aaf9d78a60a9b2f4cd24d7ab5 -4131b3c8efa192df6b72db4c -~~~ - -### OPAQUE-3DH Fake Test Vector 2 - -#### 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 -client_keyshare_seed: a270dc715dc2b4612bc7864312a05c3e9788ee1bad1f276 -d1e15bdeb4c355e94 -server_keyshare_seed: 360b0937f47d45f6123a4d8f0d0c0814b6120d840ebb8bc -5b4f6b62df07f78c2 -masking_key: 79ad2621b0757a447dff7108a8ae20a068ce67872095620f415ea611 -c9dcc04972fa359538cd2fd6528775ca775487b2b56db642049b8a90526b975a38484 -c6a -KE1: b0a26dcaca2230b8f5e4b1bcab9c84b586140221bb8b2848486874b0be448905 -42d4e61ed3f8d64cdd3b9d153343eca15b9b0d5e388232793c6376bd2d9cfd0ac059b -7ba2aec863933ae48816360c7a9022e83d822704f3b0b86c0502a66e574 -~~~ - -#### Output Values - -~~~ -KE2: 6606b6fedbb33f19a81a1feb5149c600fe77252f58acd3080d7504d3dad4922f -9c035896a043e70f897d87180c543e7a063b83c1bb728fbd189c619e27b6e5a67db39 -8c0f65d8c298eac430abdae4c80e82b552fb940c00f0cbcea853c0f96c1c15099f3d4 -b0e83ecc249613116d605b8d77bb68bdf76994c2bc507e2dcae4176f00afed68ad25c -f3040a0e991acece31ca532117f5c12816997372ff031ad04ebcdce06c501da24e7b4 -db95343456e2ed260895ec362694230a1fa20e24a9c71e10f6eeab2a7a420bf09da9b -27a4639645622c46358de9cf7ae813055ae2d122d9055eb8f83e1b497370adad5cc2a -417bf9be436a792def0c7b7ccb92b9e275d7c663104ea4655bd70570d975c05351655 -d55fbfb392286edb55600a23b55ce18f8c60e0d1960c960412dd08eabc81ba7ca8ae2 -b04aad65462321f51c298010 -~~~ - -### OPAQUE-3DH Fake Test Vector 3 - -#### Configuration - -~~~ -OPRF: P256-SHA256 -Hash: SHA256 -KSF: Identity -KDF: HKDF-SHA256 -MAC: HMAC-SHA256 -Group: P256_XMD:SHA-256_SSWU_RO_ -Context: 4f50415155452d504f43 -Nh: 32 -Npk: 33 -Nsk: 32 -Nm: 32 -Nx: 32 -Nok: 32 -~~~ - -#### Input Values - -~~~ -client_identity: 616c696365 -server_identity: 626f62 -oprf_seed: bb1cd59e16ac09bc0cb6d528541695d7eba2239b1613a3db3ade77b362 -80f725 -credential_identifier: 31323334 -masking_nonce: 9c035896a043e70f897d87180c543e7a063b83c1bb728fbd189c61 -9e27b6e5a6 -client_private_key: d423b87899fc61d014fc8330a4e26190fcfa470a3afe59243 -24294af7dbbc1dd -client_public_key: 03b81708eae026a9370616c22e1e8542fe9dbebd36ce8a2661 -b708e9628f4a57fc -server_private_key: 34fbe7e830be1fe8d2187c97414e3826040cbe49b893b6422 -9bab5e85a5888c7 -server_public_key: 0221e034c0e202fe883dcfc96802a7624166fed4cfcab4ae30 -cf5f3290d01c88bf -server_nonce: 1e10f6eeab2a7a420bf09da9b27a4639645622c46358de9cf7ae813 -055ae2d12 -client_keyshare_seed: a270dc715dc2b4612bc7864312a05c3e9788ee1bad1f276 -d1e15bdeb4c355e94 -server_keyshare_seed: 360b0937f47d45f6123a4d8f0d0c0814b6120d840ebb8bc -5b4f6b62df07f78c2 -masking_key: caecc6ccb4cae27cb54d8f3a1af1bac52a3d53107ce08497cdd362b1 -992e4e5e -KE1: 0396875da2b4f7749bba411513aea02dc514a48d169d8a9531bd61d3af3fa9ba -ae42d4e61ed3f8d64cdd3b9d153343eca15b9b0d5e388232793c6376bd2d9cfd0a021 -47a6583983cc9973b5082db5f5070890cb373d70f7ac1b41ed2305361009784 -~~~ - -#### Output Values - -~~~ -KE2: 0201198dcd13f9792eb75dcfa815f61b049abfe2e3e9456d4bbbceec5f442efd -049c035896a043e70f897d87180c543e7a063b83c1bb728fbd189c619e27b6e5a6fac -da65ce0a97b9085e7af07f61fd3fdd046d257cbf2183ce8766090b8041a8bf28d79dd -4c9031ddc75bb6ddb4c291e639937840e3d39fc0d5a3d6e7723c09f7945df485bcf9a -efe3fe82d149e84049e259bb5b33d6a2ff3b25e4bfb7eff0962821e10f6eeab2a7a42 -0bf09da9b27a4639645622c46358de9cf7ae813055ae2d12023f82bbb24e75b8683fd -13b843cd566efae996cd0016cffdcc24ee2bc937d026f80144878749a69565b433c10 -40aff67e94f79345de888a877422b9bbe21ec329 -~~~ -"#; diff --git a/src/tests/parser.rs b/src/tests/parser.rs index 09ced9d..920dd45 100644 --- a/src/tests/parser.rs +++ b/src/tests/parser.rs @@ -15,7 +15,7 @@ pub(crate) fn rfc_to_json(input: &str) -> String { } fn parse_vector_types(input: &str) -> String { - let re = regex::Regex::new(r" (?P.+?) Test Vectors").unwrap(); + let re = regex::Regex::new(r" (?P.+?) Test Vectors").unwrap(); let mut vector_types = vec![]; let chunks: Vec<&str> = re.split(input).collect(); @@ -24,7 +24,7 @@ fn parse_vector_types(input: &str) -> String { for caps in re.captures_iter(input) { let vector_type = format!( "\"{}\": [\n {} \n]", - &caps["type"], + &caps["type"].trim(), parse_ciphersuites(chunks[count]) ); vector_types.push(vector_type); @@ -36,7 +36,7 @@ fn parse_vector_types(input: &str) -> String { fn parse_ciphersuites(input: &str) -> String { let re = regex::Regex::new( - r"#### Configuration\n(.|\n)*?OPRF: (?P.*?)\n(.|\n)*?Group: (?P.*?)\n", + r" Configuration\n(.|\n)*?OPRF: (?P.*?)\n(.|\n)*?Group: (?P.*?)\n", ) .unwrap(); let mut ciphersuites = vec![]; @@ -74,6 +74,9 @@ fn parse_params(input: &str) -> String { return params.join(",\n"); } Some(line) => { + // First, trim out any whitespace + let line = line.trim(); + // If line contains :, then if line.contains(':') { // Clear out any existing string and flush to params @@ -93,6 +96,10 @@ fn parse_params(input: &str) -> String { // Ignore comment lines continue; } + if s.contains("C.") { + // Ignore section lines + continue; + } if !s.is_empty() { param += &s; } diff --git a/src/tests/rfc9807_vectors.rs b/src/tests/rfc9807_vectors.rs new file mode 100644 index 0000000..1074a22 --- /dev/null +++ b/src/tests/rfc9807_vectors.rs @@ -0,0 +1,810 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. +// +// This source code is dual-licensed under either the MIT license found in the +// LICENSE-MIT file in the root directory of this source tree or the Apache +// License, Version 2.0 found in the LICENSE-APACHE file in the root directory +// of this source tree. You may select, at your option, one of the above-listed +// licenses. + +//! The OPAQUE test vectors taken from Appendix C of +//! [RFC 9807](https://www.rfc-editor.org/rfc/rfc9807.txt) + +pub(crate) static VECTORS: &str = r#" +C.1. Real Test Vectors + +C.1.1. OPAQUE-3DH Real Test Vector 1 + +C.1.1.1. Configuration + + OPRF: ristretto255-SHA512 + Hash: SHA512 + KSF: Identity + KDF: HKDF-SHA512 + MAC: HMAC-SHA512 + Group: ristretto255 + Context: 4f50415155452d504f43 + Nh: 64 + Npk: 32 + Nsk: 32 + Nm: 64 + Nx: 64 + Nok: 32 + +C.1.1.2. Input Values + + oprf_seed: f433d0227b0b9dd54f7c4422b600e764e47fb503f1f9a0f0a47c6606b0 + 54a7fdc65347f1a08f277e22358bbabe26f823fca82c7848e9a75661f4ec5d5c1989e + f + credential_identifier: 31323334 + password: 436f7272656374486f72736542617474657279537461706c65 + envelope_nonce: ac13171b2f17bc2c74997f0fce1e1f35bec6b91fe2e12dbd323d2 + 3ba7a38dfec + masking_nonce: 38fe59af0df2c79f57b8780278f5ae47355fe1f817119041951c80 + f612fdfc6d + server_private_key: 47451a85372f8b3537e249d7b54188091fb18edde78094b43 + e2ba42b5eb89f0d + server_public_key: b2fe7af9f48cc502d016729d2fe25cdd433f2c4bc904660b2a + 382c9b79df1a78 + server_nonce: 71cd9960ecef2fe0d0f7494986fa3d8b2bb01963537e60efb13981e + 138e3d4a1 + client_nonce: da7e07376d6d6f034cfa9bb537d11b8c6b4238c334333d1f0aebb38 + 0cae6a6cc + client_keyshare_seed: 82850a697b42a505f5b68fcdafce8c31f0af2b581f063cf + 1091933541936304b + server_keyshare_seed: 05a4f54206eef1ba2f615bc0aa285cb22f26d1153b5b40a + 1e85ff80da12f982f + blind_registration: 76cfbfe758db884bebb33582331ba9f159720ca8784a2a070 + a265d9c2d6abe01 + blind_login: 6ecc102d2e7a7cf49617aad7bbe188556792d4acd60a1a8a8d2b65d4 + b0790308 + +C.1.1.3. Intermediate Values + + client_public_key: 76a845464c68a5d2f7e442436bb1424953b17d3e2e289ccbac + cafb57ac5c3675 + auth_key: 6cd32316f18d72a9a927a83199fa030663a38ce0c11fbaef82aa9003773 + 0494fc555c4d49506284516edd1628c27965b7555a4ebfed2223199f6c67966dde822 + randomized_password: aac48c25ab036e30750839d31d6e73007344cb1155289fb7 + d329beb932e9adeea73d5d5c22a0ce1952f8aba6d66007615cd1698d4ac85ef1fcf15 + 0031d1435d9 + envelope: ac13171b2f17bc2c74997f0fce1e1f35bec6b91fe2e12dbd323d23ba7a3 + 8dfec634b0f5b96109c198a8027da51854c35bee90d1e1c781806d07d49b76de6a28b + 8d9e9b6c93b9f8b64d16dddd9c5bfb5fea48ee8fd2f75012a8b308605cdd8ba5 + handshake_secret: 81263cb85a0cfa12450f0f388de4e92291ec4c7c7a0878b6245 + 50ff528726332f1298fc6cc822a432c89504347c7a2ccd70316ae3da6a15e0399e6db + 3f7c1b12 + server_mac_key: 0d36b26cfe38f51f804f0a9361818f32ee1ce2a4e5578653b5271 + 84af058d3b2d8075c296fd84d24677913d1baa109290cd81a13ed383f9091a3804e65 + 298dfc + client_mac_key: 91750adbac54a5e8e53b4c233cc8d369fe83b0de1b6a3cd85575e + eb0bb01a6a90a086a2cf5fe75fff2a9379c30ba9049510a33b5b0b1444a88800fc3ee + e2260d + oprf_key: 5d4c6a8b7c7138182afb4345d1fae6a9f18a1744afbcc3854f8f5a2b4b4 + c6d05 + +C.1.1.4. Output Values + + registration_request: 5059ff249eb1551b7ce4991f3336205bde44a105a032e74 + 7d21bf382e75f7a71 + registration_response: 7408a268083e03abc7097fc05b587834539065e86fb0c7 + b6342fcf5e01e5b019b2fe7af9f48cc502d016729d2fe25cdd433f2c4bc904660b2a3 + 82c9b79df1a78 + registration_upload: 76a845464c68a5d2f7e442436bb1424953b17d3e2e289ccb + accafb57ac5c36751ac5844383c7708077dea41cbefe2fa15724f449e535dd7dd562e + 66f5ecfb95864eadddec9db5874959905117dad40a4524111849799281fefe3c51fa8 + 2785c5ac13171b2f17bc2c74997f0fce1e1f35bec6b91fe2e12dbd323d23ba7a38dfe + c634b0f5b96109c198a8027da51854c35bee90d1e1c781806d07d49b76de6a28b8d9e + 9b6c93b9f8b64d16dddd9c5bfb5fea48ee8fd2f75012a8b308605cdd8ba5 + KE1: c4dedb0ba6ed5d965d6f250fbe554cd45cba5dfcce3ce836e4aee778aa3cd44d + da7e07376d6d6f034cfa9bb537d11b8c6b4238c334333d1f0aebb380cae6a6cc6e29b + ee50701498605b2c085d7b241ca15ba5c32027dd21ba420b94ce60da326 + KE2: 7e308140890bcde30cbcea28b01ea1ecfbd077cff62c4def8efa075aabcbb471 + 38fe59af0df2c79f57b8780278f5ae47355fe1f817119041951c80f612fdfc6dd6ec6 + 0bcdb26dc455ddf3e718f1020490c192d70dfc7e403981179d8073d1146a4f9aa1ced + 4e4cd984c657eb3b54ced3848326f70331953d91b02535af44d9fedc80188ca46743c + 52786e0382f95ad85c08f6afcd1ccfbff95e2bdeb015b166c6b20b92f832cc6df01e0 + b86a7efd92c1c804ff865781fa93f2f20b446c8371b671cd9960ecef2fe0d0f749498 + 6fa3d8b2bb01963537e60efb13981e138e3d4a1c4f62198a9d6fa9170c42c3c71f197 + 1b29eb1d5d0bd733e40816c91f7912cc4a660c48dae03e57aaa38f3d0cffcfc21852e + bc8b405d15bd6744945ba1a93438a162b6111699d98a16bb55b7bdddfe0fc5608b23d + a246e7bd73b47369169c5c90 + KE3: 4455df4f810ac31a6748835888564b536e6da5d9944dfea9e34defb9575fe5e2 + 661ef61d2ae3929bcf57e53d464113d364365eb7d1a57b629707ca48da18e442 + export_key: 1ef15b4fa99e8a852412450ab78713aad30d21fa6966c9b8c9fb3262a + 970dc62950d4dd4ed62598229b1b72794fc0335199d9f7fcc6eaedde92cc04870e63f + 16 + session_key: 42afde6f5aca0cfa5c163763fbad55e73a41db6b41bc87b8e7b62214 + a8eedc6731fa3cb857d657ab9b3764b89a84e91ebcb4785166fbb02cedfcbdfda215b + 96f + +C.1.2. OPAQUE-3DH Real Test Vector 2 + +C.1.2.1. Configuration + + OPRF: ristretto255-SHA512 + Hash: SHA512 + KSF: Identity + KDF: HKDF-SHA512 + MAC: HMAC-SHA512 + Group: ristretto255 + Context: 4f50415155452d504f43 + Nh: 64 + Npk: 32 + Nsk: 32 + Nm: 64 + Nx: 64 + Nok: 32 + +C.1.2.2. Input Values + + client_identity: 616c696365 + server_identity: 626f62 + oprf_seed: f433d0227b0b9dd54f7c4422b600e764e47fb503f1f9a0f0a47c6606b0 + 54a7fdc65347f1a08f277e22358bbabe26f823fca82c7848e9a75661f4ec5d5c1989e + f + credential_identifier: 31323334 + password: 436f7272656374486f72736542617474657279537461706c65 + envelope_nonce: ac13171b2f17bc2c74997f0fce1e1f35bec6b91fe2e12dbd323d2 + 3ba7a38dfec + masking_nonce: 38fe59af0df2c79f57b8780278f5ae47355fe1f817119041951c80 + f612fdfc6d + server_private_key: 47451a85372f8b3537e249d7b54188091fb18edde78094b43 + e2ba42b5eb89f0d + server_public_key: b2fe7af9f48cc502d016729d2fe25cdd433f2c4bc904660b2a + 382c9b79df1a78 + server_nonce: 71cd9960ecef2fe0d0f7494986fa3d8b2bb01963537e60efb13981e + 138e3d4a1 + client_nonce: da7e07376d6d6f034cfa9bb537d11b8c6b4238c334333d1f0aebb38 + 0cae6a6cc + client_keyshare_seed: 82850a697b42a505f5b68fcdafce8c31f0af2b581f063cf + 1091933541936304b + server_keyshare_seed: 05a4f54206eef1ba2f615bc0aa285cb22f26d1153b5b40a + 1e85ff80da12f982f + blind_registration: 76cfbfe758db884bebb33582331ba9f159720ca8784a2a070 + a265d9c2d6abe01 + blind_login: 6ecc102d2e7a7cf49617aad7bbe188556792d4acd60a1a8a8d2b65d4 + b0790308 + +C.1.2.3. Intermediate Values + + client_public_key: 76a845464c68a5d2f7e442436bb1424953b17d3e2e289ccbac + cafb57ac5c3675 + auth_key: 6cd32316f18d72a9a927a83199fa030663a38ce0c11fbaef82aa9003773 + 0494fc555c4d49506284516edd1628c27965b7555a4ebfed2223199f6c67966dde822 + randomized_password: aac48c25ab036e30750839d31d6e73007344cb1155289fb7 + d329beb932e9adeea73d5d5c22a0ce1952f8aba6d66007615cd1698d4ac85ef1fcf15 + 0031d1435d9 + envelope: ac13171b2f17bc2c74997f0fce1e1f35bec6b91fe2e12dbd323d23ba7a3 + 8dfec1ac902dc5589e9a5f0de56ad685ea8486210ef41449cd4d8712828913c5d2b68 + 0b2b3af4a26c765cff329bfb66d38ecf1d6cfa9e7a73c222c6efe0d9520f7d7c + handshake_secret: 5e723bed1e5276de2503419eba9da61ead573109c4012268323 + 98c7e08155b885bfe7bc93451f9d887a0c1d0c19233e40a8e47b347a9ac3907f94032 + a4cff64f + server_mac_key: dad66bb9251073d17a13f8e5500f36e5998e3cde520ca0738e708 + 5af62fd97812eb79a745c94d0bf8a6ac17f980cf435504cf64041eeb6bb237796d2c7 + f81e9a + client_mac_key: f816fe2914f7c5b29852385615d7c7f31ac122adf202d7ccd4976 + 06d7aabd48930323d1d02b1cc9ecd456c4de6f46c7950becb18bffd921dd5876381b5 + 486ffe + oprf_key: 5d4c6a8b7c7138182afb4345d1fae6a9f18a1744afbcc3854f8f5a2b4b4 + c6d05 + +C.1.2.4. Output Values + + registration_request: 5059ff249eb1551b7ce4991f3336205bde44a105a032e74 + 7d21bf382e75f7a71 + registration_response: 7408a268083e03abc7097fc05b587834539065e86fb0c7 + b6342fcf5e01e5b019b2fe7af9f48cc502d016729d2fe25cdd433f2c4bc904660b2a3 + 82c9b79df1a78 + registration_upload: 76a845464c68a5d2f7e442436bb1424953b17d3e2e289ccb + accafb57ac5c36751ac5844383c7708077dea41cbefe2fa15724f449e535dd7dd562e + 66f5ecfb95864eadddec9db5874959905117dad40a4524111849799281fefe3c51fa8 + 2785c5ac13171b2f17bc2c74997f0fce1e1f35bec6b91fe2e12dbd323d23ba7a38dfe + c1ac902dc5589e9a5f0de56ad685ea8486210ef41449cd4d8712828913c5d2b680b2b + 3af4a26c765cff329bfb66d38ecf1d6cfa9e7a73c222c6efe0d9520f7d7c + KE1: c4dedb0ba6ed5d965d6f250fbe554cd45cba5dfcce3ce836e4aee778aa3cd44d + da7e07376d6d6f034cfa9bb537d11b8c6b4238c334333d1f0aebb380cae6a6cc6e29b + ee50701498605b2c085d7b241ca15ba5c32027dd21ba420b94ce60da326 + KE2: 7e308140890bcde30cbcea28b01ea1ecfbd077cff62c4def8efa075aabcbb471 + 38fe59af0df2c79f57b8780278f5ae47355fe1f817119041951c80f612fdfc6dd6ec6 + 0bcdb26dc455ddf3e718f1020490c192d70dfc7e403981179d8073d1146a4f9aa1ced + 4e4cd984c657eb3b54ced3848326f70331953d91b02535af44d9fea502150b67fe367 + 95dd8914f164e49f81c7688a38928372134b7dccd50e09f8fed9518b7b2f94835b3c4 + fe4c8475e7513f20eb97ff0568a39caee3fd6251876f71cd9960ecef2fe0d0f749498 + 6fa3d8b2bb01963537e60efb13981e138e3d4a1c4f62198a9d6fa9170c42c3c71f197 + 1b29eb1d5d0bd733e40816c91f7912cc4a292371e7809a9031743e943fb3b56f51de9 + 03552fc91fba4e7419029951c3970b2e2f0a9dea218d22e9e4e0000855bb6421aa361 + 0d6fc0f4033a6517030d4341 + KE3: 7a026de1d6126905736c3f6d92463a08d209833eb793e46d0f7f15b3e0f62c76 + 43763c02bbc6b8d3d15b63250cae98171e9260f1ffa789750f534ac11a0176d5 + export_key: 1ef15b4fa99e8a852412450ab78713aad30d21fa6966c9b8c9fb3262a + 970dc62950d4dd4ed62598229b1b72794fc0335199d9f7fcc6eaedde92cc04870e63f + 16 + session_key: ae7951123ab5befc27e62e63f52cf472d6236cb386c968cc47b7e34f + 866aa4bc7638356a73cfce92becf39d6a7d32a1861f12130e824241fe6cab34fbd471 + a57 + +C.1.3. OPAQUE-3DH Real Test Vector 3 + +C.1.3.1. 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 + +C.1.3.2. 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 + client_keyshare_seed: 82850a697b42a505f5b68fcdafce8c31f0af2b581f063cf + 1091933541936304b + server_keyshare_seed: 05a4f54206eef1ba2f615bc0aa285cb22f26d1153b5b40a + 1e85ff80da12f982f + blind_registration: c575731ffe1cb0ca5ba63b42c4699767b8b9ab78ba39316ee + 04baddb2034a70a + blind_login: 6ecc102d2e7a7cf49617aad7bbe188556792d4acd60a1a8a8d2b65d4 + b0790308 + +C.1.3.3. Intermediate Values + + client_public_key: 0936ea94ab030ec332e29050d266c520e916731a052d05ced7 + e0cfe751142b48 + auth_key: 7e880ab484f750e80e6f839d975aff476070ce65066d85ea62523d1d576 + 4739d91307fac47186a4ab935e6a5c7f70cb47faa9473311947502c022cc67ae9440c + randomized_password: 3a602c295a9c323d9362fe286f104567ed6862b25dbe30fa + da844f19e41cf40047424b7118e15dc2c1a815a70fea5c8de6c30aa61440cd4b4b5e8 + f3963fbb2e1 + envelope: 40d6b67fdd7da7c49894750754514dbd2070a407166bd2a5237cca9bf44 + d6e0b20c1e81fef28e92e897ca8287d49a55075b47c3988ff0fff367d79a3e350ccac + 150b4a3ff48b4770c8e84e437b3d4e68d2b95833f7788f7eb93fa6a8afb85ecb + handshake_secret: 178c8c15e025252380c3edb1c6ad8ac52573b38d536099e2f86 + 5786f5e31c642608550c0c6f281c37ce259667dd72768af31630e0eb36f1096a2e642 + 1c2aa163 + server_mac_key: f3c6a8e069c54bb0d8905139f723c9e22f5c662dc08848243a665 + 4c8223800019b9823523d84da2ef67ca1c14277630aace464c113be8a0a658c39e181 + a8bb71 + client_mac_key: b1ee7ce52dbd0ab72872924ff11596cb196bbabfc319e74aca78a + de54a0f74dd15dcf5621f6d2e79161b0c9b701381d494836dedbb86e584a65b34267a + 370e01 + oprf_key: 62ef7f7d9506a14600c34f642aaf6ef8019cc82a6755db4fded5248ea14 + 6030a + +C.1.3.4. 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 + 75865ee7efef95f4cb6c25d477f720502676f06a3b806da262139bf3fa76a1090b94d + ac78bc3bc6f8747d5b35acf94eff3ec2ebe7d49b8cf16be64120b279fe92664e47be5 + da7e60f08f12e91192652f79 + KE3: 550e923829a544496d8316c490da2b979b78c730dd75be3a17f237a26432c19f + bba54b6a0467b1c22ecbd6794bc5fa5b04215ba1ef974c6b090baa42c5bb984f + export_key: 9dec51d6d0f6ce7e4345f10961053713b07310cc2e45872f57bbd2fe5 + 070fdf0fb5b77c7ddaa2f3dc5c35132df7417ad7fefe0f690ad266e5a54a21d045c9c + 38 + session_key: fd2fdd07c1bcc88e81c1b1d1de5ad62dfdef1c0b8209ff9d671e1fac + 55ce9c34d381c1fb2703ff53a797f77daccbe33047ccc167b8105171e10ec962eea20 + 3aa + +C.1.4. OPAQUE-3DH Real Test Vector 4 + +C.1.4.1. 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 + +C.1.4.2. 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 + client_keyshare_seed: 82850a697b42a505f5b68fcdafce8c31f0af2b581f063cf + 1091933541936304b + server_keyshare_seed: 05a4f54206eef1ba2f615bc0aa285cb22f26d1153b5b40a + 1e85ff80da12f982f + blind_registration: c575731ffe1cb0ca5ba63b42c4699767b8b9ab78ba39316ee + 04baddb2034a70a + blind_login: 6ecc102d2e7a7cf49617aad7bbe188556792d4acd60a1a8a8d2b65d4 + b0790308 + +C.1.4.3. Intermediate Values + + client_public_key: 0936ea94ab030ec332e29050d266c520e916731a052d05ced7 + e0cfe751142b48 + auth_key: 7e880ab484f750e80e6f839d975aff476070ce65066d85ea62523d1d576 + 4739d91307fac47186a4ab935e6a5c7f70cb47faa9473311947502c022cc67ae9440c + randomized_password: 3a602c295a9c323d9362fe286f104567ed6862b25dbe30fa + da844f19e41cf40047424b7118e15dc2c1a815a70fea5c8de6c30aa61440cd4b4b5e8 + f3963fbb2e1 + envelope: 40d6b67fdd7da7c49894750754514dbd2070a407166bd2a5237cca9bf44 + d6e0bb4c0eab6143959a650c5f6b32acf162b1fbe95bb36c5c4f99df53865c4d3537d + 69061d80522d772cd0efdbe91f817f6bf7259a56e20b4eb9cbe9443702f4b759 + handshake_secret: 13e7dc6afa5334b9dfffe26bee3caf744ef4add176caee464cd + eb3d37303b90de35a8bf095df84471ac77d705f12fe232f1571de1d6a001d3e808998 + 73a142dc + server_mac_key: a58135acfb2bde92d506cf59119729a6404ad94eba294e4b52a63 + baf58cfe03f21bcf735222c7f2c27a60bd958be7f6aed50dc03a78f64e7ae4ac1ff07 + 1b95aa + client_mac_key: 1e1a8ba156aadc4a302f707d2193c9dab477b355f430d450dd407 + ce40dc75613f76ec33dec494f8a6bfdcf951eb060dac33e6572c693954fe92e33730c + 9ab0a2 + oprf_key: 62ef7f7d9506a14600c34f642aaf6ef8019cc82a6755db4fded5248ea14 + 6030a + +C.1.4.4. 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 + 75865ee7efef95f4cb6c25d477f72050267cc22c87edbf3ecaca64cb33bc60dc3bfc5 + 51e365f0d46a7fed0e09d96f9afbb48868f5bb3c3e05a86ed8c9476fc22c58306c5a2 + 91be34388e09548ba9d70f39 + KE3: d16344e791c3f18594d22ba068984fa18ec1e9bead662b75f66826ffd627932f + cd1ec40cd01dcf5f63f4055ebe45c7717a57a833aad360256cf1e1c20c0eae1c + export_key: 9dec51d6d0f6ce7e4345f10961053713b07310cc2e45872f57bbd2fe5 + 070fdf0fb5b77c7ddaa2f3dc5c35132df7417ad7fefe0f690ad266e5a54a21d045c9c + 38 + session_key: f6116d3aa0e4089a179713bad4d98ed5cb57e5443cae8d36ef78996f + a60f3dc6e9fcdd63c001596b06dbc1285d80211035cc0e485506b3f7a650cbf78c5bf + fc9 + +C.1.5. OPAQUE-3DH Real Test Vector 5 + +C.1.5.1. Configuration + + OPRF: P256-SHA256 + Hash: SHA256 + KSF: Identity + KDF: HKDF-SHA256 + MAC: HMAC-SHA256 + Group: P256_XMD:SHA-256_SSWU_RO_ + Context: 4f50415155452d504f43 + Nh: 32 + Npk: 33 + Nsk: 32 + Nm: 32 + Nx: 32 + Nok: 32 + +C.1.5.2. Input Values + + oprf_seed: 62f60b286d20ce4fd1d64809b0021dad6ed5d52a2c8cf27ae6582543a0 + a8dce2 + credential_identifier: 31323334 + password: 436f7272656374486f72736542617474657279537461706c65 + envelope_nonce: a921f2a014513bd8a90e477a629794e89fec12d12206dde662ebd + cf65670e51f + masking_nonce: 38fe59af0df2c79f57b8780278f5ae47355fe1f817119041951c80 + f612fdfc6d + server_private_key: c36139381df63bfc91c850db0b9cfbec7a62e86d80040a41a + a7725bf0e79d5e5 + server_public_key: 035f40ff9cf88aa1f5cd4fe5fd3da9ea65a4923a5594f84fd9 + f2092d6067784874 + server_nonce: 71cd9960ecef2fe0d0f7494986fa3d8b2bb01963537e60efb13981e + 138e3d4a1 + client_nonce: ab3d33bde0e93eda72392346a7a73051110674bbf6b1b7ffab8be4f + 91fdaeeb1 + client_keyshare_seed: 633b875d74d1556d2a2789309972b06db21dfcc4f5ad51d + 7e74d783b7cfab8dc + server_keyshare_seed: 05a4f54206eef1ba2f615bc0aa285cb22f26d1153b5b40a + 1e85ff80da12f982f + blind_registration: 411bf1a62d119afe30df682b91a0a33d777972d4f2daa4b34 + ca527d597078153 + blind_login: c497fddf6056d241e6cf9fb7ac37c384f49b357a221eb0a802c989b9 + 942256c1 + +C.1.5.3. Intermediate Values + + client_public_key: 03b218507d978c3db570ca994aaf36695a731ddb2db272c817 + f79746fc37ae5214 + auth_key: 5bd4be1602516092dc5078f8d699f5721dc1720a49fb80d8e5c16377abd + 0987b + randomized_password: 06be0a1a51d56557a3adad57ba29c5510565dcd8b5078fa3 + 19151b9382258fb0 + envelope: a921f2a014513bd8a90e477a629794e89fec12d12206dde662ebdcf6567 + 0e51fad30bbcfc1f8eda0211553ab9aaf26345ad59a128e80188f035fe4924fad67b8 + handshake_secret: 83a932431a8f25bad042f008efa2b07c6cd0faa8285f335b636 + 3546a9f9b235f + server_mac_key: 13e928581febfad28855e3e7f03306d61bd69489686f621535d44 + a1365b73b0d + client_mac_key: afdc53910c25183b08b930e6953c35b3466276736d9de2e9c5efa + f150f4082c5 + oprf_key: 2dfb5cb9aa1476093be74ca0d43e5b02862a05f5d6972614d7433acdc66 + f7f31 + +C.1.5.4. Output Values + + registration_request: 029e949a29cfa0bf7c1287333d2fb3dc586c41aa652f507 + 0d26a5315a1b50229f8 + registration_response: 0350d3694c00978f00a5ce7cd08a00547e4ab5fb5fc2b2 + f6717cdaa6c89136efef035f40ff9cf88aa1f5cd4fe5fd3da9ea65a4923a5594f84fd + 9f2092d6067784874 + registration_upload: 03b218507d978c3db570ca994aaf36695a731ddb2db272c8 + 17f79746fc37ae52147f0ed53532d3ae8e505ecc70d42d2b814b6b0e48156def71ea0 + 29148b2803aafa921f2a014513bd8a90e477a629794e89fec12d12206dde662ebdcf6 + 5670e51fad30bbcfc1f8eda0211553ab9aaf26345ad59a128e80188f035fe4924fad6 + 7b8 + KE1: 037342f0bcb3ecea754c1e67576c86aa90c1de3875f390ad599a26686cdfee6e + 07ab3d33bde0e93eda72392346a7a73051110674bbf6b1b7ffab8be4f91fdaeeb1022 + ed3f32f318f81bab80da321fecab3cd9b6eea11a95666dfa6beeaab321280b6 + KE2: 0246da9fe4d41d5ba69faa6c509a1d5bafd49a48615a47a8dd4b0823cc147648 + 1138fe59af0df2c79f57b8780278f5ae47355fe1f817119041951c80f612fdfc6d2f0 + c547f70deaeca54d878c14c1aa5e1ab405dec833777132eea905c2fbb12504a67dcbe + 0e66740c76b62c13b04a38a77926e19072953319ec65e41f9bfd2ae26837b6ce688bf + 9af2542f04eec9ab96a1b9328812dc2f5c89182ed47fead61f09f71cd9960ecef2fe0 + d0f7494986fa3d8b2bb01963537e60efb13981e138e3d4a103c1701353219b53acf33 + 7bf6456a83cefed8f563f1040b65afbf3b65d3bc9a19b50a73b145bc87a157e8c58c0 + 342e2047ee22ae37b63db17e0a82a30fcc4ecf7b + KE3: e97cab4433aa39d598e76f13e768bba61c682947bdcf9936035e8a3a3ebfb66e + export_key: c3c9a1b0e33ac84dd83d0b7e8af6794e17e7a3caadff289fbd9dc769a + 853c64b + session_key: 484ad345715ccce138ca49e4ea362c6183f0949aaaa1125dc3bc3f80 + 876e7cd1 + +C.1.6. OPAQUE-3DH Real Test Vector 6 + +C.1.6.1. Configuration + + OPRF: P256-SHA256 + Hash: SHA256 + KSF: Identity + KDF: HKDF-SHA256 + MAC: HMAC-SHA256 + Group: P256_XMD:SHA-256_SSWU_RO_ + Context: 4f50415155452d504f43 + Nh: 32 + Npk: 33 + Nsk: 32 + Nm: 32 + Nx: 32 + Nok: 32 + +C.1.6.2. Input Values + + client_identity: 616c696365 + server_identity: 626f62 + oprf_seed: 62f60b286d20ce4fd1d64809b0021dad6ed5d52a2c8cf27ae6582543a0 + a8dce2 + credential_identifier: 31323334 + password: 436f7272656374486f72736542617474657279537461706c65 + envelope_nonce: a921f2a014513bd8a90e477a629794e89fec12d12206dde662ebd + cf65670e51f + masking_nonce: 38fe59af0df2c79f57b8780278f5ae47355fe1f817119041951c80 + f612fdfc6d + server_private_key: c36139381df63bfc91c850db0b9cfbec7a62e86d80040a41a + a7725bf0e79d5e5 + server_public_key: 035f40ff9cf88aa1f5cd4fe5fd3da9ea65a4923a5594f84fd9 + f2092d6067784874 + server_nonce: 71cd9960ecef2fe0d0f7494986fa3d8b2bb01963537e60efb13981e + 138e3d4a1 + client_nonce: ab3d33bde0e93eda72392346a7a73051110674bbf6b1b7ffab8be4f + 91fdaeeb1 + client_keyshare_seed: 633b875d74d1556d2a2789309972b06db21dfcc4f5ad51d + 7e74d783b7cfab8dc + server_keyshare_seed: 05a4f54206eef1ba2f615bc0aa285cb22f26d1153b5b40a + 1e85ff80da12f982f + blind_registration: 411bf1a62d119afe30df682b91a0a33d777972d4f2daa4b34 + ca527d597078153 + blind_login: c497fddf6056d241e6cf9fb7ac37c384f49b357a221eb0a802c989b9 + 942256c1 + +C.1.6.3. Intermediate Values + + client_public_key: 03b218507d978c3db570ca994aaf36695a731ddb2db272c817 + f79746fc37ae5214 + auth_key: 5bd4be1602516092dc5078f8d699f5721dc1720a49fb80d8e5c16377abd + 0987b + randomized_password: 06be0a1a51d56557a3adad57ba29c5510565dcd8b5078fa3 + 19151b9382258fb0 + envelope: a921f2a014513bd8a90e477a629794e89fec12d12206dde662ebdcf6567 + 0e51f4d7773a36a208a866301dbb2858e40dc5638017527cf91aef32d3848eebe0971 + handshake_secret: 80bdcc498f22de492e90ee8101fcc7c101e158dd49c77f7c283 + 816ae329ed62f + server_mac_key: 0f82432fbdb5b90daf27a91a3acc42299a9590dba1b77932c2207 + b4cb3d4a157 + client_mac_key: 7f629eb0b1b69979b07ca1f564b3e92ed22f07569fd1d11725d93 + e46731fbe71 + oprf_key: 2dfb5cb9aa1476093be74ca0d43e5b02862a05f5d6972614d7433acdc66 + f7f31 + +C.1.6.4. Output Values + + registration_request: 029e949a29cfa0bf7c1287333d2fb3dc586c41aa652f507 + 0d26a5315a1b50229f8 + registration_response: 0350d3694c00978f00a5ce7cd08a00547e4ab5fb5fc2b2 + f6717cdaa6c89136efef035f40ff9cf88aa1f5cd4fe5fd3da9ea65a4923a5594f84fd + 9f2092d6067784874 + registration_upload: 03b218507d978c3db570ca994aaf36695a731ddb2db272c8 + 17f79746fc37ae52147f0ed53532d3ae8e505ecc70d42d2b814b6b0e48156def71ea0 + 29148b2803aafa921f2a014513bd8a90e477a629794e89fec12d12206dde662ebdcf6 + 5670e51f4d7773a36a208a866301dbb2858e40dc5638017527cf91aef32d3848eebe0 + 971 + KE1: 037342f0bcb3ecea754c1e67576c86aa90c1de3875f390ad599a26686cdfee6e + 07ab3d33bde0e93eda72392346a7a73051110674bbf6b1b7ffab8be4f91fdaeeb1022 + ed3f32f318f81bab80da321fecab3cd9b6eea11a95666dfa6beeaab321280b6 + KE2: 0246da9fe4d41d5ba69faa6c509a1d5bafd49a48615a47a8dd4b0823cc147648 + 1138fe59af0df2c79f57b8780278f5ae47355fe1f817119041951c80f612fdfc6d2f0 + c547f70deaeca54d878c14c1aa5e1ab405dec833777132eea905c2fbb12504a67dcbe + 0e66740c76b62c13b04a38a77926e19072953319ec65e41f9bfd2ae268d7f10604202 + 1c80300e4c6f585980cf39fc51a4a6bba41b0729f9b240c729e5671cd9960ecef2fe0 + d0f7494986fa3d8b2bb01963537e60efb13981e138e3d4a103c1701353219b53acf33 + 7bf6456a83cefed8f563f1040b65afbf3b65d3bc9a19b84922c7e5d074838a8f27859 + 2c53f61fb59f031e85ad480c0c71086b871e1b24 + KE3: 46833578cee137775f6be3f01b80748daac5a694101ad0e9e7025480552da56a + export_key: c3c9a1b0e33ac84dd83d0b7e8af6794e17e7a3caadff289fbd9dc769a + 853c64b + session_key: 27766fabd8dd88ff37fbd0ef1a491e601d10d9f016c2b28c4bd1b0fb + 7511a3c3 + +C.2. Fake Test Vectors + +C.2.1. OPAQUE-3DH Fake Test Vector 1 + +C.2.1.1. Configuration + + OPRF: ristretto255-SHA512 + Hash: SHA512 + KSF: Identity + KDF: HKDF-SHA512 + MAC: HMAC-SHA512 + Group: ristretto255 + Context: 4f50415155452d504f43 + Nh: 64 + Npk: 32 + Nsk: 32 + Nm: 64 + Nx: 64 + Nok: 32 + +C.2.1.2. Input Values + + client_identity: 616c696365 + server_identity: 626f62 + oprf_seed: 743fc168d1f826ad43738933e5adb23da6fb95f95a1b069f0daa0522d0 + a78b617f701fc6aa46d3e7981e70de7765dfcd6b1e13e3369a582eb8dc456b10aa53b + 0 + credential_identifier: 31323334 + masking_nonce: 9c035896a043e70f897d87180c543e7a063b83c1bb728fbd189c61 + 9e27b6e5a6 + client_private_key: 2b98980aa95ab53a0f39f0291903d2fdf04b00c167f081416 + 9922df873002409 + client_public_key: 84f43f9492e19c22d8bdaa4447cc3d4db1cdb5427a9f852c47 + 07921212c36251 + server_private_key: c788585ae8b5ba2942b693b849be0c0426384e41977c18d2e + 81fbe30fd7c9f06 + server_public_key: 825f832667480f08b0c9069da5083ac4d0e9ee31b49c4e0310 + 031fea04d52966 + server_nonce: 1e10f6eeab2a7a420bf09da9b27a4639645622c46358de9cf7ae813 + 055ae2d12 + client_keyshare_seed: a270dc715dc2b4612bc7864312a05c3e9788ee1bad1f276 + d1e15bdeb4c355e94 + server_keyshare_seed: 360b0937f47d45f6123a4d8f0d0c0814b6120d840ebb8bc + 5b4f6b62df07f78c2 + masking_key: 39ebd51f0e39a07a1c2d2431995b0399bca9996c5d10014d6ebab445 + 3dc10ce5cef38ed3df6e56bfff40c2d8dd4671c2b4cf63c3d54860f31fe40220d690b + b71 + KE1: b0a26dcaca2230b8f5e4b1bcab9c84b586140221bb8b2848486874b0be448905 + 42d4e61ed3f8d64cdd3b9d153343eca15b9b0d5e388232793c6376bd2d9cfd0ab641d + 7f20a245a09f1d4dbb6e301661af7f352beb0791d055e48d3645232f77f + +C.2.1.3. Output Values + + KE2: 928f79ad8df21963e91411b9f55165ba833dea918f441db967cdc09521d22925 + 9c035896a043e70f897d87180c543e7a063b83c1bb728fbd189c619e27b6e5a632b5a + b1bff96636144faa4f9f9afaac75dd88ea99cf5175902ae3f3b2195693f165f11929b + a510a5978e64dcdabecbd7ee1e4380ce270e58fea58e6462d92964a1aaef72698bca1 + c673baeb04cc2bf7de5f3c2f5553464552d3a0f7698a9ca7f9c5e70c6cb1f706b2f17 + 5ab9d04bbd13926e816b6811a50b4aafa9799d5ed7971e10f6eeab2a7a420bf09da9b + 27a4639645622c46358de9cf7ae813055ae2d1298251c5ba55f6b0b2d58d9ff0c88fe + 4176484be62a96db6e2a8c4d431bd1bf27fe6c1d0537603835217d42ebf7b25819827 + 32e74892fd28211b31ed33863f0beaf75ba6f59474c0aaf9d78a60a9b2f4cd24d7ab5 + 4131b3c8efa192df6b72db4c + +C.2.2. OPAQUE-3DH Fake Test Vector 2 + +C.2.2.1. 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 + +C.2.2.2. 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 + client_keyshare_seed: a270dc715dc2b4612bc7864312a05c3e9788ee1bad1f276 + d1e15bdeb4c355e94 + server_keyshare_seed: 360b0937f47d45f6123a4d8f0d0c0814b6120d840ebb8bc + 5b4f6b62df07f78c2 + masking_key: 79ad2621b0757a447dff7108a8ae20a068ce67872095620f415ea611 + c9dcc04972fa359538cd2fd6528775ca775487b2b56db642049b8a90526b975a38484 + c6a + KE1: b0a26dcaca2230b8f5e4b1bcab9c84b586140221bb8b2848486874b0be448905 + 42d4e61ed3f8d64cdd3b9d153343eca15b9b0d5e388232793c6376bd2d9cfd0ac059b + 7ba2aec863933ae48816360c7a9022e83d822704f3b0b86c0502a66e574 + +C.2.2.3. Output Values + + KE2: 6606b6fedbb33f19a81a1feb5149c600fe77252f58acd3080d7504d3dad4922f + 9c035896a043e70f897d87180c543e7a063b83c1bb728fbd189c619e27b6e5a67db39 + 8c0f65d8c298eac430abdae4c80e82b552fb940c00f0cbcea853c0f96c1c15099f3d4 + b0e83ecc249613116d605b8d77bb68bdf76994c2bc507e2dcae4176f00afed68ad25c + f3040a0e991acece31ca532117f5c12816997372ff031ad04ebcdce06c501da24e7b4 + db95343456e2ed260895ec362694230a1fa20e24a9c71e10f6eeab2a7a420bf09da9b + 27a4639645622c46358de9cf7ae813055ae2d122d9055eb8f83e1b497370adad5cc2a + 417bf9be436a792def0c7b7ccb92b9e275d7c663104ea4655bd70570d975c05351655 + d55fbfb392286edb55600a23b55ce18f8c60e0d1960c960412dd08eabc81ba7ca8ae2 + b04aad65462321f51c298010 + +C.2.3. OPAQUE-3DH Fake Test Vector 3 + +C.2.3.1. Configuration + + OPRF: P256-SHA256 + Hash: SHA256 + KSF: Identity + KDF: HKDF-SHA256 + MAC: HMAC-SHA256 + Group: P256_XMD:SHA-256_SSWU_RO_ + Context: 4f50415155452d504f43 + Nh: 32 + Npk: 33 + Nsk: 32 + Nm: 32 + Nx: 32 + Nok: 32 + +C.2.3.2. Input Values + + client_identity: 616c696365 + server_identity: 626f62 + oprf_seed: bb1cd59e16ac09bc0cb6d528541695d7eba2239b1613a3db3ade77b362 + 80f725 + credential_identifier: 31323334 + masking_nonce: 9c035896a043e70f897d87180c543e7a063b83c1bb728fbd189c61 + 9e27b6e5a6 + client_private_key: d423b87899fc61d014fc8330a4e26190fcfa470a3afe59243 + 24294af7dbbc1dd + client_public_key: 03b81708eae026a9370616c22e1e8542fe9dbebd36ce8a2661 + b708e9628f4a57fc + server_private_key: 34fbe7e830be1fe8d2187c97414e3826040cbe49b893b6422 + 9bab5e85a5888c7 + server_public_key: 0221e034c0e202fe883dcfc96802a7624166fed4cfcab4ae30 + cf5f3290d01c88bf + server_nonce: 1e10f6eeab2a7a420bf09da9b27a4639645622c46358de9cf7ae813 + 055ae2d12 + client_keyshare_seed: a270dc715dc2b4612bc7864312a05c3e9788ee1bad1f276 + d1e15bdeb4c355e94 + server_keyshare_seed: 360b0937f47d45f6123a4d8f0d0c0814b6120d840ebb8bc + 5b4f6b62df07f78c2 + masking_key: caecc6ccb4cae27cb54d8f3a1af1bac52a3d53107ce08497cdd362b1 + 992e4e5e + KE1: 0396875da2b4f7749bba411513aea02dc514a48d169d8a9531bd61d3af3fa9ba + ae42d4e61ed3f8d64cdd3b9d153343eca15b9b0d5e388232793c6376bd2d9cfd0a021 + 47a6583983cc9973b5082db5f5070890cb373d70f7ac1b41ed2305361009784 + +C.2.3.3. Output Values + + KE2: 0201198dcd13f9792eb75dcfa815f61b049abfe2e3e9456d4bbbceec5f442efd + 049c035896a043e70f897d87180c543e7a063b83c1bb728fbd189c619e27b6e5a6fac + da65ce0a97b9085e7af07f61fd3fdd046d257cbf2183ce8766090b8041a8bf28d79dd + 4c9031ddc75bb6ddb4c291e639937840e3d39fc0d5a3d6e7723c09f7945df485bcf9a + efe3fe82d149e84049e259bb5b33d6a2ff3b25e4bfb7eff0962821e10f6eeab2a7a42 + 0bf09da9b27a4639645622c46358de9cf7ae813055ae2d12023f82bbb24e75b8683fd + 13b843cd566efae996cd0016cffdcc24ee2bc937d026f80144878749a69565b433c10 + 40aff67e94f79345de888a877422b9bbe21ec329 +"#; diff --git a/src/tests/test_opaque_vectors.rs b/src/tests/test_opaque_vectors.rs index f6e6535..dbd145e 100644 --- a/src/tests/test_opaque_vectors.rs +++ b/src/tests/test_opaque_vectors.rs @@ -182,7 +182,7 @@ macro_rules! json_to_test_vectors { #[test] fn tests() -> Result<(), ProtocolError> { let rfc: Value = - serde_json::from_str(super::parser::rfc_to_json(super::opaque_vectors::VECTORS).as_str()) + serde_json::from_str(super::parser::rfc_to_json(super::rfc9807_vectors::VECTORS).as_str()) .expect("Could not parse json"); #[cfg(feature = "ristretto255")] @@ -213,6 +213,10 @@ fn tests() -> Result<(), ProtocolError> { "Parsing error" ); + // There should be 2 real test vectors and 1 fake test vector + assert_eq!(ristretto_real_tvs.len(), 2); + assert_eq!(ristretto_fake_tvs.len(), 1); + test_registration_request::(&ristretto_real_tvs)?; test_registration_response::(&ristretto_real_tvs)?; test_registration_upload::(&ristretto_real_tvs)?; @@ -251,6 +255,10 @@ fn tests() -> Result<(), ProtocolError> { "Parsing error" ); + // There should be 2 real test vectors and 1 fake test vector + assert_eq!(ristretto_real_tvs.len(), 2); + assert_eq!(ristretto_fake_tvs.len(), 1); + test_registration_request::(&ristretto_real_tvs)?; test_registration_response::(&ristretto_real_tvs)?; test_registration_upload::(&ristretto_real_tvs)?; @@ -286,6 +294,10 @@ fn tests() -> Result<(), ProtocolError> { "Parsing error" ); + // There should be 2 real test vectors and 1 fake test vector + assert_eq!(p256_real_tvs.len(), 2); + assert_eq!(p256_fake_tvs.len(), 1); + test_registration_request::(&p256_real_tvs)?; test_registration_response::(&p256_real_tvs)?; test_registration_upload::(&p256_real_tvs)?;