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