tink_module(keyderivation::internal)

tink_cc_library(
  NAME prf_based_deriver
  SRCS
    prf_based_deriver.cc
    prf_based_deriver.h
  DEPS
    tink::keyderivation::internal::config_prf_for_deriver
    tink::keyderivation::internal::key_derivers
    absl::memory
    absl::status
    absl::statusor
    absl::string_view
    tink::core::cleartext_keyset_handle
    tink::core::input_stream
    tink::core::key
    tink::core::key_status
    tink::core::keyset_handle
    tink::core::keyset_handle_builder
    tink::core::parameters
    tink::aead::aes_ctr_hmac_aead_proto_serialization
    tink::aead::aes_gcm_proto_serialization
    tink::aead::xchacha20_poly1305_proto_serialization
    tink::internal::configuration_impl
    tink::internal::key_type_info_store
    tink::internal::mutable_serialization_registry
    tink::internal::proto_parameters_serialization
    tink::internal::registry_impl
    tink::internal::tink_proto_structs
    tink::keyderivation::keyset_deriver
    tink::subtle::prf::streaming_prf
    tink::util::statusor
    tink::proto::tink_cc_proto
)

tink_cc_test(
  NAME prf_based_deriver_test
  SRCS
    prf_based_deriver_test.cc
  DEPS
    tink::keyderivation::internal::prf_based_deriver
    gmock
    absl::memory
    absl::status
    absl::string_view
    absl::optional
    tink::core::cleartext_keyset_handle
    tink::core::insecure_secret_key_access
    tink::core::key_status
    tink::core::keyset_handle
    tink::core::partial_key_access
    tink::core::registry
    tink::aead::aead_key_templates
    tink::aead::aes_ctr_hmac_aead_key_manager
    tink::aead::aes_gcm_key
    tink::aead::aes_gcm_key_manager
    tink::aead::aes_gcm_parameters
    tink::internal::registry_impl
    tink::keyderivation::keyset_deriver
    tink::prf::hkdf_prf_key_manager
    tink::subtle::random
    tink::subtle::prf::streaming_prf
    tink::util::statusor
    tink::util::test_matchers
    tink::util::test_util
    tink::proto::aes_gcm_cc_proto
    tink::proto::common_cc_proto
    tink::proto::hkdf_prf_cc_proto
    tink::proto::tink_cc_proto
)

tink_cc_library(
  NAME prf_based_deriver_key_manager
  SRCS
    prf_based_deriver_key_manager.h
  DEPS
    tink::keyderivation::internal::prf_based_deriver
    absl::memory
    absl::status
    absl::strings
    tink::core::key_type_manager
    tink::core::template_util
    tink::core::registry
    tink::keyderivation::keyset_deriver
    tink::util::constants
    tink::util::status
    tink::util::statusor
    tink::util::validation
    tink::proto::prf_based_deriver_cc_proto
    tink::proto::tink_cc_proto
)

tink_cc_test(
  NAME prf_based_deriver_key_manager_test
  SRCS
    prf_based_deriver_key_manager_test.cc
  DEPS
    tink::keyderivation::internal::prf_based_deriver
    tink::keyderivation::internal::prf_based_deriver_key_manager
    gmock
    absl::memory
    absl::status
    absl::statusor
    tink::core::cleartext_keyset_handle
    tink::core::keyset_handle
    tink::core::registry
    tink::aead::aead_key_templates
    tink::aead::aes_gcm_key_manager
    tink::keyderivation::keyset_deriver
    tink::prf::hkdf_prf_key_manager
    tink::subtle::subtle
    tink::util::statusor
    tink::util::test_matchers
    tink::util::test_util
    tink::proto::aes_gcm_cc_proto
    tink::proto::hkdf_prf_cc_proto
    tink::proto::prf_based_deriver_cc_proto
    tink::proto::tink_cc_proto
)

tink_cc_library(
  NAME key_derivers
  SRCS
    key_derivers.cc
    key_derivers.h
  DEPS
    absl::flat_hash_map
    absl::any_invocable
    absl::absl_check
    absl::memory
    absl::status
    absl::statusor
    absl::strings
    absl::string_view
    absl::optional
    tink::core::big_integer
    tink::core::ec_point
    tink::core::input_stream
    tink::core::insecure_secret_key_access
    tink::core::key
    tink::core::parameters
    tink::core::partial_key_access
    tink::core::restricted_big_integer
    tink::core::restricted_data
    tink::core::secret_data
    tink::aead::aes_ctr_hmac_aead_key
    tink::aead::aes_ctr_hmac_aead_parameters
    tink::aead::aes_ctr_hmac_aead_proto_serialization
    tink::aead::aes_gcm_key
    tink::aead::aes_gcm_parameters
    tink::aead::aes_gcm_proto_serialization
    tink::aead::xchacha20_poly1305_key
    tink::aead::xchacha20_poly1305_parameters
    tink::aead::xchacha20_poly1305_proto_serialization
    tink::daead::aes_siv_key
    tink::daead::aes_siv_parameters
    tink::daead::aes_siv_proto_serialization
    tink::internal::ec_util
    tink::mac::hmac_key
    tink::mac::hmac_parameters
    tink::mac::hmac_proto_serialization
    tink::prf::aes_cmac_prf_key
    tink::prf::aes_cmac_prf_parameters
    tink::prf::aes_cmac_prf_proto_serialization
    tink::prf::hkdf_prf_key
    tink::prf::hkdf_prf_parameters
    tink::prf::hkdf_prf_proto_serialization
    tink::prf::hmac_prf_key
    tink::prf::hmac_prf_parameters
    tink::prf::hmac_prf_proto_serialization
    tink::signature::ecdsa_parameters
    tink::signature::ecdsa_private_key
    tink::signature::ecdsa_proto_serialization
    tink::signature::ecdsa_public_key
    tink::signature::ed25519_parameters
    tink::signature::ed25519_private_key
    tink::signature::ed25519_proto_serialization
    tink::signature::ed25519_public_key
    tink::streamingaead::aes_ctr_hmac_streaming_key
    tink::streamingaead::aes_ctr_hmac_streaming_parameters
    tink::streamingaead::aes_ctr_hmac_streaming_proto_serialization
    tink::streamingaead::aes_gcm_hkdf_streaming_key
    tink::streamingaead::aes_gcm_hkdf_streaming_parameters
    tink::streamingaead::aes_gcm_hkdf_streaming_proto_serialization
    tink::subtle::common_enums
    tink::util::input_stream_util
    tink::proto::aes_gcm_cc_proto
    tink::proto::tink_cc_proto
)

tink_cc_test(
  NAME key_derivers_test
  SRCS
    key_derivers_test.cc
  DEPS
    tink::keyderivation::internal::key_derivers
    gmock
    absl::memory
    absl::status
    absl::statusor
    absl::optional
    tink::core::input_stream
    tink::core::insecure_secret_key_access_testonly
    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::registry
    tink::core::restricted_data
    tink::core::secret_key_access_token
    tink::aead::aes_ctr_hmac_aead_key
    tink::aead::aes_ctr_hmac_aead_key_manager
    tink::aead::aes_ctr_hmac_aead_parameters
    tink::aead::aes_eax_parameters
    tink::aead::aes_eax_proto_serialization
    tink::aead::aes_gcm_key
    tink::aead::aes_gcm_key_manager
    tink::aead::aes_gcm_parameters
    tink::aead::xchacha20_poly1305_key
    tink::aead::xchacha20_poly1305_key_manager
    tink::aead::xchacha20_poly1305_parameters
    tink::daead::aes_siv_key
    tink::daead::aes_siv_key_manager
    tink::daead::aes_siv_parameters
    tink::internal::global_serialization_registry
    tink::internal::proto_parameters_serialization
    tink::internal::serialization
    tink::internal::ssl_util
    tink::mac::hmac_key
    tink::mac::hmac_key_manager
    tink::mac::hmac_parameters
    tink::prf::aes_cmac_prf_key
    tink::prf::aes_cmac_prf_key_manager
    tink::prf::aes_cmac_prf_parameters
    tink::prf::hkdf_prf_key
    tink::prf::hkdf_prf_key_manager
    tink::prf::hkdf_prf_parameters
    tink::prf::hmac_prf_key
    tink::prf::hmac_prf_key_manager
    tink::prf::hmac_prf_parameters
    tink::signature::ecdsa_parameters
    tink::signature::ecdsa_private_key
    tink::signature::ecdsa_sign_key_manager
    tink::signature::ed25519_parameters
    tink::signature::ed25519_private_key
    tink::signature::ed25519_sign_key_manager
    tink::streamingaead::aes_ctr_hmac_streaming_key
    tink::streamingaead::aes_ctr_hmac_streaming_key_manager
    tink::streamingaead::aes_ctr_hmac_streaming_parameters
    tink::streamingaead::aes_ctr_hmac_streaming_proto_serialization
    tink::streamingaead::aes_gcm_hkdf_streaming_key
    tink::streamingaead::aes_gcm_hkdf_streaming_key_manager
    tink::streamingaead::aes_gcm_hkdf_streaming_parameters
    tink::subtle::common_enums
    tink::subtle::random
    tink::subtle::prf::hkdf_streaming_prf
    tink::subtle::prf::streaming_prf
    tink::util::istream_input_stream
    tink::util::secret_data
    tink::util::test_matchers
    tink::util::test_util
    tink::proto::aes_cmac_prf_cc_proto
    tink::proto::aes_ctr_cc_proto
    tink::proto::aes_ctr_hmac_aead_cc_proto
    tink::proto::aes_ctr_hmac_streaming_cc_proto
    tink::proto::aes_gcm_cc_proto
    tink::proto::aes_gcm_hkdf_streaming_cc_proto
    tink::proto::aes_siv_cc_proto
    tink::proto::common_cc_proto
    tink::proto::ecdsa_cc_proto
    tink::proto::ed25519_cc_proto
    tink::proto::hkdf_prf_cc_proto
    tink::proto::hmac_cc_proto
    tink::proto::hmac_prf_cc_proto
    tink::proto::tink_cc_proto
    tink::proto::xchacha20_poly1305_cc_proto
)

tink_cc_library(
  NAME config_prf_for_deriver
  SRCS
    config_prf_for_deriver.h
  DEPS
    absl::absl_check
    absl::memory
    tink::core::configuration
    tink::internal::configuration_impl
    tink::prf::hkdf_prf_key_manager
)

tink_cc_test(
  NAME config_prf_for_deriver_test
  SRCS
    config_prf_for_deriver_test.cc
  DEPS
    tink::keyderivation::internal::config_prf_for_deriver
    gmock
    tink::internal::configuration_impl
    tink::internal::key_type_info_store
    tink::prf::hkdf_prf_key_manager
    tink::subtle::prf::streaming_prf
    tink::util::input_stream_util
    tink::util::statusor
    tink::util::test_matchers
    tink::util::test_util
    tink::proto::tink_cc_proto
)

tink_cc_library(
  NAME prf_based_key_derivation_proto_serialization_impl
  SRCS
    prf_based_key_derivation_proto_serialization_impl.cc
    prf_based_key_derivation_proto_serialization_impl.h
  DEPS
    absl::memory
    absl::status
    absl::statusor
    absl::string_view
    absl::optional
    tink::core::key
    tink::core::parameters
    tink::core::partial_key_access
    tink::core::restricted_data
    tink::core::secret_data
    tink::core::secret_key_access_token
    tink::internal::global_serialization_registry
    tink::internal::key_parser
    tink::internal::key_serializer
    tink::internal::mutable_serialization_registry
    tink::internal::parameters_parser
    tink::internal::parameters_serializer
    tink::internal::proto_key_serialization
    tink::internal::proto_parameters_serialization
    tink::internal::proto_parser_fields
    tink::internal::proto_parser_message
    tink::internal::serialization
    tink::internal::serialization_registry
    tink::internal::tink_proto_structs
    tink::keyderivation::prf_based_key_derivation_key
    tink::keyderivation::prf_based_key_derivation_parameters
    tink::prf::prf_key
    tink::prf::prf_parameters
    tink::util::status
    tink::proto::prf_based_deriver_cc_proto
    tink::proto::tink_cc_proto
)

tink_cc_test(
  NAME prf_based_key_derivation_proto_serialization_impl_test
  SRCS
    prf_based_key_derivation_proto_serialization_impl_test.cc
  DEPS
    tink::keyderivation::internal::prf_based_key_derivation_proto_serialization_impl
    gmock
    absl::absl_check
    absl::status
    absl::string_view
    absl::optional
    tink::core::key
    tink::core::parameters
    tink::core::partial_key_access
    tink::core::restricted_data
    tink::aead::xchacha20_poly1305_parameters
    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::serialization_registry
    tink::internal::tink_proto_structs
    tink::keyderivation::prf_based_key_derivation_key
    tink::keyderivation::prf_based_key_derivation_parameters
    tink::prf::aes_cmac_prf_key
    tink::prf::aes_cmac_prf_parameters
    tink::util::test_matchers
    tink::proto::aes_cmac_prf_cc_proto
    tink::proto::prf_based_deriver_cc_proto
    tink::proto::tink_cc_proto
    tink::proto::xchacha20_poly1305_cc_proto
)
