# Copyright 2023 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
#
# WARNING: This file is automatically generated by convert_for_cobalt.
# Do not edit manually.

# CC Library : keyset_wrapper
source_set("keyset_wrapper") {
  configs += [ "//build/config:no_rtti" ]
  configs -= [ "//build/config:no_rtti" ]
  sources = [ "keyset_wrapper.h" ]
  public_deps = [
    "//third_party/abseil-cpp/absl/container:flat_hash_map",
    "//third_party/tink/cc/proto:tink_proto",
    "//third_party/tink/cc/util:statusor",
  ]
  public_configs = [ "//third_party/tink:tink_config" ]
}

# CC Library : util
source_set("util") {
  configs += [ "//build/config:no_rtti" ]
  configs -= [ "//build/config:no_rtti" ]
  sources = [
    "util.cc",
    "util.h",
  ]
  public_deps = [ "//third_party/abseil-cpp/absl/strings:strings" ]
  public_configs = [ "//third_party/tink:tink_config" ]
}

# CC Library : keyset_wrapper_impl
source_set("keyset_wrapper_impl") {
  configs += [ "//build/config:no_rtti" ]
  configs -= [ "//build/config:no_rtti" ]
  sources = [ "keyset_wrapper_impl.h" ]
  public_deps = [
    ":key_info",
    ":keyset_wrapper",
    "//third_party/abseil-cpp/absl/container:flat_hash_map",
    "//third_party/tink/cc:primitive_set",
    "//third_party/tink/cc:primitive_wrapper",
    "//third_party/tink/cc/proto:tink_proto",
    "//third_party/tink/cc/util:statusor",
    "//third_party/tink/cc/util:validation",
  ]
  public_configs = [ "//third_party/tink:tink_config" ]
}

# CC Library : ssl_unique_ptr
source_set("ssl_unique_ptr") {
  configs += [ "//build/config:no_rtti" ]
  configs -= [ "//build/config:no_rtti" ]
  sources = [ "ssl_unique_ptr.h" ]
  public_deps = [ "//third_party/boringssl:crypto" ]
  public_configs = [ "//third_party/tink:tink_config" ]
}

# CC Library : key_info
source_set("key_info") {
  configs += [ "//build/config:no_rtti" ]
  configs -= [ "//build/config:no_rtti" ]
  sources = [
    "key_info.cc",
    "key_info.h",
  ]
  public_deps = [ "//third_party/tink/cc/proto:tink_proto" ]
  public_configs = [ "//third_party/tink:tink_config" ]
}

# CC Library : registry_impl
source_set("registry_impl") {
  configs += [ "//build/config:no_rtti" ]
  configs -= [ "//build/config:no_rtti" ]
  sources = [
    "registry_impl.cc",
    "registry_impl.h",
  ]
  public_deps = [
    ":fips_utils",
    ":keyset_wrapper",
    ":keyset_wrapper_impl",
    "//third_party/abseil-cpp/absl/base:core_headers",
    "//third_party/abseil-cpp/absl/container:flat_hash_map",
    "//third_party/abseil-cpp/absl/memory:memory",
    "//third_party/abseil-cpp/absl/status:status",
    "//third_party/abseil-cpp/absl/strings:strings",
    "//third_party/abseil-cpp/absl/synchronization:synchronization",
    "//third_party/abseil-cpp/absl/types:optional",
    "//third_party/tink/cc:catalogue",
    "//third_party/tink/cc:core/key_manager_impl",
    "//third_party/tink/cc:core/key_type_manager",
    "//third_party/tink/cc:core/private_key_manager_impl",
    "//third_party/tink/cc:core/private_key_type_manager",
    "//third_party/tink/cc:key_manager",
    "//third_party/tink/cc:primitive_set",
    "//third_party/tink/cc:primitive_wrapper",
    "//third_party/tink/cc/monitoring:monitoring",
    "//third_party/tink/cc/proto:tink_proto",
    "//third_party/tink/cc/util:errors",
    "//third_party/tink/cc/util:protobuf_helper",
    "//third_party/tink/cc/util:status",
    "//third_party/tink/cc/util:statusor",
    "//third_party/tink/cc/util:validation",
  ]
  public_configs = [ "//third_party/tink:tink_config" ]
}

# CC Library : fips_utils
source_set("fips_utils") {
  configs += [ "//build/config:no_rtti" ]
  configs -= [ "//build/config:no_rtti" ]
  sources = [
    "fips_utils.cc",
    "fips_utils.h",
  ]
  public_deps = [
    "//third_party/abseil-cpp/absl/base:core_headers",
    "//third_party/abseil-cpp/absl/status:status",
    "//third_party/boringssl:crypto",
    "//third_party/tink/cc/util:status",
  ]
  public_configs = [ "//third_party/tink:tink_config" ]
}

# CC Library : err_util
source_set("err_util") {
  configs += [ "//build/config:no_rtti" ]
  configs -= [ "//build/config:no_rtti" ]
  sources = [
    "err_util.cc",
    "err_util.h",
  ]
  public_deps = [ "//third_party/boringssl:crypto" ]
  public_configs = [ "//third_party/tink:tink_config" ]
}

# CC Library : bn_util
source_set("bn_util") {
  configs += [ "//build/config:no_rtti" ]
  configs -= [ "//build/config:no_rtti" ]
  sources = [
    "bn_util.cc",
    "bn_util.h",
  ]
  public_deps = [
    ":ssl_unique_ptr",
    "//third_party/abseil-cpp/absl/types:span",
    "//third_party/boringssl:crypto",
    "//third_party/tink/cc/subtle:subtle_util",
    "//third_party/tink/cc/util:secret_data",
    "//third_party/tink/cc/util:status",
    "//third_party/tink/cc/util:statusor",
  ]
  public_configs = [ "//third_party/tink:tink_config" ]
}

# CC Library : ec_util
source_set("ec_util") {
  configs += [ "//build/config:no_rtti" ]
  configs -= [ "//build/config:no_rtti" ]
  sources = [
    "ec_util.cc",
    "ec_util.h",
  ]
  public_deps = [
    ":bn_util",
    ":err_util",
    ":fips_utils",
    ":ssl_unique_ptr",
    "//third_party/abseil-cpp/absl/memory:memory",
    "//third_party/abseil-cpp/absl/status:status",
    "//third_party/abseil-cpp/absl/strings:strings",
    "//third_party/abseil-cpp/absl/types:span",
    "//third_party/boringssl:crypto",
    "//third_party/tink/cc/subtle:common_enums",
    "//third_party/tink/cc/subtle:random",
    "//third_party/tink/cc/subtle:subtle_util",
    "//third_party/tink/cc/util:secret_data",
    "//third_party/tink/cc/util:status",
    "//third_party/tink/cc/util:statusor",
  ]
  public_configs = [ "//third_party/tink:tink_config" ]
}

# CC Library : md_util
source_set("md_util") {
  configs += [ "//build/config:no_rtti" ]
  configs -= [ "//build/config:no_rtti" ]
  sources = [
    "md_util.cc",
    "md_util.h",
  ]
  public_deps = [
    ":err_util",
    ":util",
    "//third_party/abseil-cpp/absl/status:status",
    "//third_party/abseil-cpp/absl/strings:strings",
    "//third_party/boringssl:crypto",
    "//third_party/tink/cc/subtle:common_enums",
    "//third_party/tink/cc/subtle:subtle_util",
    "//third_party/tink/cc/util:status",
    "//third_party/tink/cc/util:statusor",
  ]
  public_configs = [ "//third_party/tink:tink_config" ]
}

# CC Library : aes_util
source_set("aes_util") {
  configs += [ "//build/config:no_rtti" ]
  configs -= [ "//build/config:no_rtti" ]
  sources = [
    "aes_util.cc",
    "aes_util.h",
  ]
  public_deps = [
    ":util",
    "//third_party/abseil-cpp/absl/status:status",
    "//third_party/abseil-cpp/absl/strings:strings",
    "//third_party/abseil-cpp/absl/types:span",
    "//third_party/boringssl:crypto",
    "//third_party/tink/cc/util:secret_data",
    "//third_party/tink/cc/util:status",
    "//third_party/tink/cc/util:statusor",
  ]
  public_configs = [ "//third_party/tink:tink_config" ]
}

# CC Library : monitoring_util
source_set("monitoring_util") {
  configs += [ "//build/config:no_rtti" ]
  configs -= [ "//build/config:no_rtti" ]
  sources = [ "monitoring_util.h" ]
  public_deps = [
    "//third_party/abseil-cpp/absl/container:flat_hash_map",
    "//third_party/abseil-cpp/absl/status:status",
    "//third_party/tink/cc:primitive_set",
    "//third_party/tink/cc/monitoring:monitoring",
    "//third_party/tink/cc/proto:tink_proto",
    "//third_party/tink/cc/util:statusor",
  ]
  public_configs = [ "//third_party/tink:tink_config" ]
}
