tink_module(aead)

add_subdirectory(internal)

tink_cc_library(
  NAME aead_wrapper
  SRCS
    aead_wrapper.cc
    aead_wrapper.h
  DEPS
    absl::memory
    absl::status
    absl::strings
    tink::core::aead
    tink::core::crypto_format
    tink::core::primitive_set
    tink::core::primitive_wrapper
    tink::internal::monitoring
    tink::internal::monitoring_util
    tink::internal::registry_impl
    tink::internal::util
    tink::util::status
    tink::util::statusor
)

tink_cc_library(
  NAME cord_aead
  SRCS
    cord_aead.h
  DEPS
    absl::cord
    tink::util::statusor
)

tink_cc_library(
  NAME cord_aead_wrapper
  SRCS
    cord_aead_wrapper.cc
    cord_aead_wrapper.h
  DEPS
    tink::aead::cord_aead
    absl::status
    absl::cord
    tink::core::crypto_format
    tink::core::primitive_set
    tink::core::primitive_wrapper
    tink::util::status
    tink::util::statusor
)

tink_cc_library(
  NAME aead_config
  SRCS
    aead_config.cc
    aead_config.h
  DEPS
    tink::aead::aead_wrapper
    tink::aead::aes_ctr_hmac_aead_key_manager
    tink::aead::aes_ctr_hmac_aead_proto_serialization
    tink::aead::aes_eax_key_manager
    tink::aead::aes_eax_proto_serialization
    tink::aead::aes_gcm_key_manager
    tink::aead::aes_gcm_proto_serialization
    tink::aead::aes_gcm_siv_key_manager
    tink::aead::aes_gcm_siv_proto_serialization
    tink::aead::chacha20_poly1305_proto_serialization
    tink::aead::kms_aead_key_manager
    tink::aead::kms_envelope_aead_key_manager
    tink::aead::legacy_kms_aead_proto_serialization
    tink::aead::legacy_kms_envelope_aead_proto_serialization
    tink::aead::x_aes_gcm_key_manager
    tink::aead::x_aes_gcm_proto_serialization
    tink::aead::xchacha20_poly1305_key_manager
    tink::aead::xchacha20_poly1305_proto_serialization
    absl::core_headers
    absl::memory
    absl::status
    tink::core::registry
    tink::config::tink_fips
    tink::mac::mac_config
    tink::util::status
    tink::proto::config_cc_proto
)

tink_cc_library(
  NAME aead_factory
  SRCS
    aead_factory.cc
    aead_factory.h
  DEPS
    tink::aead::aead_wrapper
    absl::core_headers
    absl::memory
    tink::core::aead
    tink::core::key_manager
    tink::core::keyset_handle
    tink::core::registry
    tink::util::status
    tink::util::statusor
)

tink_cc_library(
  NAME aead_key_templates
  SRCS
    aead_key_templates.cc
    aead_key_templates.h
  DEPS
    absl::core_headers
    absl::strings
    tink::proto::aes_ctr_cc_proto
    tink::proto::aes_ctr_hmac_aead_cc_proto
    tink::proto::aes_eax_cc_proto
    tink::proto::aes_gcm_cc_proto
    tink::proto::aes_gcm_siv_cc_proto
    tink::proto::common_cc_proto
    tink::proto::hmac_cc_proto
    tink::proto::kms_envelope_cc_proto
    tink::proto::tink_cc_proto
    tink::proto::x_aes_gcm_cc_proto
)

tink_cc_library(
  NAME aes_eax_key_manager
  SRCS
    aes_eax_key_manager.h
  DEPS
    absl::memory
    absl::status
    absl::strings
    tink::core::aead
    tink::core::key_type_manager
    tink::core::template_util
    tink::subtle::aes_eax_boringssl
    tink::subtle::random
    tink::util::constants
    tink::util::secret_data
    tink::util::status
    tink::util::statusor
    tink::util::validation
    tink::proto::aes_eax_cc_proto
    tink::proto::tink_cc_proto
)

tink_cc_library(
  NAME aes_gcm_key_manager
  SRCS
    aes_gcm_key_manager.h
  DEPS
    tink::aead::cord_aead
    absl::memory
    absl::status
    absl::strings
    tink::core::aead
    tink::core::key_type_manager
    tink::core::template_util
    tink::core::input_stream
    tink::aead::internal::cord_aes_gcm_boringssl
    tink::internal::fips_utils
    tink::subtle::aes_gcm_boringssl
    tink::subtle::random
    tink::util::constants
    tink::util::input_stream_util
    tink::util::secret_data
    tink::util::status
    tink::util::statusor
    tink::util::validation
    tink::proto::aes_gcm_cc_proto
    tink::proto::tink_cc_proto
)

tink_cc_library(
  NAME aes_gcm_siv_key_manager
  SRCS
    aes_gcm_siv_key_manager.h
  DEPS
    absl::memory
    absl::strings
    tink::core::aead
    tink::core::key_type_manager
    tink::core::template_util
    tink::subtle::aes_gcm_siv_boringssl
    tink::subtle::random
    tink::util::constants
    tink::util::secret_data
    tink::util::status
    tink::util::statusor
    tink::util::validation
    tink::proto::aes_gcm_siv_cc_proto
    tink::proto::tink_cc_proto
)

tink_cc_library(
  NAME aes_ctr_hmac_aead_key_manager
  SRCS
    aes_ctr_hmac_aead_key_manager.cc
    aes_ctr_hmac_aead_key_manager.h
  DEPS
    absl::memory
    absl::status
    absl::statusor
    absl::strings
    tink::core::aead
    tink::core::key_type_manager
    tink::core::template_util
    tink::core::input_stream
    tink::core::mac
    tink::internal::fips_utils
    tink::mac::hmac_key_manager
    tink::subtle::aes_ctr_boringssl
    tink::subtle::encrypt_then_authenticate
    tink::subtle::ind_cpa_cipher
    tink::subtle::random
    tink::util::constants
    tink::util::enums
    tink::util::input_stream_util
    tink::util::secret_data
    tink::util::status
    tink::util::statusor
    tink::util::validation
    tink::proto::aes_ctr_cc_proto
    tink::proto::aes_ctr_hmac_aead_cc_proto
    tink::proto::common_cc_proto
    tink::proto::hmac_cc_proto
    tink::proto::tink_cc_proto
)

tink_cc_library(
  NAME xchacha20_poly1305_key_manager
  SRCS
    xchacha20_poly1305_key_manager.h
  DEPS
    absl::memory
    absl::status
    absl::strings
    tink::core::aead
    tink::core::key_type_manager
    tink::core::template_util
    tink::core::input_stream
    tink::subtle::subtle
    tink::subtle::xchacha20_poly1305_boringssl
    tink::util::constants
    tink::util::input_stream_util
    tink::util::secret_data
    tink::util::status
    tink::util::statusor
    tink::util::validation
    tink::proto::tink_cc_proto
    tink::proto::xchacha20_poly1305_cc_proto
)

tink_cc_library(
  NAME kms_aead_key_manager
  SRCS
    kms_aead_key_manager.h
  DEPS
    absl::memory
    absl::status
    absl::strings
    tink::core::aead
    tink::core::key_type_manager
    tink::core::template_util
    tink::core::kms_client
    tink::core::kms_clients
    tink::util::constants
    tink::util::status
    tink::util::statusor
    tink::util::validation
    tink::proto::kms_aead_cc_proto
    tink::proto::tink_cc_proto
)

tink_cc_library(
  NAME kms_envelope_aead
  SRCS
    kms_envelope_aead.cc
    kms_envelope_aead.h
  DEPS
    absl::memory
    absl::status
    absl::statusor
    absl::strings
    tink::core::aead
    tink::core::registry
    tink::aead::internal::aead_util
    tink::internal::endian
    tink::util::status
    tink::util::statusor
    tink::proto::tink_cc_proto
)

tink_cc_library(
  NAME kms_envelope_aead_key_manager
  SRCS
    kms_envelope_aead_key_manager.cc
    kms_envelope_aead_key_manager.h
  DEPS
    tink::aead::kms_envelope_aead
    absl::memory
    absl::status
    absl::strings
    tink::core::aead
    tink::core::key_type_manager
    tink::core::template_util
    tink::core::kms_client
    tink::core::kms_clients
    tink::aead::internal::aead_util
    tink::internal::fips_utils
    tink::util::constants
    tink::util::status
    tink::util::statusor
    tink::util::validation
    tink::proto::kms_envelope_cc_proto
    tink::proto::tink_cc_proto
)

tink_cc_library(
  NAME mock_aead
  SRCS
    mock_aead.h
  DEPS
    gmock
    absl::strings
    tink::core::aead
    tink::util::statusor
  TESTONLY
)

tink_cc_library(
  NAME failing_aead
  SRCS
    failing_aead.cc
    failing_aead.h
  DEPS
    absl::memory
    absl::status
    absl::strings
    tink::core::aead
    tink::util::status
    tink::util::statusor
  TESTONLY
)

tink_cc_library(
  NAME aead_parameters
  SRCS
    aead_parameters.h
  DEPS
    tink::core::parameters
)

tink_cc_library(
  NAME aead_key
  SRCS
    aead_key.h
  DEPS
    tink::aead::aead_parameters
    absl::strings
    tink::core::key
)

tink_cc_library(
  NAME aes_gcm_parameters
  SRCS
    aes_gcm_parameters.cc
    aes_gcm_parameters.h
  DEPS
    tink::aead::aead_parameters
    absl::status
    absl::strings
    tink::core::parameters
    tink::util::status
    tink::util::statusor
)

tink_cc_library(
  NAME aes_gcm_key
  SRCS
    aes_gcm_key.cc
    aes_gcm_key.h
  DEPS
    tink::aead::aead_key
    tink::aead::aes_gcm_parameters
    absl::status
    absl::statusor
    absl::strings
    absl::optional
    tink::core::key
    tink::core::partial_key_access_token
    tink::core::restricted_data
    tink::internal::output_prefix_util
    tink::util::status
    tink::util::statusor
)

tink_cc_library(
  NAME aes_gcm_proto_serialization
  SRCS
    aes_gcm_proto_serialization.h
  DEPS
    tink::aead::internal::aes_gcm_proto_serialization_impl
    tink::internal::mutable_serialization_registry
    tink::util::status
)

tink_cc_library(
  NAME aes_gcm_siv_parameters
  SRCS
    aes_gcm_siv_parameters.cc
    aes_gcm_siv_parameters.h
  DEPS
    tink::aead::aead_parameters
    absl::status
    absl::strings
    tink::core::parameters
    tink::util::status
    tink::util::statusor
)

tink_cc_library(
  NAME aes_gcm_siv_key
  SRCS
    aes_gcm_siv_key.cc
    aes_gcm_siv_key.h
  DEPS
    tink::aead::aead_key
    tink::aead::aes_gcm_siv_parameters
    absl::status
    absl::statusor
    absl::strings
    absl::optional
    tink::core::key
    tink::core::partial_key_access_token
    tink::core::restricted_data
    tink::internal::output_prefix_util
    tink::util::status
    tink::util::statusor
)

tink_cc_library(
  NAME aes_gcm_siv_proto_serialization
  SRCS
    aes_gcm_siv_proto_serialization.h
  DEPS
    tink::aead::internal::aes_gcm_siv_proto_serialization_impl
    tink::internal::mutable_serialization_registry
    tink::util::status
)

tink_cc_library(
  NAME config_v0
  SRCS
    config_v0.cc
    config_v0.h
  DEPS
    absl::absl_check
    tink::core::configuration
    tink::aead::internal::config_v0
)

tink_cc_library(
  NAME key_gen_config_v0
  SRCS
    key_gen_config_v0.cc
    key_gen_config_v0.h
  DEPS
    absl::absl_check
    tink::core::key_gen_configuration
    tink::aead::internal::key_gen_config_v0
)

tink_cc_library(
  NAME aes_eax_parameters
  SRCS
    aes_eax_parameters.cc
    aes_eax_parameters.h
  DEPS
    tink::aead::aead_parameters
    absl::flat_hash_set
    absl::status
    absl::strings
    absl::optional
    tink::core::parameters
    tink::util::status
    tink::util::statusor
)

tink_cc_library(
  NAME aes_eax_key
  SRCS
    aes_eax_key.cc
    aes_eax_key.h
  DEPS
    tink::aead::aead_key
    tink::aead::aes_eax_parameters
    absl::status
    absl::statusor
    absl::strings
    absl::string_view
    absl::optional
    tink::core::key
    tink::core::partial_key_access_token
    tink::core::restricted_data
    tink::internal::output_prefix_util
    tink::util::status
    tink::util::statusor
)

tink_cc_library(
  NAME aes_eax_proto_serialization
  SRCS
    aes_eax_proto_serialization.h
  DEPS
    tink::aead::internal::aes_eax_proto_serialization_impl
    tink::internal::mutable_serialization_registry
    tink::util::status
)

tink_cc_library(
  NAME xchacha20_poly1305_parameters
  SRCS
    xchacha20_poly1305_parameters.cc
    xchacha20_poly1305_parameters.h
  DEPS
    tink::aead::aead_parameters
    absl::status
    tink::core::parameters
    tink::util::status
    tink::util::statusor
)

tink_cc_library(
  NAME xchacha20_poly1305_key
  SRCS
    xchacha20_poly1305_key.cc
    xchacha20_poly1305_key.h
  DEPS
    tink::aead::aead_key
    tink::aead::xchacha20_poly1305_parameters
    absl::status
    absl::statusor
    absl::strings
    absl::optional
    tink::core::key
    tink::core::partial_key_access_token
    tink::core::restricted_data
    tink::internal::output_prefix_util
    tink::util::status
    tink::util::statusor
)

tink_cc_library(
  NAME xchacha20_poly1305_proto_serialization
  SRCS
    xchacha20_poly1305_proto_serialization.h
  DEPS
    tink::aead::internal::xchacha20_poly1305_proto_serialization_impl
    tink::internal::mutable_serialization_registry
    tink::util::status
)

tink_cc_library(
  NAME chacha20_poly1305_parameters
  SRCS
    chacha20_poly1305_parameters.cc
    chacha20_poly1305_parameters.h
  DEPS
    tink::aead::aead_parameters
    absl::status
    tink::core::parameters
    tink::util::status
    tink::util::statusor
)

tink_cc_library(
  NAME chacha20_poly1305_key
  SRCS
    chacha20_poly1305_key.cc
    chacha20_poly1305_key.h
  DEPS
    tink::aead::aead_key
    tink::aead::chacha20_poly1305_parameters
    absl::status
    absl::statusor
    absl::strings
    absl::optional
    tink::core::key
    tink::core::partial_key_access_token
    tink::core::restricted_data
    tink::internal::output_prefix_util
    tink::util::status
    tink::util::statusor
)

tink_cc_library(
  NAME chacha20_poly1305_proto_serialization
  SRCS
    chacha20_poly1305_proto_serialization.h
  DEPS
    tink::aead::internal::chacha20_poly1305_proto_serialization_impl
    tink::internal::mutable_serialization_registry
    tink::util::status
)

tink_cc_library(
  NAME aes_ctr_hmac_aead_parameters
  SRCS
    aes_ctr_hmac_aead_parameters.cc
    aes_ctr_hmac_aead_parameters.h
  DEPS
    tink::aead::aead_parameters
    absl::algorithm_container
    absl::flat_hash_map
    absl::status
    absl::strings
    absl::optional
    tink::core::parameters
    tink::util::status
    tink::util::statusor
)

tink_cc_library(
  NAME aes_ctr_hmac_aead_key
  SRCS
    aes_ctr_hmac_aead_key.cc
    aes_ctr_hmac_aead_key.h
  DEPS
    tink::aead::aead_key
    tink::aead::aes_ctr_hmac_aead_parameters
    absl::status
    absl::statusor
    absl::strings
    absl::string_view
    absl::optional
    tink::core::key
    tink::core::partial_key_access_token
    tink::core::restricted_data
    tink::internal::output_prefix_util
    tink::util::status
    tink::util::statusor
)

tink_cc_library(
  NAME aes_ctr_hmac_aead_proto_serialization
  SRCS
    aes_ctr_hmac_aead_proto_serialization.h
  DEPS
    tink::aead::internal::aes_ctr_hmac_aead_proto_serialization_impl
    tink::internal::mutable_serialization_registry
    tink::util::status
)

tink_cc_library(
  NAME x_aes_gcm_parameters
  SRCS
    x_aes_gcm_parameters.cc
    x_aes_gcm_parameters.h
  DEPS
    tink::aead::aead_parameters
    absl::status
    absl::strings
    tink::core::parameters
    tink::util::status
    tink::util::statusor
)

tink_cc_library(
  NAME x_aes_gcm_key
  SRCS
    x_aes_gcm_key.cc
    x_aes_gcm_key.h
  DEPS
    tink::aead::aead_key
    tink::aead::x_aes_gcm_parameters
    absl::status
    absl::statusor
    absl::strings
    absl::string_view
    absl::optional
    tink::core::key
    tink::core::partial_key_access_token
    tink::core::restricted_data
    tink::internal::output_prefix_util
    tink::util::status
    tink::util::statusor
)

tink_cc_library(
  NAME x_aes_gcm_key_manager
  SRCS
    x_aes_gcm_key_manager.cc
    x_aes_gcm_key_manager.h
  DEPS
    tink::aead::cord_aead
    tink::aead::x_aes_gcm_key
    tink::aead::x_aes_gcm_parameters
    absl::memory
    absl::status
    absl::strings
    absl::str_format
    absl::string_view
    absl::optional
    tink::core::aead
    tink::core::key_type_manager
    tink::core::template_util
    tink::core::input_stream
    tink::core::insecure_secret_key_access
    tink::core::partial_key_access
    tink::core::restricted_data
    tink::aead::internal::aead_from_zero_copy
    tink::aead::internal::cord_x_aes_gcm_boringssl
    tink::aead::internal::zero_copy_aead
    tink::aead::internal::zero_copy_x_aes_gcm_boringssl
    tink::internal::fips_utils
    tink::subtle::random
    tink::util::constants
    tink::util::secret_data
    tink::util::status
    tink::util::statusor
    tink::util::validation
    tink::proto::tink_cc_proto
    tink::proto::x_aes_gcm_cc_proto
)

tink_cc_library(
  NAME x_aes_gcm_proto_serialization
  SRCS
    x_aes_gcm_proto_serialization.h
  DEPS
    tink::aead::internal::x_aes_gcm_proto_serialization_impl
    tink::internal::mutable_serialization_registry
    tink::util::status
)

tink_cc_library(
  NAME legacy_kms_aead_parameters
  SRCS
    legacy_kms_aead_parameters.cc
    legacy_kms_aead_parameters.h
  DEPS
    tink::aead::aead_parameters
    absl::status
    absl::string_view
    tink::core::parameters
    tink::util::status
    tink::util::statusor
)

tink_cc_library(
  NAME legacy_kms_aead_key
  SRCS
    legacy_kms_aead_key.cc
    legacy_kms_aead_key.h
  DEPS
    tink::aead::aead_key
    tink::aead::legacy_kms_aead_parameters
    absl::status
    absl::statusor
    absl::strings
    absl::optional
    tink::core::key
    tink::internal::output_prefix_util
    tink::util::status
    tink::util::statusor
)

tink_cc_library(
  NAME legacy_kms_aead_proto_serialization
  SRCS
    legacy_kms_aead_proto_serialization.h
  DEPS
    tink::aead::internal::legacy_kms_aead_proto_serialization_impl
    tink::internal::mutable_serialization_registry
    tink::util::status
)

tink_cc_library(
  NAME legacy_kms_envelope_aead_parameters
  SRCS
    legacy_kms_envelope_aead_parameters.cc
    legacy_kms_envelope_aead_parameters.h
  DEPS
    tink::aead::aead_parameters
    tink::aead::aes_ctr_hmac_aead_parameters
    tink::aead::aes_eax_parameters
    tink::aead::aes_gcm_parameters
    tink::aead::aes_gcm_siv_parameters
    tink::aead::xchacha20_poly1305_parameters
    absl::memory
    absl::status
    absl::string_view
    tink::core::parameters
    tink::util::status
    tink::util::statusor
)

tink_cc_library(
  NAME legacy_kms_envelope_aead_key
  SRCS
    legacy_kms_envelope_aead_key.cc
    legacy_kms_envelope_aead_key.h
  DEPS
    tink::aead::aead_key
    tink::aead::legacy_kms_envelope_aead_parameters
    absl::status
    absl::statusor
    absl::strings
    absl::string_view
    absl::optional
    tink::core::key
    tink::internal::output_prefix_util
    tink::util::status
    tink::util::statusor
)

tink_cc_library(
  NAME legacy_kms_envelope_aead_proto_serialization
  SRCS
    legacy_kms_envelope_aead_proto_serialization.h
  DEPS
    tink::aead::internal::legacy_kms_envelope_aead_proto_serialization_impl
    tink::internal::mutable_serialization_registry
    tink::util::status
)

# tests

tink_cc_test(
  NAME aead_wrapper_test
  SRCS
    aead_wrapper_test.cc
  DEPS
    tink::aead::aead_wrapper
    tink::aead::mock_aead
    gmock
    absl::flat_hash_map
    absl::memory
    absl::status
    absl::statusor
    absl::strings
    tink::core::aead
    tink::core::crypto_format
    tink::core::primitive_set
    tink::core::registry
    tink::internal::monitoring
    tink::internal::monitoring_client_mocks
    tink::internal::registry_impl
    tink::util::status
    tink::util::statusor
    tink::util::test_matchers
    tink::util::test_util
    tink::proto::tink_cc_proto
)

tink_cc_test(
  NAME aead_config_test
  SRCS
    aead_config_test.cc
  DEPS
    tink::aead::aead_config
    tink::aead::aead_key_templates
    tink::aead::aes_ctr_hmac_aead_key
    tink::aead::aes_ctr_hmac_aead_parameters
    tink::aead::aes_eax_key
    tink::aead::aes_eax_parameters
    tink::aead::aes_gcm_key
    tink::aead::aes_gcm_key_manager
    tink::aead::aes_gcm_parameters
    tink::aead::aes_gcm_siv_key
    tink::aead::aes_gcm_siv_parameters
    tink::aead::chacha20_poly1305_key
    tink::aead::chacha20_poly1305_parameters
    tink::aead::key_gen_config_v0
    tink::aead::kms_aead_key_manager
    tink::aead::kms_envelope_aead_key_manager
    tink::aead::legacy_kms_aead_key
    tink::aead::legacy_kms_aead_parameters
    tink::aead::legacy_kms_envelope_aead_key
    tink::aead::legacy_kms_envelope_aead_parameters
    tink::aead::x_aes_gcm_key
    tink::aead::x_aes_gcm_parameters
    tink::aead::xchacha20_poly1305_key
    tink::aead::xchacha20_poly1305_parameters
    gmock
    absl::absl_check
    absl::memory
    absl::status
    absl::statusor
    tink::core::aead
    tink::core::insecure_secret_key_access
    tink::core::key
    tink::core::key_status
    tink::core::keyset_handle
    tink::core::keyset_handle_builder
    tink::core::parameters
    tink::core::partial_key_access
    tink::core::proto_parameters_format
    tink::core::registry
    tink::core::restricted_data
    tink::config::global_registry
    tink::config::tink_fips
    tink::internal::fips_utils
    tink::internal::legacy_proto_key
    tink::internal::legacy_proto_parameters
    tink::internal::mutable_serialization_registry
    tink::internal::proto_key_serialization
    tink::internal::proto_parameters_serialization
    tink::internal::serialization
    tink::internal::tink_proto_structs
    tink::subtle::random
    tink::util::test_matchers
    tink::proto::aes_eax_cc_proto
    tink::proto::aes_gcm_cc_proto
    tink::proto::aes_gcm_siv_cc_proto
    tink::proto::chacha20_poly1305_cc_proto
    tink::proto::kms_aead_cc_proto
    tink::proto::kms_envelope_cc_proto
    tink::proto::tink_cc_proto
    tink::proto::x_aes_gcm_cc_proto
    tink::proto::xchacha20_poly1305_cc_proto
)

tink_cc_test(
  NAME aead_factory_test
  SRCS
    aead_factory_test.cc
  DEPS
    tink::aead::aead_config
    tink::aead::aead_factory
    tink::aead::aes_gcm_key_manager
    gmock
    absl::status
    absl::strings
    tink::core::aead
    tink::core::crypto_format
    tink::core::keyset_handle
    tink::internal::key_info
    tink::util::status
    tink::util::statusor
    tink::util::test_keyset_handle
    tink::util::test_util
    tink::proto::aes_gcm_cc_proto
    tink::proto::tink_cc_proto
)

tink_cc_test(
  NAME aead_key_templates_test
  SRCS
    aead_key_templates_test.cc
  DEPS
    tink::aead::aead_config
    tink::aead::aead_key_templates
    tink::aead::aes_ctr_hmac_aead_key_manager
    tink::aead::aes_eax_key_manager
    tink::aead::aes_gcm_key_manager
    tink::aead::aes_gcm_siv_key_manager
    tink::aead::cord_aead
    tink::aead::kms_envelope_aead_key_manager
    tink::aead::x_aes_gcm_key_manager
    tink::aead::xchacha20_poly1305_key_manager
    gmock
    absl::status
    absl::statusor
    absl::cord
    absl::str_format
    tink::core::aead
    tink::core::key_manager_impl
    tink::core::key_manager
    tink::core::keyset_handle
    tink::config::global_registry
    tink::subtle::aead_test_util
    tink::util::fake_kms_client
    tink::util::status
    tink::util::statusor
    tink::util::test_matchers
    tink::proto::aes_ctr_cc_proto
    tink::proto::aes_ctr_hmac_aead_cc_proto
    tink::proto::aes_eax_cc_proto
    tink::proto::aes_gcm_cc_proto
    tink::proto::aes_gcm_siv_cc_proto
    tink::proto::common_cc_proto
    tink::proto::hmac_cc_proto
    tink::proto::kms_envelope_cc_proto
    tink::proto::tink_cc_proto
    tink::proto::x_aes_gcm_cc_proto
    tink::proto::xchacha20_poly1305_cc_proto
)

tink_cc_test(
  NAME aes_eax_key_manager_test
  SRCS
    aes_eax_key_manager_test.cc
  DEPS
    tink::aead::aes_eax_key_manager
    gmock
    tink::core::aead
    tink::subtle::aead_test_util
    tink::subtle::aes_eax_boringssl
    tink::util::secret_data
    tink::util::status
    tink::util::statusor
    tink::util::test_matchers
    tink::proto::aes_eax_cc_proto
    tink::proto::tink_cc_proto
)

tink_cc_test(
  NAME aes_gcm_key_manager_test
  SRCS
    aes_gcm_key_manager_test.cc
  DEPS
    tink::aead::aes_gcm_key_manager
    tink::aead::cord_aead
    gmock
    absl::memory
    absl::status
    tink::core::aead
    tink::aead::internal::cord_aes_gcm_boringssl
    tink::subtle::aead_test_util
    tink::subtle::aes_gcm_boringssl
    tink::util::istream_input_stream
    tink::util::secret_data
    tink::util::test_matchers
    tink::proto::aes_gcm_cc_proto
    tink::proto::tink_cc_proto
)

tink_cc_test(
  NAME aes_gcm_siv_key_manager_test
  SRCS
    aes_gcm_siv_key_manager_test.cc
  DEPS
    tink::aead::aes_gcm_siv_key_manager
    gmock
    absl::status
    tink::core::aead
    tink::internal::ssl_util
    tink::subtle::aead_test_util
    tink::subtle::aes_gcm_siv_boringssl
    tink::util::secret_data
    tink::util::test_matchers
    tink::proto::aes_gcm_siv_cc_proto
    tink::proto::tink_cc_proto
)

tink_cc_test(
  NAME aes_ctr_hmac_aead_key_manager_test
  SRCS
    aes_ctr_hmac_aead_key_manager_test.cc
  DEPS
    tink::aead::aes_ctr_hmac_aead_key_manager
    gmock
    absl::memory
    absl::status
    tink::core::aead
    tink::subtle::subtle
    tink::subtle::aead_test_util
    tink::subtle::aes_ctr_boringssl
    tink::util::enums
    tink::util::istream_input_stream
    tink::util::secret_data
    tink::util::status
    tink::util::statusor
    tink::util::test_matchers
    tink::proto::aes_ctr_cc_proto
    tink::proto::aes_ctr_hmac_aead_cc_proto
    tink::proto::common_cc_proto
    tink::proto::hmac_cc_proto
    tink::proto::tink_cc_proto
)

tink_cc_test(
  NAME xchacha20_poly1305_key_manager_test
  SRCS
    xchacha20_poly1305_key_manager_test.cc
  DEPS
    tink::aead::xchacha20_poly1305_key_manager
    gmock
    absl::memory
    absl::status
    tink::core::aead
    tink::internal::ssl_util
    tink::subtle::aead_test_util
    tink::subtle::xchacha20_poly1305_boringssl
    tink::util::istream_input_stream
    tink::util::secret_data
    tink::util::test_matchers
    tink::proto::tink_cc_proto
    tink::proto::xchacha20_poly1305_cc_proto
)

tink_cc_test(
  NAME kms_aead_key_manager_test
  SRCS
    kms_aead_key_manager_test.cc
  DEPS
    tink::aead::kms_aead_key_manager
    gmock
    absl::memory
    absl::status
    tink::core::aead
    tink::core::kms_client
    tink::core::kms_clients
    tink::subtle::aead_test_util
    tink::util::status
    tink::util::statusor
    tink::util::test_matchers
    tink::util::test_util
    tink::proto::kms_aead_cc_proto
    tink::proto::tink_cc_proto
)

tink_cc_test(
  NAME kms_envelope_aead_test
  SRCS
    kms_envelope_aead_test.cc
  DEPS
    tink::aead::aead_config
    tink::aead::aead_key_templates
    tink::aead::kms_envelope_aead
    gmock
    absl::memory
    absl::status
    absl::statusor
    absl::strings
    tink::core::aead
    tink::core::keyset_handle
    tink::core::registry
    tink::config::global_registry
    tink::internal::endian
    tink::internal::ssl_util
    tink::mac::mac_key_templates
    tink::util::fake_kms_client
    tink::util::test_matchers
    tink::util::test_util
    tink::proto::aes_gcm_cc_proto
    tink::proto::tink_cc_proto
)

tink_cc_test(
  NAME kms_envelope_aead_key_manager_test
  SRCS
    kms_envelope_aead_key_manager_test.cc
  DEPS
    tink::aead::aead_config
    tink::aead::aead_key_templates
    tink::aead::aes_eax_key_manager
    tink::aead::kms_envelope_aead
    tink::aead::kms_envelope_aead_key_manager
    gmock
    absl::memory
    absl::status
    tink::core::aead
    tink::core::keyset_handle
    tink::core::kms_client
    tink::core::kms_clients
    tink::core::registry
    tink::config::global_registry
    tink::mac::mac_key_templates
    tink::subtle::aead_test_util
    tink::util::fake_kms_client
    tink::util::status
    tink::util::statusor
    tink::util::test_matchers
    tink::util::test_util
    tink::proto::kms_envelope_cc_proto
    tink::proto::tink_cc_proto
)

tink_cc_test(
  NAME cord_aead_wrapper_test
  SRCS
    cord_aead_wrapper_test.cc
  DEPS
    tink::aead::cord_aead
    tink::aead::cord_aead_wrapper
    gmock
    absl::memory
    absl::status
    absl::strings
    absl::cord
    tink::core::primitive_set
    tink::util::status
    tink::util::test_matchers
    tink::util::test_util
    tink::proto::tink_cc_proto
)

tink_cc_test(
  NAME failing_aead_test
  SRCS
    failing_aead_test.cc
  DEPS
    tink::aead::failing_aead
    gmock
    absl::status
    tink::core::aead
    tink::util::test_matchers
)

tink_cc_test(
  NAME aes_gcm_parameters_test
  SRCS
    aes_gcm_parameters_test.cc
  DEPS
    tink::aead::aes_gcm_parameters
    gmock
    absl::status
    tink::core::parameters
    tink::util::statusor
    tink::util::test_matchers
)

tink_cc_test(
  NAME aes_gcm_key_test
  SRCS
    aes_gcm_key_test.cc
  DEPS
    tink::aead::aes_gcm_key
    tink::aead::aes_gcm_parameters
    gmock
    absl::status
    absl::optional
    tink::core::key
    tink::core::partial_key_access
    tink::core::restricted_data
    tink::util::statusor
    tink::util::test_matchers
)

tink_cc_test(
  NAME aes_gcm_proto_serialization_test
  SRCS
    aes_gcm_proto_serialization_test.cc
  DEPS
    tink::aead::aes_gcm_key
    tink::aead::aes_gcm_parameters
    tink::aead::aes_gcm_proto_serialization
    gmock
    absl::status
    absl::statusor
    absl::optional
    tink::core::insecure_secret_key_access
    tink::core::key
    tink::core::parameters
    tink::core::partial_key_access
    tink::core::restricted_data
    tink::internal::mutable_serialization_registry
    tink::internal::proto_key_serialization
    tink::internal::proto_parameters_serialization
    tink::internal::serialization
    tink::internal::tink_proto_structs
    tink::subtle::random
    tink::util::test_matchers
    tink::proto::aes_gcm_cc_proto
)

tink_cc_test(
  NAME aes_gcm_siv_parameters_test
  SRCS
    aes_gcm_siv_parameters_test.cc
  DEPS
    tink::aead::aes_gcm_siv_parameters
    gmock
    absl::status
    tink::core::parameters
    tink::util::statusor
    tink::util::test_matchers
)

tink_cc_test(
  NAME aes_gcm_siv_key_test
  SRCS
    aes_gcm_siv_key_test.cc
  DEPS
    tink::aead::aes_gcm_siv_key
    tink::aead::aes_gcm_siv_parameters
    gmock
    absl::status
    absl::optional
    tink::core::key
    tink::core::partial_key_access
    tink::core::restricted_data
    tink::util::statusor
    tink::util::test_matchers
)

tink_cc_test(
  NAME aes_gcm_siv_proto_serialization_test
  SRCS
    aes_gcm_siv_proto_serialization_test.cc
  DEPS
    tink::aead::aes_gcm_siv_key
    tink::aead::aes_gcm_siv_parameters
    tink::aead::aes_gcm_siv_proto_serialization
    gmock
    absl::status
    absl::statusor
    absl::optional
    tink::core::insecure_secret_key_access
    tink::core::key
    tink::core::parameters
    tink::core::partial_key_access
    tink::core::restricted_data
    tink::internal::mutable_serialization_registry
    tink::internal::proto_key_serialization
    tink::internal::proto_parameters_serialization
    tink::internal::serialization
    tink::internal::tink_proto_structs
    tink::subtle::random
    tink::util::test_matchers
    tink::proto::aes_gcm_siv_cc_proto
)

tink_cc_test(
  NAME config_v0_test
  SRCS
    config_v0_test.cc
  DEPS
    tink::aead::aead_key_templates
    tink::aead::config_v0
    tink::aead::key_gen_config_v0
    gmock
    tink::core::aead
    tink::core::keyset_handle
    tink::internal::ssl_util
    tink::util::statusor
    tink::util::test_matchers
    tink::proto::tink_cc_proto
)

tink_cc_test(
  NAME aes_eax_parameters_test
  SRCS
    aes_eax_parameters_test.cc
  DEPS
    tink::aead::aes_eax_parameters
    gmock
    absl::status
    tink::core::parameters
    tink::util::statusor
    tink::util::test_matchers
)

tink_cc_test(
  NAME aes_eax_key_test
  SRCS
    aes_eax_key_test.cc
  DEPS
    tink::aead::aes_eax_key
    tink::aead::aes_eax_parameters
    gmock
    absl::status
    absl::optional
    tink::core::key
    tink::core::partial_key_access
    tink::core::restricted_data
    tink::util::statusor
    tink::util::test_matchers
)

tink_cc_test(
  NAME aes_eax_proto_serialization_test
  SRCS
    aes_eax_proto_serialization_test.cc
  DEPS
    tink::aead::aes_eax_key
    tink::aead::aes_eax_parameters
    tink::aead::aes_eax_proto_serialization
    gmock
    absl::status
    absl::statusor
    absl::string_view
    absl::optional
    tink::core::insecure_secret_key_access
    tink::core::key
    tink::core::parameters
    tink::core::partial_key_access
    tink::core::restricted_data
    tink::internal::mutable_serialization_registry
    tink::internal::proto_key_serialization
    tink::internal::proto_parameters_serialization
    tink::internal::serialization
    tink::internal::tink_proto_structs
    tink::subtle::random
    tink::util::test_matchers
    tink::proto::aes_eax_cc_proto
)

tink_cc_test(
  NAME xchacha20_poly1305_parameters_test
  SRCS
    xchacha20_poly1305_parameters_test.cc
  DEPS
    tink::aead::xchacha20_poly1305_parameters
    gmock
    absl::status
    tink::util::statusor
    tink::util::test_matchers
)

tink_cc_test(
  NAME xchacha20_poly1305_key_test
  SRCS
    xchacha20_poly1305_key_test.cc
  DEPS
    tink::aead::xchacha20_poly1305_key
    tink::aead::xchacha20_poly1305_parameters
    gmock
    absl::status
    absl::optional
    tink::core::key
    tink::core::partial_key_access
    tink::core::restricted_data
    tink::util::statusor
    tink::util::test_matchers
)

tink_cc_test(
  NAME xchacha20_poly1305_proto_serialization_test
  SRCS
    xchacha20_poly1305_proto_serialization_test.cc
  DEPS
    tink::aead::xchacha20_poly1305_key
    tink::aead::xchacha20_poly1305_parameters
    tink::aead::xchacha20_poly1305_proto_serialization
    gmock
    absl::status
    absl::statusor
    absl::string_view
    absl::optional
    tink::core::insecure_secret_key_access
    tink::core::key
    tink::core::parameters
    tink::core::partial_key_access
    tink::core::restricted_data
    tink::internal::mutable_serialization_registry
    tink::internal::proto_key_serialization
    tink::internal::proto_parameters_serialization
    tink::internal::serialization
    tink::internal::tink_proto_structs
    tink::subtle::random
    tink::util::test_matchers
    tink::proto::xchacha20_poly1305_cc_proto
)

tink_cc_test(
  NAME chacha20_poly1305_parameters_test
  SRCS
    chacha20_poly1305_parameters_test.cc
  DEPS
    tink::aead::chacha20_poly1305_parameters
    gmock
    absl::status
    tink::core::parameters
    tink::util::statusor
    tink::util::test_matchers
)

tink_cc_test(
  NAME chacha20_poly1305_key_test
  SRCS
    chacha20_poly1305_key_test.cc
  DEPS
    tink::aead::chacha20_poly1305_key
    tink::aead::chacha20_poly1305_parameters
    gmock
    absl::status
    absl::optional
    tink::core::key
    tink::core::partial_key_access
    tink::core::restricted_data
    tink::util::statusor
    tink::util::test_matchers
)

tink_cc_test(
  NAME chacha20_poly1305_proto_serialization_test
  SRCS
    chacha20_poly1305_proto_serialization_test.cc
  DEPS
    tink::aead::chacha20_poly1305_key
    tink::aead::chacha20_poly1305_parameters
    tink::aead::chacha20_poly1305_proto_serialization
    gmock
    absl::status
    absl::statusor
    absl::string_view
    absl::optional
    tink::core::insecure_secret_key_access
    tink::core::key
    tink::core::parameters
    tink::core::partial_key_access
    tink::core::restricted_data
    tink::internal::mutable_serialization_registry
    tink::internal::proto_key_serialization
    tink::internal::proto_parameters_serialization
    tink::internal::serialization
    tink::internal::tink_proto_structs
    tink::subtle::random
    tink::util::test_matchers
    tink::proto::chacha20_poly1305_cc_proto
)

tink_cc_test(
  NAME aes_ctr_hmac_aead_parameters_test
  SRCS
    aes_ctr_hmac_aead_parameters_test.cc
  DEPS
    tink::aead::aes_ctr_hmac_aead_parameters
    gmock
    absl::status
    tink::core::parameters
    tink::util::statusor
    tink::util::test_matchers
)

tink_cc_test(
  NAME aes_ctr_hmac_aead_key_test
  SRCS
    aes_ctr_hmac_aead_key_test.cc
  DEPS
    tink::aead::aes_ctr_hmac_aead_key
    tink::aead::aes_ctr_hmac_aead_parameters
    gmock
    absl::status
    absl::optional
    tink::core::key
    tink::core::partial_key_access
    tink::core::restricted_data
    tink::util::statusor
    tink::util::test_matchers
)

tink_cc_test(
  NAME aes_ctr_hmac_aead_proto_serialization_test
  SRCS
    aes_ctr_hmac_aead_proto_serialization_test.cc
  DEPS
    tink::aead::aes_ctr_hmac_aead_key
    tink::aead::aes_ctr_hmac_aead_parameters
    tink::aead::aes_ctr_hmac_aead_proto_serialization
    gmock
    absl::status
    absl::statusor
    absl::string_view
    absl::optional
    tink::core::insecure_secret_key_access
    tink::core::key
    tink::core::parameters
    tink::core::partial_key_access
    tink::core::restricted_data
    tink::internal::mutable_serialization_registry
    tink::internal::proto_key_serialization
    tink::internal::proto_parameters_serialization
    tink::internal::serialization
    tink::internal::tink_proto_structs
    tink::subtle::random
    tink::util::test_matchers
    tink::proto::aes_ctr_cc_proto
    tink::proto::aes_ctr_hmac_aead_cc_proto
    tink::proto::common_cc_proto
    tink::proto::hmac_cc_proto
    tink::proto::tink_cc_proto
)

tink_cc_test(
  NAME x_aes_gcm_parameters_test
  SRCS
    x_aes_gcm_parameters_test.cc
  DEPS
    tink::aead::x_aes_gcm_parameters
    gmock
    absl::status
    tink::core::parameters
    tink::util::statusor
    tink::util::test_matchers
)

tink_cc_test(
  NAME x_aes_gcm_key_test
  SRCS
    x_aes_gcm_key_test.cc
  DEPS
    tink::aead::x_aes_gcm_key
    tink::aead::x_aes_gcm_parameters
    gmock
    absl::status
    absl::optional
    tink::core::key
    tink::core::partial_key_access
    tink::core::restricted_data
    tink::util::statusor
    tink::util::test_matchers
)

tink_cc_test(
  NAME x_aes_gcm_key_manager_test
  SRCS
    x_aes_gcm_key_manager_test.cc
  DEPS
    tink::aead::cord_aead
    tink::aead::x_aes_gcm_key_manager
    gmock
    absl::status
    absl::cord
    tink::core::aead
    tink::core::key_type_manager
    tink::internal::fips_utils
    tink::subtle::random
    tink::util::status
    tink::util::statusor
    tink::util::test_matchers
    tink::proto::tink_cc_proto
    tink::proto::x_aes_gcm_cc_proto
)

tink_cc_test(
  NAME x_aes_gcm_proto_serialization_test
  SRCS
    x_aes_gcm_proto_serialization_test.cc
  DEPS
    tink::aead::x_aes_gcm_key
    tink::aead::x_aes_gcm_parameters
    tink::aead::x_aes_gcm_proto_serialization
    gmock
    absl::status
    absl::statusor
    absl::string_view
    absl::optional
    tink::core::insecure_secret_key_access
    tink::core::key
    tink::core::parameters
    tink::core::partial_key_access
    tink::core::restricted_data
    tink::internal::mutable_serialization_registry
    tink::internal::proto_key_serialization
    tink::internal::proto_parameters_serialization
    tink::internal::serialization
    tink::internal::tink_proto_structs
    tink::subtle::random
    tink::util::test_matchers
    tink::proto::x_aes_gcm_cc_proto
)

tink_cc_test(
  NAME legacy_kms_aead_parameters_test
  SRCS
    legacy_kms_aead_parameters_test.cc
  DEPS
    tink::aead::legacy_kms_aead_parameters
    gmock
    absl::status
    absl::string_view
    tink::core::parameters
    tink::util::statusor
    tink::util::test_matchers
)

tink_cc_test(
  NAME legacy_kms_aead_key_test
  SRCS
    legacy_kms_aead_key_test.cc
  DEPS
    tink::aead::legacy_kms_aead_key
    tink::aead::legacy_kms_aead_parameters
    gmock
    absl::status
    absl::string_view
    absl::optional
    tink::core::key
    tink::util::statusor
    tink::util::test_matchers
)

tink_cc_test(
  NAME legacy_kms_aead_proto_serialization_test
  SRCS
    legacy_kms_aead_proto_serialization_test.cc
  DEPS
    tink::aead::legacy_kms_aead_key
    tink::aead::legacy_kms_aead_parameters
    tink::aead::legacy_kms_aead_proto_serialization
    gmock
    absl::statusor
    absl::string_view
    absl::optional
    tink::core::key
    tink::core::parameters
    tink::core::restricted_data
    tink::internal::internal_insecure_secret_key_access
    tink::internal::mutable_serialization_registry
    tink::internal::proto_key_serialization
    tink::internal::proto_parameters_serialization
    tink::internal::serialization
    tink::internal::tink_proto_structs
    tink::util::test_matchers
    tink::proto::kms_aead_cc_proto
)

tink_cc_test(
  NAME legacy_kms_envelope_aead_parameters_test
  SRCS
    legacy_kms_envelope_aead_parameters_test.cc
  DEPS
    tink::aead::aes_ctr_hmac_aead_parameters
    tink::aead::aes_eax_parameters
    tink::aead::aes_gcm_parameters
    tink::aead::aes_gcm_siv_parameters
    tink::aead::legacy_kms_envelope_aead_parameters
    tink::aead::xchacha20_poly1305_parameters
    gmock
    absl::absl_check
    absl::status
    absl::string_view
    tink::core::parameters
    tink::util::statusor
    tink::util::test_matchers
)

tink_cc_test(
  NAME legacy_kms_envelope_aead_key_test
  SRCS
    legacy_kms_envelope_aead_key_test.cc
  DEPS
    tink::aead::legacy_kms_envelope_aead_key
    tink::aead::legacy_kms_envelope_aead_parameters
    tink::aead::xchacha20_poly1305_parameters
    gmock
    absl::absl_check
    absl::status
    absl::string_view
    absl::optional
    tink::core::key
    tink::util::statusor
    tink::util::test_matchers
)

tink_cc_test(
  NAME legacy_kms_envelope_aead_proto_serialization_test
  SRCS
    legacy_kms_envelope_aead_proto_serialization_test.cc
  DEPS
    tink::aead::aead_parameters
    tink::aead::aes_ctr_hmac_aead_parameters
    tink::aead::aes_eax_parameters
    tink::aead::aes_gcm_parameters
    tink::aead::aes_gcm_siv_parameters
    tink::aead::legacy_kms_envelope_aead_key
    tink::aead::legacy_kms_envelope_aead_parameters
    tink::aead::legacy_kms_envelope_aead_proto_serialization
    tink::aead::xchacha20_poly1305_parameters
    gmock
    absl::absl_check
    absl::memory
    absl::string_view
    absl::optional
    tink::core::insecure_secret_key_access
    tink::core::key
    tink::core::parameters
    tink::core::restricted_data
    tink::internal::mutable_serialization_registry
    tink::internal::proto_key_serialization
    tink::internal::proto_parameters_serialization
    tink::internal::serialization
    tink::internal::tink_proto_structs
    tink::util::statusor
    tink::util::test_matchers
    tink::proto::aes_ctr_cc_proto
    tink::proto::aes_ctr_hmac_aead_cc_proto
    tink::proto::aes_eax_cc_proto
    tink::proto::aes_gcm_cc_proto
    tink::proto::aes_gcm_siv_cc_proto
    tink::proto::common_cc_proto
    tink::proto::hmac_cc_proto
    tink::proto::kms_envelope_cc_proto
    tink::proto::tink_cc_proto
    tink::proto::xchacha20_poly1305_cc_proto
)

tink_cc_test(
  NAME aead_benchmarks
  SRCS
    aead_benchmarks.cc
  DEPS
    tink::aead::aead_config
    tink::aead::aead_key_templates
    gmock
    absl::absl_check
    absl::statusor
    absl::string_view
    benchmark::benchmark_main
    tink::core::aead
    tink::core::keyset_handle
    tink::config::global_registry
)
