# Copyright 2021 The Pigweed Authors
#
# 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
#
#     https:#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.

import("//build_overrides/pigweed.gni")
import("$dir_pw_build/target_types.gni")
import("tls_client_example.gni")

teensy_bloaty_config = rebase_path("./teensy41_bloaty_config.bloaty")

root_ca_certificates = [
  "//applications/tls_example/trust_store/global_sign_r2.pem",
  "//applications/tls_example/trust_store/gts_ca_101.pem",
]

tls_client_example("boringssl_teensy_ethernet") {
  tls_backend = "backends/tls/boringssl"
  transport_backend = "backends/transport/teensy_ethernet"
  bloaty_config = teensy_bloaty_config
  root_certificates = root_ca_certificates

  # Build time will be used as the time source for certificate expiration check
  # by default. To use a different specified time. Add the following argument:
  #
  # time = "03/29/2021 12:00:00:00"
}

tls_client_example("picotls_teensy_ethernet") {
  tls_backend = "backends/tls/picotls"
  transport_backend = "backends/transport/teensy_ethernet"
  bloaty_config = teensy_bloaty_config
  root_certificates = root_ca_certificates
}

tls_client_example("mbedtls_teensy_ethernet") {
  tls_backend = "backends/tls/mbedtls"
  transport_backend = "backends/transport/teensy_ethernet"
  bloaty_config = teensy_bloaty_config
  root_certificates = root_ca_certificates
}
