aboutsummaryrefslogtreecommitdiff
path: root/act/act_v0/parameters_test.cc
diff options
context:
space:
mode:
Diffstat (limited to 'act/act_v0/parameters_test.cc')
-rw-r--r--act/act_v0/parameters_test.cc45
1 files changed, 37 insertions, 8 deletions
diff --git a/act/act_v0/parameters_test.cc b/act/act_v0/parameters_test.cc
index 04927e5..b275c00 100644
--- a/act/act_v0/parameters_test.cc
+++ b/act/act_v0/parameters_test.cc
@@ -33,8 +33,7 @@ namespace private_join_and_compute {
namespace anonymous_counting_tokens {
namespace {
-Status EndToEndTestNoVerification(SchemeParameters scheme_parameters,
- int num_messages) {
+Status EndToEndTest(SchemeParameters scheme_parameters, int num_messages) {
std::unique_ptr<AnonymousCountingTokens> act =
AnonymousCountingTokensV0::Create();
@@ -42,12 +41,17 @@ Status EndToEndTestNoVerification(SchemeParameters scheme_parameters,
ASSIGN_OR_RETURN(ServerParameters server_parameters,
act->GenerateServerParameters(scheme_parameters));
- // Generate client parameters.
+ // Generate client parameters and check them.
ASSIGN_OR_RETURN(
ClientParameters client_parameters,
act->GenerateClientParameters(scheme_parameters,
server_parameters.public_parameters()));
+ RETURN_IF_ERROR(act->CheckClientParameters(
+ scheme_parameters, client_parameters.public_parameters(),
+ server_parameters.public_parameters(),
+ server_parameters.private_parameters()));
+
// Generate messages.
std::vector<std::string> messages;
messages.reserve(num_messages);
@@ -55,7 +59,7 @@ Status EndToEndTestNoVerification(SchemeParameters scheme_parameters,
messages.push_back(absl::StrCat("message", i));
}
- // Generate Tokens Request.
+ // Generate Tokens Request and check it.
std::vector<std::string> client_fingerprints;
TokensRequest tokens_request;
TokensRequestPrivateState tokens_request_private_state;
@@ -66,14 +70,24 @@ Status EndToEndTestNoVerification(SchemeParameters scheme_parameters,
client_parameters.public_parameters(),
client_parameters.private_parameters(),
server_parameters.public_parameters()));
+ RETURN_IF_ERROR(act->CheckTokensRequest(
+ client_fingerprints, tokens_request, scheme_parameters,
+ client_parameters.public_parameters(),
+ server_parameters.public_parameters(),
+ server_parameters.private_parameters()));
- // Generate Tokens Response.
+ // Generate Tokens Response and check it.
ASSIGN_OR_RETURN(
TokensResponse tokens_response,
act->GenerateTokensResponse(tokens_request, scheme_parameters,
client_parameters.public_parameters(),
server_parameters.public_parameters(),
server_parameters.private_parameters()));
+ RETURN_IF_ERROR(act->VerifyTokensResponse(
+ messages, tokens_request, tokens_request_private_state, tokens_response,
+ scheme_parameters, client_parameters.public_parameters(),
+ client_parameters.private_parameters(),
+ server_parameters.public_parameters()));
// Extract Tokens.
ASSIGN_OR_RETURN(
@@ -97,15 +111,30 @@ Status EndToEndTestNoVerification(SchemeParameters scheme_parameters,
}
TEST(ActV0ParametersTest, EndToEndWithTestParameters) {
- EXPECT_OK(EndToEndTestNoVerification(ActV0TestSchemeParameters(), 3));
+ EXPECT_OK(EndToEndTest(ActV0TestSchemeParameters(), 3));
}
TEST(ActV0ParametersTest, EndToEndWithBatch16Parameters) {
- EXPECT_OK(EndToEndTestNoVerification(ActV0Batch16SchemeParameters(), 16));
+ EXPECT_OK(EndToEndTest(ActV0Batch16SchemeParameters(), 16));
}
TEST(ActV0ParametersTest, EndToEndWithBatch32Parameters) {
- EXPECT_OK(EndToEndTestNoVerification(ActV0Batch32SchemeParameters(), 32));
+ EXPECT_OK(EndToEndTest(ActV0Batch32SchemeParameters(), 32));
+}
+
+TEST(ActV0ParametersTest, EndToEndWithBatch32Cs2Modulus2048Parameters) {
+ EXPECT_OK(EndToEndTest(
+ ActV0SchemeParametersPedersen32Modulus2048CamenischShoupVector2(), 32));
+}
+
+TEST(ActV0ParametersTest, EndToEndWithCustomParameters) {
+ int pedersen_batch_size = 32;
+ int modulus_length_bits = 1576;
+ int camenisch_shoup_vector_length = 2;
+ EXPECT_OK(EndToEndTest(
+ ActV0SchemeParameters(pedersen_batch_size, modulus_length_bits,
+ camenisch_shoup_vector_length),
+ 32));
}
// More extensive tests are in act_v0_test.cc. These tests simply ensure that