# 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 : mac_wrapper
source_set("mac_wrapper") {
  configs += [ "//build/config:no_rtti" ]
  configs -= [ "//build/config:no_rtti" ]
  sources = [
    "mac_wrapper.cc",
    "mac_wrapper.h",
  ]
  public_deps = [
    "//third_party/abseil-cpp/absl/status:status",
    "//third_party/abseil-cpp/absl/strings:strings",
    "//third_party/tink/cc:crypto_format",
    "//third_party/tink/cc:mac",
    "//third_party/tink/cc:primitive_set",
    "//third_party/tink/cc:primitive_wrapper",
    "//third_party/tink/cc/internal:monitoring_util",
    "//third_party/tink/cc/internal:registry_impl",
    "//third_party/tink/cc/internal:util",
    "//third_party/tink/cc/monitoring:monitoring",
    "//third_party/tink/cc/proto:tink_proto",
    "//third_party/tink/cc/util:status",
    "//third_party/tink/cc/util:statusor",
  ]
  public_configs = [ "//third_party/tink:tink_config" ]
}

# CC Library : mac_config
source_set("mac_config") {
  configs += [ "//build/config:no_rtti" ]
  configs -= [ "//build/config:no_rtti" ]
  sources = [
    "mac_config.cc",
    "mac_config.h",
  ]
  public_deps = [
    ":aes_cmac_key_manager",
    ":hmac_key_manager",
    ":mac_wrapper",
    "//third_party/abseil-cpp/absl/base:core_headers",
    "//third_party/abseil-cpp/absl/memory:memory",
    "//third_party/tink/cc:registry",
    "//third_party/tink/cc/config:config_util",
    "//third_party/tink/cc/config:tink_fips",
    "//third_party/tink/cc/mac/internal:chunked_mac_wrapper",
    "//third_party/tink/cc/proto:config_proto",
    "//third_party/tink/cc/util:status",
  ]
  public_configs = [ "//third_party/tink:tink_config" ]
}

# CC Library : aes_cmac_key_manager
source_set("aes_cmac_key_manager") {
  configs += [ "//build/config:no_rtti" ]
  configs -= [ "//build/config:no_rtti" ]
  sources = [ "aes_cmac_key_manager.h" ]
  public_deps = [
    "//third_party/abseil-cpp/absl/memory:memory",
    "//third_party/abseil-cpp/absl/status:status",
    "//third_party/abseil-cpp/absl/strings:strings",
    "//third_party/tink/cc:chunked_mac",
    "//third_party/tink/cc:core/key_type_manager",
    "//third_party/tink/cc:key_manager",
    "//third_party/tink/cc:mac",
    "//third_party/tink/cc/mac/internal:chunked_mac_impl",
    "//third_party/tink/cc/proto:aes_cmac_proto",
    "//third_party/tink/cc/proto:tink_proto",
    "//third_party/tink/cc/subtle:aes_cmac_boringssl",
    "//third_party/tink/cc/subtle:random",
    "//third_party/tink/cc/util:constants",
    "//third_party/tink/cc/util:errors",
    "//third_party/tink/cc/util:protobuf_helper",
    "//third_party/tink/cc/util:secret_data",
    "//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 : hmac_key_manager
source_set("hmac_key_manager") {
  configs += [ "//build/config:no_rtti" ]
  configs -= [ "//build/config:no_rtti" ]
  sources = [
    "hmac_key_manager.cc",
    "hmac_key_manager.h",
  ]
  public_deps = [
    "//third_party/abseil-cpp/absl/memory:memory",
    "//third_party/abseil-cpp/absl/status:status",
    "//third_party/abseil-cpp/absl/strings:strings",
    "//third_party/tink/cc:chunked_mac",
    "//third_party/tink/cc:core/key_type_manager",
    "//third_party/tink/cc:mac",
    "//third_party/tink/cc/mac/internal:chunked_mac_impl",
    "//third_party/tink/cc/proto:common_proto",
    "//third_party/tink/cc/proto:hmac_proto",
    "//third_party/tink/cc/proto:tink_proto",
    "//third_party/tink/cc/subtle:hmac_boringssl",
    "//third_party/tink/cc/subtle:random",
    "//third_party/tink/cc/util:constants",
    "//third_party/tink/cc/util:enums",
    "//third_party/tink/cc/util:errors",
    "//third_party/tink/cc/util:input_stream_util",
    "//third_party/tink/cc/util:protobuf_helper",
    "//third_party/tink/cc/util:secret_data",
    "//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" ]
}
