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

import("//build/fuzzing/fuzzer.gni")
import("//build/test.gni")
import("//src/sys/build/fuchsia_unittest_package.gni")

group("tests") {
  testonly = true
  deps = [
    ":zircon-crypto-fuzzers",
    ":zircon-crypto-test-pkg",
  ]
}

test("zircon-crypto") {
  output_name = "zircon-crypto-test"
  if (is_fuchsia) {
    configs += [ "//build/unification/config:zircon-migrated" ]
  }
  if (is_fuchsia) {
    fdio_config = [ "//build/config/fuchsia:fdio_config" ]
    if (configs + fdio_config - fdio_config != configs) {
      configs -= fdio_config
    }
  }
  sources = [
    "aead.cc",
    "bytes.cc",
    "cipher.cc",
    "hkdf.cc",
    "hmac.cc",
    "secret.cc",
    "utils.cc",
  ]
  deps = [
    "//sdk/lib/fdio",
    "//zircon/public/lib/fbl",
    "//zircon/public/lib/zxtest",
    "//zircon/system/ulib/zircon-crypto",
  ]
}

fuzzer("hmac-fuzzer") {
  sources = [ "hmac-fuzzer.cc" ]
  deps = [
    "//zircon/public/lib/fbl",
    "//zircon/system/ulib/zircon-crypto",
  ]
}

fuzzers_package("zircon-crypto-fuzzers") {
  cpp_fuzzers = [ ":hmac-fuzzer" ]
}

fuchsia_unittest_package("zircon-crypto-test-pkg") {
  package_name = "zircon-crypto-test"
  deps = [ ":zircon-crypto" ]
}
