# Copyright 2020 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.

# 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/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/subtle:subtle_util_boringssl",
    "//third_party/tink/cc/util:status",
    "//third_party/tink/cc/util:statusor",
    "//third_party/tink/proto:tink_proto",
  ]
  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/util:status",
    "//third_party/tink/proto:config_proto",
  ]
  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/tink/cc:key_manager",
    "//third_party/tink/cc:mac",
    "//third_party/tink/cc/core:core/key_type_manager",
    "//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:enums",
    "//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",
    "//third_party/tink/proto:aes_cmac_proto",
    "//third_party/tink/proto:common_proto",
    "//third_party/tink/proto:tink_proto",
  ]
  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/strings:strings",
    "//third_party/tink/cc:mac",
    "//third_party/tink/cc/core:core/key_type_manager",
    "//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:protobuf_helper",
    "//third_party/tink/cc/util:status",
    "//third_party/tink/cc/util:statusor",
    "//third_party/tink/cc/util:validation",
    "//third_party/tink/proto:common_proto",
    "//third_party/tink/proto:hmac_proto",
    "//third_party/tink/proto:tink_proto",
  ]
  public_configs = [ "//third_party/tink:tink_config" ]
}
