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