xref: /aosp_15_r20/external/private-join-and-compute/private_join_and_compute/crypto/BUILD (revision a6aa18fbfbf9cb5cd47356a9d1b057768998488c)
1# Copyright 2019 Google LLC.
2#
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# Build file for crypto folder in open-source Private Join and Compute.
16
17load("@com_github_grpc_grpc//bazel:grpc_build_system.bzl", "grpc_proto_library")
18
19package(default_visibility = ["//visibility:public"])
20
21cc_library(
22    name = "openssl_includes",
23    hdrs = ["openssl.inc"],
24    deps = [
25        "@boringssl//:ssl",
26    ],
27)
28
29cc_library(
30    name = "openssl_init",
31    srcs = ["openssl_init.cc"],
32    hdrs = ["openssl_init.h"],
33    deps = [
34        ":openssl_includes",
35        "@boringssl//:ssl",
36        "@com_google_absl//absl/log",
37    ],
38)
39
40cc_library(
41    name = "bn_util",
42    srcs = [
43        "big_num.cc",
44        "context.cc",
45    ],
46    hdrs = [
47        "big_num.h",
48        "context.h",
49    ],
50    deps = [
51        ":openssl_includes",
52        ":openssl_init",
53        "//private_join_and_compute/util:status_includes",
54        "@com_google_absl//absl/flags:flag",
55        "@com_google_absl//absl/log",
56        "@com_google_absl//absl/log:check",
57        "@com_google_absl//absl/strings",
58    ],
59)
60
61cc_library(
62    name = "mont_mul",
63    srcs = [
64        "mont_mul.cc",
65    ],
66    hdrs = [
67        "mont_mul.h",
68    ],
69    deps = [
70        ":bn_util",
71        ":openssl_includes",
72        "@com_google_absl//absl/log",
73        "@com_google_absl//absl/log:check",
74        "@com_google_absl//absl/strings",
75    ],
76)
77
78cc_library(
79    name = "ec_util",
80    srcs = [
81        "ec_group.cc",
82        "ec_point.cc",
83    ],
84    hdrs = [
85        "ec_group.h",
86        "ec_point.h",
87    ],
88    deps = [
89        ":bn_util",
90        ":openssl_includes",
91        "//private_join_and_compute/util:status_includes",
92        "@com_google_absl//absl/log",
93        "@com_google_absl//absl/log:check",
94        "@com_google_absl//absl/strings",
95    ],
96)
97
98cc_library(
99    name = "elgamal",
100    srcs = [
101        "elgamal.cc",
102    ],
103    hdrs = [
104        "elgamal.h",
105    ],
106    deps = [
107        ":bn_util",
108        ":ec_util",
109        "//private_join_and_compute/util:status_includes",
110        "@com_google_absl//absl/log",
111        "@com_google_absl//absl/memory",
112    ],
113)
114
115cc_library(
116    name = "commutative_elgamal",
117    srcs = [
118        "commutative_elgamal.cc",
119    ],
120    hdrs = [
121        "commutative_elgamal.h",
122    ],
123    deps = [
124        ":bn_util",
125        ":ec_util",
126        ":elgamal",
127        "//private_join_and_compute/util:status_includes",
128        "@com_google_absl//absl/log",
129        "@com_google_absl//absl/strings",
130    ],
131)
132
133cc_library(
134    name = "ec_point_util",
135    srcs = [
136        "ec_point_util.cc",
137    ],
138    hdrs = [
139        "ec_point_util.h",
140    ],
141    deps = [
142        ":bn_util",
143        ":ec_commutative_cipher",
144        ":ec_util",
145        "//private_join_and_compute/util:status_includes",
146        "@com_google_absl//absl/log",
147        "@com_google_absl//absl/strings",
148    ],
149)
150
151cc_library(
152    name = "ec_commutative_cipher",
153    srcs = [
154        "ec_commutative_cipher.cc",
155    ],
156    hdrs = [
157        "ec_commutative_cipher.h",
158    ],
159    deps = [
160        ":bn_util",
161        ":ec_util",
162        ":elgamal",
163        "//private_join_and_compute/util:status_includes",
164        "@com_google_absl//absl/log",
165        "@com_google_absl//absl/log:check",
166        "@com_google_absl//absl/strings",
167    ],
168)
169
170cc_library(
171    name = "fixed_base_exp",
172    srcs = [
173        "fixed_base_exp.cc",
174    ],
175    hdrs = [
176        "fixed_base_exp.h",
177    ],
178    deps = [
179        ":bn_util",
180        ":mont_mul",
181        "//private_join_and_compute/util:status_includes",
182        "@com_google_absl//absl/base",
183        "@com_google_absl//absl/log",
184        "@com_google_absl//absl/strings",
185    ],
186)
187
188cc_library(
189    name = "simultaneous_fixed_bases_exp",
190    srcs = [
191        "simultaneous_fixed_bases_exp.cc",
192    ],
193    hdrs = [
194        "simultaneous_fixed_bases_exp.h",
195    ],
196    deps = [
197        ":bn_util",
198        ":ec_util",
199        ":elgamal",
200        ":mont_mul",
201        ":paillier",
202        "//private_join_and_compute/util:status_includes",
203        "@com_google_absl//absl/strings",
204    ],
205)
206
207cc_test(
208    name = "simultaneous_fixed_bases_exp_test",
209    srcs = [
210        "simultaneous_fixed_bases_exp_test.cc",
211    ],
212    deps = [
213        ":elgamal",
214        ":simultaneous_fixed_bases_exp",
215        "//private_join_and_compute/util:status_includes",
216        "//private_join_and_compute/util:status_testing_includes",
217        "@com_github_google_googletest//:gtest_main",
218    ],
219)
220
221cc_library(
222    name = "two_modulus_crt",
223    srcs = [
224        "two_modulus_crt.cc",
225    ],
226    hdrs = [
227        "two_modulus_crt.h",
228    ],
229    deps = [
230        ":bn_util",
231        "@com_google_absl//absl/strings",
232    ],
233)
234
235grpc_proto_library(
236    name = "paillier_proto",
237    srcs = ["paillier.proto"],
238)
239
240cc_library(
241    name = "paillier",
242    srcs = [
243        "paillier.cc",
244    ],
245    hdrs = [
246        "paillier.h",
247    ],
248    deps = [
249        ":bn_util",
250        ":fixed_base_exp",
251        ":paillier_proto",
252        ":two_modulus_crt",
253        "//private_join_and_compute/util:status_includes",
254        "@com_google_absl//absl/container:node_hash_map",
255        "@com_google_absl//absl/log",
256        "@com_google_absl//absl/log:check",
257        "@com_google_absl//absl/strings",
258    ],
259)
260
261cc_library(
262    name = "shanks_discrete_log",
263    srcs = [
264        "shanks_discrete_log.cc",
265    ],
266    hdrs = [
267        "shanks_discrete_log.h",
268    ],
269    deps = [
270        ":bn_util",
271        ":ec_util",
272        ":elgamal",
273        "//private_join_and_compute/util:status_includes",
274        "@com_google_absl//absl/strings",
275    ],
276)
277
278cc_library(
279    name = "camenisch_shoup",
280    srcs = [
281        "camenisch_shoup.cc",
282    ],
283    hdrs = [
284        "camenisch_shoup.h",
285    ],
286    deps = [
287        ":bn_util",
288        ":fixed_base_exp",
289        "//private_join_and_compute/crypto/proto:big_num_cc_proto",
290        "//private_join_and_compute/crypto/proto:camenisch_shoup_cc_proto",
291        "//private_join_and_compute/crypto/proto:proto_util",
292        "//private_join_and_compute/util:status_includes",
293        "@com_google_absl//absl/strings",
294    ],
295)
296
297cc_test(
298    name = "camenisch_shoup_test",
299    srcs = [
300        "camenisch_shoup_test.cc",
301    ],
302    deps = [
303        ":bn_util",
304        ":camenisch_shoup",
305        "//private_join_and_compute/crypto/proto:camenisch_shoup_cc_proto",
306        "//private_join_and_compute/crypto/proto:proto_util",
307        "//private_join_and_compute/util:status_includes",
308        "//private_join_and_compute/util:status_testing_includes",
309        "@com_github_google_googletest//:gtest_main",
310    ],
311)
312
313cc_library(
314    name = "pedersen_over_zn",
315    srcs = [
316        "pedersen_over_zn.cc",
317    ],
318    hdrs = [
319        "pedersen_over_zn.h",
320    ],
321    deps = [
322        ":bn_util",
323        ":simultaneous_fixed_bases_exp",
324        "//private_join_and_compute/crypto/proto:big_num_cc_proto",
325        "//private_join_and_compute/crypto/proto:pedersen_cc_proto",
326        "//private_join_and_compute/crypto/proto:proto_util",
327        "//private_join_and_compute/util:status_includes",
328        "@com_google_absl//absl/strings",
329    ],
330)
331
332cc_test(
333    name = "pedersen_over_zn_test",
334    size = "medium",
335    srcs = ["pedersen_over_zn_test.cc"],
336    tags = ["requires-net:external"],
337    deps = [
338        ":bn_util",
339        ":pedersen_over_zn",
340        "//private_join_and_compute/crypto/proto:pedersen_cc_proto",
341        "//private_join_and_compute/crypto/proto:proto_util",
342        "//private_join_and_compute/util:status_includes",
343        "//private_join_and_compute/util:status_testing_includes",
344        "@com_github_google_googletest//:gtest_main",
345    ],
346)
347
348grpc_proto_library(
349    name = "ec_key_proto",
350    srcs = ["ec_key.proto"],
351)
352
353grpc_proto_library(
354    name = "elgamal_proto",
355    srcs = ["elgamal.proto"],
356)
357