From e191c42b0740eb02f8aa96988175aadf9ab86c92 Mon Sep 17 00:00:00 2001 From: Richard Barnes Date: Tue, 1 Aug 2023 11:53:40 -0400 Subject: [PATCH] Extend support to interop runner --- cmd/interop/Makefile | 6 ++---- cmd/interop/src/json_details.h | 6 +++++- cmd/interop/src/main.cpp | 12 +++++++++++- lib/mls_vectors/src/mls_vectors.cpp | 15 --------------- 4 files changed, 18 insertions(+), 21 deletions(-) diff --git a/cmd/interop/Makefile b/cmd/interop/Makefile index 78d6d642..fb2cca27 100644 --- a/cmd/interop/Makefile +++ b/cmd/interop/Makefile @@ -16,8 +16,7 @@ run: ${BUILD_DIR}/${APP_NAME} ./${BUILD_DIR}/${APP_NAME} -live 50001 self-test: ${BUILD_DIR}/${APP_NAME} - # TODO(RLB) Extend to 13 to cover passive client tests - for tv_type in 1 2 3 4 5 6 7 8 9 10 11 12; do \ + for tv_type in 1 2 3 4 5 6 7 8 9 10 11 12 13; do \ echo Self-test on test vector type $$tv_type; \ ./${BUILD_DIR}/${APP_NAME} -gen $$tv_type | ./${BUILD_DIR}/${APP_NAME} -ver $$tv_type; \ done @@ -34,8 +33,7 @@ interop-test: ${BUILD_DIR}/${APP_NAME} ./${BUILD_DIR}/${APP_NAME} -ver 9 <${TEST_VECTOR_DIR}/welcome.json ./${BUILD_DIR}/${APP_NAME} -ver 10 <${TEST_VECTOR_DIR}/tree-operations.json ./${BUILD_DIR}/${APP_NAME} -ver 11 <${TEST_VECTOR_DIR}/treekem.json - # TODO(RLB) Uncomment once the messages test vectors are fixed - #./${BUILD_DIR}/${APP_NAME} -ver 12 <${TEST_VECTOR_DIR}/messages.json + ./${BUILD_DIR}/${APP_NAME} -ver 12 <${TEST_VECTOR_DIR}/messages.json ./${BUILD_DIR}/${APP_NAME} -ver 13 <${TEST_VECTOR_DIR}/passive-client-welcome.json ./${BUILD_DIR}/${APP_NAME} -ver 13 <${TEST_VECTOR_DIR}/passive-client-handling-commit.json diff --git a/cmd/interop/src/json_details.h b/cmd/interop/src/json_details.h index 60d5e1ea..03d66852 100644 --- a/cmd/interop/src/json_details.h +++ b/cmd/interop/src/json_details.h @@ -343,7 +343,9 @@ NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(PassiveClientTestVector::PSK, psk_id, psk) NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(PassiveClientTestVector::Epoch, proposals, commit, - epoch_authenticator) + epoch_authenticator, + application_data, + application_message) NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(PassiveClientTestVector, cipher_suite, key_package, @@ -354,6 +356,8 @@ NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(PassiveClientTestVector, welcome, ratchet_tree, initial_epoch_authenticator, + initial_epoch_application_data, + initial_epoch_application_message, epochs) } // namespace mls_vectors diff --git a/cmd/interop/src/main.cpp b/cmd/interop/src/main.cpp index 0ef89714..5fd4f9d1 100644 --- a/cmd/interop/src/main.cpp +++ b/cmd/interop/src/main.cpp @@ -156,7 +156,17 @@ make_test_vector(uint64_t type) MessagesTestVector(), }; - // TODO(RLB) TestVectorClass::passive_client_scenarios + case TestVectorClass::passive_client_scenarios: { + auto cases = std::vector(); + + for (const auto& suite : mls::all_supported_suites) { + for (const auto& scenario : PassiveClientTestVector::all_scenarios) { + cases.emplace_back(suite, scenario); + } + } + + return cases; + } default: return nullptr; diff --git a/lib/mls_vectors/src/mls_vectors.cpp b/lib/mls_vectors/src/mls_vectors.cpp index 65c23e4e..e3de405c 100644 --- a/lib/mls_vectors/src/mls_vectors.cpp +++ b/lib/mls_vectors/src/mls_vectors.cpp @@ -5,8 +5,6 @@ #include -#include // XXX - namespace mls_vectors { using namespace mls; @@ -2228,8 +2226,6 @@ PassiveClientTestVector::PassiveClientTestVector(CipherSuite suite, const auto msg_opts = MessageOpts{ encrypt, {}, 0 }; switch (op) { case ADD_OP: { - std::cout << "step=" << epoch << " op=add" << std::endl; - const auto [joiner_init_priv, joiner_enc_priv, joiner_sig_priv, @@ -2261,8 +2257,6 @@ PassiveClientTestVector::PassiveClientTestVector(CipherSuite suite, const auto new_member_index = next.tree().find(joiner_kp.leaf_node); members.insert_or_assign(opt::get(new_member_index).val, new_member); - std::cout << " @ " << opt::get(new_member_index).val << " by " << committer_index << std::endl; - // Record the epoch const auto application_data = epoch_prg.secret("application_data"); epochs.push_back({ @@ -2276,13 +2270,9 @@ PassiveClientTestVector::PassiveClientTestVector(CipherSuite suite, } case UPDATE_OP: { - std::cout << "step=" << epoch << " op=update" << std::endl; - const auto updater_index = random_member("updater"); auto& updater = members.at(updater_index); - std::cout << " @ " << updater_index << " by " << committer_index << std::endl; - auto proposals = std::vector{}; if (updater_index != committer_index) { const auto update_enc_priv = epoch_prg.hpke_key("update_enc_priv"); @@ -2324,8 +2314,6 @@ PassiveClientTestVector::PassiveClientTestVector(CipherSuite suite, } case REMOVE_OP: { - std::cout << "step=" << epoch << " op=remove" << std::endl; - if (members.size() == 1) { // re-roll break; @@ -2369,9 +2357,6 @@ PassiveClientTestVector::PassiveClientTestVector(CipherSuite suite, } case PSK_OP: { - std::cout << "step=" << epoch << " op=psk" << std::endl; - std::cout << " by " << committer_index << std::endl; - const auto psk_id = epoch_prg.secret("epoch_prg"); const auto psk_secret = epoch_prg.secret("epoch_secret");