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

source_set("clock") {
  sources = [
    "clock.h",
  ]
}

static_library("encrypted_message_util") {
  sources = [
    "encrypted_message_util.cc",
    "encrypted_message_util.h",
  ]
  configs += [ "//third_party/cobalt:cobalt_config" ]

  deps = [
    "//garnet/public/lib/fxl",
    "//third_party/cobalt:cobalt_proto",
  ]
}

static_library("datetime_util") {
  sources = [
    "datetime_util.cc",
    "datetime_util.h",
  ]
  configs += [ "//third_party/cobalt:cobalt_config" ]
  deps = [
    "//third_party/cobalt/config:cobalt_config_proto",
  ]
}

static_library("pem_util") {
  sources = [
    "pem_util.cc",
    "pem_util.h",
  ]
  configs += [ "//third_party/cobalt:cobalt_config" ]
  deps = [
    "//third_party/cobalt/util/crypto_util",
  ]
}

static_library("status") {
  sources = [
    "status.cc",
    "status_codes.h",
    "status.h",
  ]
  configs += [ "//third_party/cobalt:cobalt_config" ]
}
