# Copyright 2021 The Cobalt Authors. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

static_library("crypto_impl") {
  has_pedantic_warnings = true

  sources = [
    "crypto_impl.cc",
    "crypto_impl.h",
  ]

  deps = [
    "//base",
    "//starboard",
    "//third_party/boringssl:crypto",
  ]
}

static_library("subtlecrypto") {
  has_pedantic_warnings = true
  sources = [
    "crypto_key.cc",
    "crypto_key.h",
    "subtle_crypto.cc",
    "subtle_crypto.h",
  ]
  deps = [
    ":crypto_impl",
    "//cobalt/base",
    "//cobalt/browser:generated_types",
    "//cobalt/dom",
    "//cobalt/script",
    "//cobalt/script:engine",
    "//cobalt/web:dom_exception",
  ]
}

target(gtest_target_type, "crypto_impl_test") {
  has_pedantic_warnings = true
  testonly = true
  sources = [ "crypto_impl_test.cc" ]

  deps = [
    ":crypto_impl",
    "//cobalt/base",
    "//cobalt/test:run_all_unittests",
    "//testing/gmock",
    "//testing/gtest",
  ]
}
