xref: /aosp_15_r20/external/anonymous-counting-tokens/act/act_v0/parameters.cc (revision a26f13018b999b025c962678da434c0a5aec4dae)
1*a26f1301SXin Li /*
2*a26f1301SXin Li  * Copyright 2023 Google LLC.
3*a26f1301SXin Li  * Licensed under the Apache License, Version 2.0 (the "License");
4*a26f1301SXin Li  * you may not use this file except in compliance with the License.
5*a26f1301SXin Li  * You may obtain a copy of the License at
6*a26f1301SXin Li  *
7*a26f1301SXin Li  *     https://www.apache.org/licenses/LICENSE-2.0
8*a26f1301SXin Li  *
9*a26f1301SXin Li  * Unless required by applicable law or agreed to in writing, software
10*a26f1301SXin Li  * distributed under the License is distributed on an "AS IS" BASIS,
11*a26f1301SXin Li  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12*a26f1301SXin Li  * See the License for the specific language governing permissions and
13*a26f1301SXin Li  * limitations under the License.
14*a26f1301SXin Li  */
15*a26f1301SXin Li 
16*a26f1301SXin Li #include "act/act_v0/parameters.h"
17*a26f1301SXin Li 
18*a26f1301SXin Li #include <string>
19*a26f1301SXin Li #include "absl/strings/str_cat.h"
20*a26f1301SXin Li #include "act/act_v0/act_v0.pb.h"
21*a26f1301SXin Li 
22*a26f1301SXin Li namespace private_join_and_compute {
23*a26f1301SXin Li namespace anonymous_counting_tokens {
24*a26f1301SXin Li 
ActV0TestSchemeParameters()25*a26f1301SXin Li SchemeParameters ActV0TestSchemeParameters() {
26*a26f1301SXin Li   int test_modulus_length = 1536;
27*a26f1301SXin Li   int batch_size = 3;
28*a26f1301SXin Li   std::string random_oracle_prefix = "ActV0TestSchemeParameters";
29*a26f1301SXin Li 
30*a26f1301SXin Li   SchemeParameters scheme_parameters;
31*a26f1301SXin Li   SchemeParametersV0* scheme_parameters_v0 =
32*a26f1301SXin Li       scheme_parameters.mutable_scheme_parameters_v0();
33*a26f1301SXin Li   scheme_parameters_v0->set_security_parameter(kDefaultSecurityParameter);
34*a26f1301SXin Li   scheme_parameters_v0->set_challenge_length_bits(kDefaultChallengeLength);
35*a26f1301SXin Li   scheme_parameters_v0->set_modulus_length_bits(test_modulus_length);
36*a26f1301SXin Li   scheme_parameters_v0->set_camenisch_shoup_s(kDefaultCamenischShoupS);
37*a26f1301SXin Li   scheme_parameters_v0->set_vector_encryption_length(batch_size);
38*a26f1301SXin Li   scheme_parameters_v0->set_pedersen_batch_size(batch_size);
39*a26f1301SXin Li   scheme_parameters_v0->set_prf_ec_group(kDefaultCurveId);
40*a26f1301SXin Li   scheme_parameters_v0->set_random_oracle_prefix(random_oracle_prefix);
41*a26f1301SXin Li 
42*a26f1301SXin Li   return scheme_parameters;
43*a26f1301SXin Li }
44*a26f1301SXin Li 
ActV0Batch16SchemeParameters()45*a26f1301SXin Li SchemeParameters ActV0Batch16SchemeParameters() {
46*a26f1301SXin Li   int batch_size = 16;
47*a26f1301SXin Li   std::string random_oracle_prefix = "ActV0Batch16SchemeParameters";
48*a26f1301SXin Li 
49*a26f1301SXin Li   SchemeParameters scheme_parameters;
50*a26f1301SXin Li   SchemeParametersV0* scheme_parameters_v0 =
51*a26f1301SXin Li       scheme_parameters.mutable_scheme_parameters_v0();
52*a26f1301SXin Li   scheme_parameters_v0->set_security_parameter(kDefaultSecurityParameter);
53*a26f1301SXin Li   scheme_parameters_v0->set_challenge_length_bits(kDefaultChallengeLength);
54*a26f1301SXin Li   scheme_parameters_v0->set_modulus_length_bits(kDefaultModulusLengthBits);
55*a26f1301SXin Li   scheme_parameters_v0->set_camenisch_shoup_s(kDefaultCamenischShoupS);
56*a26f1301SXin Li   scheme_parameters_v0->set_vector_encryption_length(batch_size);
57*a26f1301SXin Li   scheme_parameters_v0->set_pedersen_batch_size(batch_size);
58*a26f1301SXin Li   scheme_parameters_v0->set_prf_ec_group(kDefaultCurveId);
59*a26f1301SXin Li   scheme_parameters_v0->set_random_oracle_prefix(random_oracle_prefix);
60*a26f1301SXin Li 
61*a26f1301SXin Li   return scheme_parameters;
62*a26f1301SXin Li }
63*a26f1301SXin Li 
ActV0Batch32SchemeParameters()64*a26f1301SXin Li SchemeParameters ActV0Batch32SchemeParameters() {
65*a26f1301SXin Li   int batch_size = 32;
66*a26f1301SXin Li   std::string random_oracle_prefix = "ActV0Batch32SchemeParameters";
67*a26f1301SXin Li 
68*a26f1301SXin Li   SchemeParameters scheme_parameters;
69*a26f1301SXin Li   SchemeParametersV0* scheme_parameters_v0 =
70*a26f1301SXin Li       scheme_parameters.mutable_scheme_parameters_v0();
71*a26f1301SXin Li   scheme_parameters_v0->set_security_parameter(kDefaultSecurityParameter);
72*a26f1301SXin Li   scheme_parameters_v0->set_challenge_length_bits(kDefaultChallengeLength);
73*a26f1301SXin Li   scheme_parameters_v0->set_modulus_length_bits(kDefaultModulusLengthBits);
74*a26f1301SXin Li   scheme_parameters_v0->set_camenisch_shoup_s(kDefaultCamenischShoupS);
75*a26f1301SXin Li   scheme_parameters_v0->set_vector_encryption_length(batch_size);
76*a26f1301SXin Li   scheme_parameters_v0->set_pedersen_batch_size(batch_size);
77*a26f1301SXin Li   scheme_parameters_v0->set_prf_ec_group(kDefaultCurveId);
78*a26f1301SXin Li   scheme_parameters_v0->set_random_oracle_prefix(random_oracle_prefix);
79*a26f1301SXin Li 
80*a26f1301SXin Li   return scheme_parameters;
81*a26f1301SXin Li }
82*a26f1301SXin Li 
83*a26f1301SXin Li // Returns parameters supporting 32 messages in a batch, with CS vector
84*a26f1301SXin Li // encryption length set to 2, and modulus length 2048.
85*a26f1301SXin Li SchemeParameters
ActV0SchemeParametersPedersen32Modulus2048CamenischShoupVector2()86*a26f1301SXin Li ActV0SchemeParametersPedersen32Modulus2048CamenischShoupVector2() {
87*a26f1301SXin Li   int pedersen_batch_size = 32;
88*a26f1301SXin Li   int modulus_length = 2048;
89*a26f1301SXin Li   int camensich_shoup_vector_encryption_length = 2;
90*a26f1301SXin Li 
91*a26f1301SXin Li   return ActV0SchemeParameters(pedersen_batch_size, modulus_length,
92*a26f1301SXin Li                                camensich_shoup_vector_encryption_length);
93*a26f1301SXin Li }
94*a26f1301SXin Li 
95*a26f1301SXin Li // Returns custom parameters.
ActV0SchemeParameters(int pedersen_batch_size,int modulus_length_bits,int camenisch_shoup_vector_length)96*a26f1301SXin Li SchemeParameters ActV0SchemeParameters(int pedersen_batch_size,
97*a26f1301SXin Li                                        int modulus_length_bits,
98*a26f1301SXin Li                                        int camenisch_shoup_vector_length) {
99*a26f1301SXin Li   std::string random_oracle_prefix = absl::StrCat(
100*a26f1301SXin Li       "ActV0SchemeParametersPedersenBatchSize", pedersen_batch_size,
101*a26f1301SXin Li       "ModulusLengthBits", modulus_length_bits, "CamenischShoupVectorLength",
102*a26f1301SXin Li       camenisch_shoup_vector_length);
103*a26f1301SXin Li 
104*a26f1301SXin Li   SchemeParameters scheme_parameters;
105*a26f1301SXin Li   SchemeParametersV0* scheme_parameters_v0 =
106*a26f1301SXin Li       scheme_parameters.mutable_scheme_parameters_v0();
107*a26f1301SXin Li   scheme_parameters_v0->set_security_parameter(kDefaultSecurityParameter);
108*a26f1301SXin Li   scheme_parameters_v0->set_challenge_length_bits(kDefaultChallengeLength);
109*a26f1301SXin Li   scheme_parameters_v0->set_modulus_length_bits(modulus_length_bits);
110*a26f1301SXin Li   scheme_parameters_v0->set_camenisch_shoup_s(kDefaultCamenischShoupS);
111*a26f1301SXin Li   scheme_parameters_v0->set_vector_encryption_length(
112*a26f1301SXin Li       camenisch_shoup_vector_length);
113*a26f1301SXin Li   scheme_parameters_v0->set_pedersen_batch_size(pedersen_batch_size);
114*a26f1301SXin Li   scheme_parameters_v0->set_prf_ec_group(kDefaultCurveId);
115*a26f1301SXin Li   scheme_parameters_v0->set_random_oracle_prefix(random_oracle_prefix);
116*a26f1301SXin Li 
117*a26f1301SXin Li   return scheme_parameters;
118*a26f1301SXin Li }
119*a26f1301SXin Li 
120*a26f1301SXin Li }  // namespace anonymous_counting_tokens
121*a26f1301SXin Li }  // namespace private_join_and_compute
122