xref: /aosp_15_r20/external/tink/cc/hybrid/BUILD.bazel (revision e7b1675dde1b92d52ec075b0a92829627f2c52a5)
1package(default_visibility = ["//:__subpackages__"])
2
3licenses(["notice"])
4
5cc_library(
6    name = "hybrid_config",
7    srcs = ["hybrid_config.cc"],
8    hdrs = ["hybrid_config.h"],
9    include_prefix = "tink/hybrid",
10    visibility = ["//visibility:public"],
11    deps = [
12        ":ecies_aead_hkdf_private_key_manager",
13        ":ecies_aead_hkdf_public_key_manager",
14        ":hybrid_decrypt_wrapper",
15        ":hybrid_encrypt_wrapper",
16        "//:registry",
17        "//aead:aead_config",
18        "//config:config_util",
19        "//config:tink_fips",
20        "//proto:config_cc_proto",
21        "//util:status",
22        "@com_google_absl//absl/base:core_headers",
23        "@com_google_absl//absl/memory",
24    ],
25)
26
27cc_library(
28    name = "hpke_config",
29    srcs = ["hpke_config.cc"],
30    hdrs = ["hpke_config.h"],
31    include_prefix = "tink/hybrid",
32    tags = ["requires_boringcrypto_update"],
33    visibility = ["//visibility:public"],
34    deps = [
35        ":hybrid_decrypt_wrapper",
36        ":hybrid_encrypt_wrapper",
37        "//:registry",
38        "//aead:aead_config",
39        "//config:tink_fips",
40        "//hybrid/internal:hpke_private_key_manager",
41        "//hybrid/internal:hpke_public_key_manager",
42        "//util:status",
43    ],
44)
45
46cc_library(
47    name = "hybrid_decrypt_wrapper",
48    srcs = ["hybrid_decrypt_wrapper.cc"],
49    hdrs = ["hybrid_decrypt_wrapper.h"],
50    include_prefix = "tink/hybrid",
51    visibility = ["//visibility:public"],
52    deps = [
53        "//:crypto_format",
54        "//:hybrid_decrypt",
55        "//:primitive_set",
56        "//:primitive_wrapper",
57        "//internal:monitoring_util",
58        "//internal:registry_impl",
59        "//internal:util",
60        "//monitoring",
61        "//proto:tink_cc_proto",
62        "//util:status",
63        "//util:statusor",
64        "@com_google_absl//absl/status",
65        "@com_google_absl//absl/strings",
66    ],
67)
68
69cc_library(
70    name = "hybrid_encrypt_wrapper",
71    srcs = ["hybrid_encrypt_wrapper.cc"],
72    hdrs = ["hybrid_encrypt_wrapper.h"],
73    include_prefix = "tink/hybrid",
74    visibility = ["//visibility:public"],
75    deps = [
76        "//:crypto_format",
77        "//:hybrid_encrypt",
78        "//:primitive_set",
79        "//:primitive_wrapper",
80        "//internal:monitoring_util",
81        "//internal:registry_impl",
82        "//internal:util",
83        "//monitoring",
84        "//proto:tink_cc_proto",
85        "//util:status",
86        "//util:statusor",
87        "@com_google_absl//absl/status",
88        "@com_google_absl//absl/strings",
89    ],
90)
91
92cc_library(
93    name = "hybrid_decrypt_factory",
94    srcs = ["hybrid_decrypt_factory.cc"],
95    hdrs = ["hybrid_decrypt_factory.h"],
96    include_prefix = "tink/hybrid",
97    deps = [
98        ":hybrid_decrypt_wrapper",
99        "//:hybrid_decrypt",
100        "//:key_manager",
101        "//:keyset_handle",
102        "//:registry",
103        "//util:status",
104        "//util:statusor",
105        "@com_google_absl//absl/base:core_headers",
106    ],
107)
108
109cc_library(
110    name = "hybrid_encrypt_factory",
111    srcs = ["hybrid_encrypt_factory.cc"],
112    hdrs = ["hybrid_encrypt_factory.h"],
113    include_prefix = "tink/hybrid",
114    deps = [
115        ":hybrid_encrypt_wrapper",
116        "//:hybrid_encrypt",
117        "//:key_manager",
118        "//:keyset_handle",
119        "//:registry",
120        "//util:status",
121        "//util:statusor",
122        "@com_google_absl//absl/base:core_headers",
123    ],
124)
125
126cc_library(
127    name = "hybrid_key_templates",
128    srcs = ["hybrid_key_templates.cc"],
129    hdrs = ["hybrid_key_templates.h"],
130    include_prefix = "tink/hybrid",
131    visibility = ["//visibility:public"],
132    deps = [
133        "//aead:aead_key_templates",
134        "//daead:deterministic_aead_key_templates",
135        "//proto:common_cc_proto",
136        "//proto:ecies_aead_hkdf_cc_proto",
137        "//proto:hpke_cc_proto",
138        "//proto:tink_cc_proto",
139        "@com_google_absl//absl/strings",
140    ],
141)
142
143cc_library(
144    name = "ecies_aead_hkdf_dem_helper",
145    srcs = ["ecies_aead_hkdf_dem_helper.cc"],
146    hdrs = ["ecies_aead_hkdf_dem_helper.h"],
147    include_prefix = "tink/hybrid",
148    visibility = ["//visibility:private"],
149    deps = [
150        "//:aead",
151        "//:deterministic_aead",
152        "//aead:aes_ctr_hmac_aead_key_manager",
153        "//daead/subtle:aead_or_daead",
154        "//proto:aes_ctr_cc_proto",
155        "//proto:aes_ctr_hmac_aead_cc_proto",
156        "//proto:aes_gcm_cc_proto",
157        "//proto:aes_siv_cc_proto",
158        "//proto:common_cc_proto",
159        "//proto:hmac_cc_proto",
160        "//proto:tink_cc_proto",
161        "//proto:xchacha20_poly1305_cc_proto",
162        "//subtle:aes_gcm_boringssl",
163        "//subtle:aes_siv_boringssl",
164        "//subtle:xchacha20_poly1305_boringssl",
165        "//util:errors",
166        "//util:protobuf_helper",
167        "//util:secret_data",
168        "//util:statusor",
169        "@com_google_absl//absl/memory",
170        "@com_google_absl//absl/status",
171        "@com_google_absl//absl/status:statusor",
172        "@com_google_absl//absl/strings",
173    ],
174)
175
176cc_library(
177    name = "ecies_aead_hkdf_hybrid_decrypt",
178    srcs = ["ecies_aead_hkdf_hybrid_decrypt.cc"],
179    hdrs = ["ecies_aead_hkdf_hybrid_decrypt.h"],
180    include_prefix = "tink/hybrid",
181    visibility = ["//visibility:private"],
182    deps = [
183        ":ecies_aead_hkdf_dem_helper",
184        "//:hybrid_decrypt",
185        "//internal:ec_util",
186        "//proto:ecies_aead_hkdf_cc_proto",
187        "//subtle:ecies_hkdf_recipient_kem_boringssl",
188        "//util:enums",
189        "//util:secret_data",
190        "//util:status",
191        "//util:statusor",
192        "@com_google_absl//absl/memory",
193        "@com_google_absl//absl/status",
194    ],
195)
196
197cc_library(
198    name = "ecies_aead_hkdf_hybrid_encrypt",
199    srcs = ["ecies_aead_hkdf_hybrid_encrypt.cc"],
200    hdrs = ["ecies_aead_hkdf_hybrid_encrypt.h"],
201    include_prefix = "tink/hybrid",
202    visibility = ["//visibility:private"],
203    deps = [
204        ":ecies_aead_hkdf_dem_helper",
205        "//:aead",
206        "//:hybrid_encrypt",
207        "//proto:ecies_aead_hkdf_cc_proto",
208        "//subtle:ecies_hkdf_sender_kem_boringssl",
209        "//util:enums",
210        "//util:status",
211        "//util:statusor",
212        "@com_google_absl//absl/memory",
213        "@com_google_absl//absl/status",
214        "@com_google_absl//absl/strings",
215    ],
216)
217
218cc_library(
219    name = "ecies_aead_hkdf_private_key_manager",
220    srcs = ["ecies_aead_hkdf_private_key_manager.cc"],
221    hdrs = ["ecies_aead_hkdf_private_key_manager.h"],
222    include_prefix = "tink/hybrid",
223    deps = [
224        ":ecies_aead_hkdf_hybrid_decrypt",
225        ":ecies_aead_hkdf_public_key_manager",
226        "//:core/key_type_manager",
227        "//:core/private_key_type_manager",
228        "//:hybrid_decrypt",
229        "//:key_manager",
230        "//internal:ec_util",
231        "//proto:ecies_aead_hkdf_cc_proto",
232        "//proto:tink_cc_proto",
233        "//util:constants",
234        "//util:enums",
235        "//util:errors",
236        "//util:protobuf_helper",
237        "//util:secret_data",
238        "//util:status",
239        "//util:statusor",
240        "//util:validation",
241        "@com_google_absl//absl/memory",
242        "@com_google_absl//absl/status",
243        "@com_google_absl//absl/strings",
244    ],
245)
246
247cc_library(
248    name = "ecies_aead_hkdf_public_key_manager",
249    srcs = ["ecies_aead_hkdf_public_key_manager.cc"],
250    hdrs = ["ecies_aead_hkdf_public_key_manager.h"],
251    include_prefix = "tink/hybrid",
252    deps = [
253        ":ecies_aead_hkdf_hybrid_encrypt",
254        "//:core/key_type_manager",
255        "//:hybrid_encrypt",
256        "//:key_manager",
257        "//proto:common_cc_proto",
258        "//proto:ecies_aead_hkdf_cc_proto",
259        "//proto:tink_cc_proto",
260        "//util:constants",
261        "//util:errors",
262        "//util:protobuf_helper",
263        "//util:status",
264        "//util:statusor",
265        "//util:validation",
266        "@com_google_absl//absl/memory",
267        "@com_google_absl//absl/status",
268        "@com_google_absl//absl/strings",
269    ],
270)
271
272cc_library(
273    name = "failing_hybrid",
274    srcs = ["failing_hybrid.cc"],
275    hdrs = ["failing_hybrid.h"],
276    include_prefix = "tink/hybrid",
277    deps = [
278        "//:hybrid_decrypt",
279        "//:hybrid_encrypt",
280        "@com_google_absl//absl/strings",
281    ],
282)
283
284cc_library(
285    name = "hybrid_parameters",
286    hdrs = ["hybrid_parameters.h"],
287    include_prefix = "tink/hybrid",
288    deps = ["//:parameters"],
289)
290
291cc_library(
292    name = "hybrid_public_key",
293    hdrs = ["hybrid_public_key.h"],
294    include_prefix = "tink/hybrid",
295    deps = [
296        ":hybrid_parameters",
297        "//:key",
298        "@com_google_absl//absl/strings",
299    ],
300)
301
302cc_library(
303    name = "hybrid_private_key",
304    hdrs = ["hybrid_private_key.h"],
305    include_prefix = "tink/hybrid",
306    deps = [
307        ":hybrid_parameters",
308        ":hybrid_public_key",
309        "//:key",
310        "//:private_key",
311        "@com_google_absl//absl/strings",
312    ],
313)
314
315# tests
316
317cc_test(
318    name = "hybrid_config_test",
319    size = "small",
320    srcs = ["hybrid_config_test.cc"],
321    tags = ["fips"],
322    deps = [
323        ":ecies_aead_hkdf_private_key_manager",
324        ":ecies_aead_hkdf_public_key_manager",
325        ":hybrid_config",
326        ":hybrid_key_templates",
327        "//:hybrid_decrypt",
328        "//:hybrid_encrypt",
329        "//:keyset_handle",
330        "//:registry",
331        "//internal:fips_utils",
332        "//util:status",
333        "//util:test_matchers",
334        "//util:test_util",
335        "@boringssl//:crypto",
336        "@com_google_absl//absl/status",
337        "@com_google_googletest//:gtest_main",
338    ],
339)
340
341cc_test(
342    name = "hpke_config_test",
343    size = "small",
344    srcs = ["hpke_config_test.cc"],
345    tags = ["requires_boringcrypto_update"],
346    deps = [
347        ":hpke_config",
348        ":hybrid_key_templates",
349        "//:hybrid_decrypt",
350        "//:hybrid_encrypt",
351        "//:keyset_handle",
352        "//:registry",
353        "//config:tink_fips",
354        "//hybrid/internal:hpke_private_key_manager",
355        "//hybrid/internal:hpke_public_key_manager",
356        "//util:status",
357        "//util:test_matchers",
358        "//util:test_util",
359        "@com_google_absl//absl/status",
360        "@com_google_googletest//:gtest_main",
361    ],
362)
363
364cc_test(
365    name = "hybrid_decrypt_wrapper_test",
366    size = "small",
367    srcs = ["hybrid_decrypt_wrapper_test.cc"],
368    deps = [
369        ":failing_hybrid",
370        ":hybrid_decrypt_wrapper",
371        "//:hybrid_decrypt",
372        "//:hybrid_encrypt",
373        "//:primitive_set",
374        "//internal:registry_impl",
375        "//monitoring",
376        "//monitoring:monitoring_client_mocks",
377        "//proto:tink_cc_proto",
378        "//util:status",
379        "//util:test_matchers",
380        "//util:test_util",
381        "@com_google_absl//absl/strings",
382        "@com_google_googletest//:gtest_main",
383    ],
384)
385
386cc_test(
387    name = "hybrid_encrypt_wrapper_test",
388    size = "small",
389    srcs = ["hybrid_encrypt_wrapper_test.cc"],
390    deps = [
391        ":failing_hybrid",
392        ":hybrid_encrypt_wrapper",
393        "//:hybrid_encrypt",
394        "//:primitive_set",
395        "//internal:registry_impl",
396        "//monitoring",
397        "//monitoring:monitoring_client_mocks",
398        "//proto:tink_cc_proto",
399        "//util:status",
400        "//util:test_matchers",
401        "//util:test_util",
402        "@com_google_absl//absl/status",
403        "@com_google_googletest//:gtest_main",
404    ],
405)
406
407cc_test(
408    name = "hybrid_decrypt_factory_test",
409    size = "small",
410    srcs = ["hybrid_decrypt_factory_test.cc"],
411    deps = [
412        ":ecies_aead_hkdf_public_key_manager",
413        ":hybrid_config",
414        ":hybrid_decrypt_factory",
415        "//:crypto_format",
416        "//:hybrid_decrypt",
417        "//:hybrid_encrypt",
418        "//:keyset_handle",
419        "//proto:ecies_aead_hkdf_cc_proto",
420        "//proto:tink_cc_proto",
421        "//util:status",
422        "//util:test_keyset_handle",
423        "//util:test_util",
424        "@com_google_absl//absl/memory",
425        "@com_google_googletest//:gtest_main",
426    ],
427)
428
429cc_test(
430    name = "hybrid_encrypt_factory_test",
431    size = "small",
432    srcs = ["hybrid_encrypt_factory_test.cc"],
433    deps = [
434        ":hybrid_config",
435        ":hybrid_encrypt_factory",
436        "//:crypto_format",
437        "//:hybrid_encrypt",
438        "//:keyset_handle",
439        "//proto:ecies_aead_hkdf_cc_proto",
440        "//proto:tink_cc_proto",
441        "//util:status",
442        "//util:test_keyset_handle",
443        "//util:test_util",
444        "@com_google_googletest//:gtest_main",
445    ],
446)
447
448cc_test(
449    name = "hybrid_key_templates_test",
450    size = "small",
451    srcs = ["hybrid_key_templates_test.cc"],
452    deps = [
453        ":ecies_aead_hkdf_private_key_manager",
454        ":hybrid_config",
455        ":hybrid_key_templates",
456        "//aead:aead_key_templates",
457        "//daead:deterministic_aead_key_templates",
458        "//hybrid/internal:hpke_private_key_manager",
459        "//proto:common_cc_proto",
460        "//proto:ecies_aead_hkdf_cc_proto",
461        "//proto:hpke_cc_proto",
462        "//proto:tink_cc_proto",
463        "//util:test_matchers",
464        "@com_google_googletest//:gtest_main",
465    ],
466)
467
468cc_test(
469    name = "ecies_aead_hkdf_dem_helper_test",
470    size = "small",
471    srcs = ["ecies_aead_hkdf_dem_helper_test.cc"],
472    deps = [
473        ":ecies_aead_hkdf_dem_helper",
474        "//aead:aes_gcm_key_manager",
475        "//daead:aes_siv_key_manager",
476        "//util:secret_data",
477        "//util:test_matchers",
478        "//util:test_util",
479        "@com_google_absl//absl/status",
480        "@com_google_googletest//:gtest_main",
481    ],
482)
483
484cc_test(
485    name = "ecies_aead_hkdf_hybrid_decrypt_test",
486    size = "large",
487    srcs = ["ecies_aead_hkdf_hybrid_decrypt_test.cc"],
488    deps = [
489        ":ecies_aead_hkdf_hybrid_decrypt",
490        ":ecies_aead_hkdf_hybrid_encrypt",
491        "//:hybrid_decrypt",
492        "//aead:aes_ctr_hmac_aead_key_manager",
493        "//aead:aes_gcm_key_manager",
494        "//aead:xchacha20_poly1305_key_manager",
495        "//daead:aes_siv_key_manager",
496        "//internal:ec_util",
497        "//internal:ssl_util",
498        "//proto:aes_gcm_cc_proto",
499        "//proto:common_cc_proto",
500        "//proto:ecies_aead_hkdf_cc_proto",
501        "//subtle:random",
502        "//util:enums",
503        "//util:statusor",
504        "//util:test_matchers",
505        "//util:test_util",
506        "@com_google_absl//absl/memory",
507        "@com_google_googletest//:gtest_main",
508    ],
509)
510
511cc_test(
512    name = "ecies_aead_hkdf_hybrid_encrypt_test",
513    size = "small",
514    srcs = ["ecies_aead_hkdf_hybrid_encrypt_test.cc"],
515    deps = [
516        ":ecies_aead_hkdf_hybrid_encrypt",
517        "//:hybrid_encrypt",
518        "//aead:aes_gcm_key_manager",
519        "//internal:ec_util",
520        "//proto:common_cc_proto",
521        "//proto:ecies_aead_hkdf_cc_proto",
522        "//util:enums",
523        "//util:statusor",
524        "//util:test_util",
525        "@com_google_absl//absl/memory",
526        "@com_google_googletest//:gtest_main",
527    ],
528)
529
530cc_test(
531    name = "ecies_aead_hkdf_private_key_manager_test",
532    size = "small",
533    srcs = ["ecies_aead_hkdf_private_key_manager_test.cc"],
534    deps = [
535        ":ecies_aead_hkdf_private_key_manager",
536        ":ecies_aead_hkdf_public_key_manager",
537        ":hybrid_key_templates",
538        "//:hybrid_decrypt",
539        "//:registry",
540        "//aead:aead_key_templates",
541        "//aead:aes_ctr_hmac_aead_key_manager",
542        "//aead:aes_gcm_key_manager",
543        "//proto:aes_eax_cc_proto",
544        "//proto:common_cc_proto",
545        "//proto:ecies_aead_hkdf_cc_proto",
546        "//proto:tink_cc_proto",
547        "//subtle:hybrid_test_util",
548        "//util:status",
549        "//util:statusor",
550        "//util:test_matchers",
551        "//util:test_util",
552        "@com_google_absl//absl/status",
553        "@com_google_googletest//:gtest_main",
554    ],
555)
556
557cc_test(
558    name = "ecies_aead_hkdf_public_key_manager_test",
559    size = "small",
560    srcs = ["ecies_aead_hkdf_public_key_manager_test.cc"],
561    deps = [
562        ":ecies_aead_hkdf_private_key_manager",
563        ":ecies_aead_hkdf_public_key_manager",
564        "//:hybrid_encrypt",
565        "//:registry",
566        "//aead:aead_key_templates",
567        "//aead:aes_gcm_key_manager",
568        "//proto:aes_eax_cc_proto",
569        "//proto:common_cc_proto",
570        "//proto:ecies_aead_hkdf_cc_proto",
571        "//proto:tink_cc_proto",
572        "//util:status",
573        "//util:statusor",
574        "//util:test_matchers",
575        "//util:test_util",
576        "@com_google_absl//absl/status",
577        "@com_google_googletest//:gtest_main",
578    ],
579)
580
581cc_test(
582    name = "failing_hybrid_test",
583    srcs = ["failing_hybrid_test.cc"],
584    deps = [
585        ":failing_hybrid",
586        "//util:test_matchers",
587        "@com_google_absl//absl/status",
588        "@com_google_googletest//:gtest_main",
589    ],
590)
591