xref: /aosp_15_r20/external/federated-compute/fcp/secagg/server/BUILD (revision 14675a029014e728ec732f129a32e299b2da0601)
1# Description:
2#   SecAgg server-specific components.
3
4load("//fcp:config.bzl", "FCP_COPTS")
5load("//fcp/tracing:build_defs.bzl", "tracing_schema_cc_library")
6
7package(
8    default_visibility = ["//fcp:internal"],
9)
10
11tracing_schema_cc_library(
12    name = "tracing_schema",
13    srcs = ["tracing_schema.fbs"],
14)
15
16cc_library(
17    name = "experiments_interface",
18    hdrs = ["experiments_interface.h"],
19    copts = FCP_COPTS,
20    deps = ["@com_google_absl//absl/strings"],
21)
22
23cc_library(
24    name = "experiments_names",
25    hdrs = ["experiments_names.h"],
26    copts = FCP_COPTS,
27)
28
29cc_library(
30    name = "secagg_server_protocol_impl",
31    srcs = ["secagg_server_protocol_impl.cc"],
32    hdrs = ["secagg_server_protocol_impl.h"],
33    copts = FCP_COPTS,
34    deps = [
35        ":experiments_interface",
36        ":secagg_scheduler",
37        ":secagg_server_metrics_listener",
38        ":secret_sharing_graph",
39        ":send_to_clients_interface",
40        ":server_cc_proto",
41        ":tracing_schema",
42        "//fcp/base",
43        "//fcp/secagg/shared",
44        "//fcp/secagg/shared:cc_proto",
45        "//fcp/tracing",
46        "@com_google_absl//absl/container:flat_hash_map",
47        "@com_google_absl//absl/container:node_hash_map",
48        "@com_google_absl//absl/status",
49        "@com_google_absl//absl/time",
50    ],
51)
52
53cc_library(
54    name = "secagg_server_metrics_listener",
55    hdrs = [
56        "secagg_server_metrics_listener.h",
57    ],
58    copts = FCP_COPTS,
59    deps = [
60        ":server_cc_proto",
61        "//fcp/secagg/shared:cc_proto",
62    ],
63)
64
65cc_library(
66    name = "send_to_clients_interface",
67    hdrs = [
68        "send_to_clients_interface.h",
69    ],
70    copts = FCP_COPTS,
71    deps = [
72        "//fcp/secagg/shared:cc_proto",
73    ],
74)
75
76cc_library(
77    name = "server",
78    srcs = [
79        "secagg_server.cc",
80        "secagg_server_aborted_state.cc",
81        "secagg_server_completed_state.cc",
82        "secagg_server_prng_running_state.cc",
83        "secagg_server_r0_advertise_keys_state.cc",
84        "secagg_server_r1_share_keys_state.cc",
85        "secagg_server_r2_masked_input_coll_state.cc",
86        "secagg_server_r3_unmasking_state.cc",
87        "secagg_server_state.cc",
88        "secagg_trace_utility.cc",
89    ],
90    hdrs = [
91        "secagg_server.h",
92        "secagg_server_aborted_state.h",
93        "secagg_server_completed_state.h",
94        "secagg_server_prng_running_state.h",
95        "secagg_server_r0_advertise_keys_state.h",
96        "secagg_server_r1_share_keys_state.h",
97        "secagg_server_r2_masked_input_coll_state.h",
98        "secagg_server_r3_unmasking_state.h",
99        "secagg_server_state.h",
100        "secagg_trace_utility.h",
101    ],
102    copts = FCP_COPTS,
103    deps = [
104        ":experiments_interface",
105        ":experiments_names",
106        ":graph_parameter_finder",
107        ":secagg_scheduler",
108        ":secagg_server_metrics_listener",
109        ":secagg_server_protocol_impl",
110        ":secret_sharing_graph",
111        ":secret_sharing_graph_factory",
112        ":send_to_clients_interface",
113        ":server_cc_proto",
114        ":tracing_schema",
115        "//fcp/base",
116        "//fcp/base:scheduler",
117        "//fcp/secagg/server/aes",
118        "//fcp/secagg/shared",
119        "//fcp/secagg/shared:cc_proto",
120        "//fcp/tracing",
121        "@com_google_absl//absl/base:core_headers",
122        "@com_google_absl//absl/container:flat_hash_map",
123        "@com_google_absl//absl/container:flat_hash_set",
124        "@com_google_absl//absl/container:node_hash_set",
125        "@com_google_absl//absl/strings",
126        "@com_google_absl//absl/synchronization",
127        "@com_google_absl//absl/time",
128    ],
129)
130
131cc_library(
132    name = "secret_sharing_graph_factory",
133    hdrs = ["secret_sharing_graph_factory.h"],
134    deps = [
135        ":secret_sharing_complete_graph",
136        ":secret_sharing_graph",
137        ":secret_sharing_harary_graph",
138        "//fcp/base",
139    ],
140)
141
142cc_library(
143    name = "secret_sharing_graph",
144    hdrs = ["secret_sharing_graph.h"],
145    deps = ["//fcp/base"],
146)
147
148cc_library(
149    name = "secret_sharing_complete_graph",
150    hdrs = ["secret_sharing_complete_graph.h"],
151    deps = [
152        ":secret_sharing_graph",
153        "//fcp/base",
154        "@com_google_absl//absl/strings",
155    ],
156)
157
158cc_library(
159    name = "secret_sharing_harary_graph",
160    srcs = [
161        "secret_sharing_harary_graph.cc",
162        "ssl_bit_gen.cc",
163    ],
164    hdrs = [
165        "secret_sharing_harary_graph.h",
166        "ssl_bit_gen.h",
167    ],
168    deps = [
169        ":secret_sharing_graph",
170        "//fcp/base",
171        "@boringssl//:crypto",
172        "@com_google_absl//absl/strings",
173    ],
174)
175
176cc_library(
177    name = "graph_parameter_finder",
178    srcs = ["graph_parameter_finder.cc"],
179    hdrs = [
180        "graph_parameter_finder.h",
181    ],
182    deps = [
183        ":distribution_utilities",
184        ":server_cc_proto",
185        "//fcp/base",
186    ],
187)
188
189cc_library(
190    name = "distribution_utilities",
191    srcs = ["distribution_utilities.cc"],
192    hdrs = [
193        "distribution_utilities.h",
194    ],
195    deps = ["//fcp/base"],
196)
197
198cc_test(
199    name = "distribution_utilities_test",
200    srcs = ["distribution_utilities_test.cc"],
201    deps = [
202        ":distribution_utilities",
203        "//fcp/base",
204        "//fcp/testing",
205        "@com_google_googletest//:gtest_main",
206    ],
207)
208
209cc_test(
210    name = "server-test",
211    size = "small",
212    srcs = [
213        "secagg_server_test.cc",
214    ],
215    copts = FCP_COPTS,
216    deps = [
217        ":server",
218        ":server_cc_proto",
219        ":tracing_schema",
220        "//fcp/base",
221        "//fcp/secagg/shared",
222        "//fcp/secagg/shared:cc_proto",
223        "//fcp/secagg/testing:common_mocks",
224        "//fcp/secagg/testing/server:experiments",
225        "//fcp/secagg/testing/server:server_mocks",
226        "//fcp/testing",
227        "//fcp/tracing:test_tracing_recorder",
228        "@com_google_googletest//:gtest_main",
229    ],
230)
231
232cc_test(
233    name = "state-test",
234    size = "small",
235    srcs = [
236        "secagg_server_aborted_state_test.cc",
237        "secagg_server_completed_state_test.cc",
238        "secagg_server_prng_running_state_test.cc",
239        "secagg_server_r0_advertise_keys_state_test.cc",
240        "secagg_server_r1_share_keys_state_test.cc",
241        "secagg_server_r2_masked_input_coll_state_test.cc",
242        "secagg_server_r3_unmasking_state_test.cc",
243    ],
244    copts = FCP_COPTS,
245    deps = [
246        ":experiments_interface",
247        ":experiments_names",
248        ":secagg_scheduler",
249        ":secret_sharing_graph_factory",
250        ":send_to_clients_interface",
251        ":server",
252        ":server_cc_proto",
253        "//fcp/base",
254        "//fcp/base:scheduler",
255        "//fcp/secagg/server/aes",
256        "//fcp/secagg/shared",
257        "//fcp/secagg/shared:cc_proto",
258        "//fcp/secagg/testing",
259        "//fcp/secagg/testing:common_mocks",
260        "//fcp/secagg/testing/server:async_runner",
261        "//fcp/secagg/testing/server:experiments",
262        "//fcp/secagg/testing/server:server_mocks",
263        "//fcp/testing",
264        "//fcp/tracing:test_tracing_recorder",
265        "@com_google_absl//absl/container:flat_hash_map",
266        "@com_google_absl//absl/container:flat_hash_set",
267        "@com_google_absl//absl/container:node_hash_map",
268        "@com_google_absl//absl/container:node_hash_set",
269        "@com_google_absl//absl/strings",
270        "@com_google_googletest//:gtest_main",
271    ],
272)
273
274cc_test(
275    name = "secret_sharing_harary_graph_test",
276    srcs = ["secret_sharing_harary_graph_test.cc"],
277    deps = [
278        ":secret_sharing_graph",
279        ":secret_sharing_graph_factory",
280        "//fcp/testing",
281        "@com_google_absl//absl/status",
282        "@com_google_googletest//:gtest_main",
283    ],
284)
285
286cc_test(
287    name = "secret_sharing_complete_graph_test",
288    srcs = ["secret_sharing_complete_graph_test.cc"],
289    deps = [
290        ":secret_sharing_graph",
291        ":secret_sharing_graph_factory",
292        "//fcp/testing",
293        "@com_google_absl//absl/status",
294        "@com_google_googletest//:gtest_main",
295    ],
296)
297
298cc_test(
299    name = "graph_parameter_finder_test",
300    srcs = ["graph_parameter_finder_test.cc"],
301    deps = [
302        ":graph_parameter_finder",
303        ":server_cc_proto",
304        "//fcp/testing",
305        "@com_google_googletest//:gtest_main",
306    ],
307)
308
309cc_library(
310    name = "secagg_scheduler",
311    srcs = [
312        "secagg_scheduler.cc",
313    ],
314    hdrs = [
315        "secagg_scheduler.h",
316    ],
317    deps = [
318        "//fcp/base",
319        "//fcp/base:clock",
320        "//fcp/base:reentrancy_guard",
321        "//fcp/base:scheduler",
322        "@com_google_absl//absl/synchronization",
323        "@com_google_absl//absl/time",
324    ],
325)
326
327cc_test(
328    name = "secagg_scheduler_test",
329    srcs = ["secagg_scheduler_test.cc"],
330    copts = FCP_COPTS,
331    deps = [
332        ":secagg_scheduler",
333        "//fcp/base",
334        "//fcp/base:scheduler",
335        "//fcp/base:simulated_clock",
336        "@com_google_absl//absl/synchronization",
337        "@com_google_absl//absl/time",
338        "@com_google_googletest//:gtest_main",
339    ],
340)
341
342proto_library(
343    name = "server_proto",
344    srcs = [
345        "secagg_server_enums.proto",
346        "secagg_server_messages.proto",
347    ],
348    visibility = ["//visibility:public"],
349)
350
351java_proto_library(
352    name = "server_java_proto",
353    deps = [":server_proto"],
354)
355
356cc_proto_library(
357    name = "server_cc_proto",
358    visibility = ["//visibility:public"],
359    deps = [":server_proto"],
360)
361