1*61c4878aSAndroid Build Coastguard Worker# Copyright 2021 The Pigweed Authors 2*61c4878aSAndroid Build Coastguard Worker# 3*61c4878aSAndroid Build Coastguard Worker# Licensed under the Apache License, Version 2.0 (the "License"); you may not 4*61c4878aSAndroid Build Coastguard Worker# use this file except in compliance with the License. You may obtain a copy of 5*61c4878aSAndroid Build Coastguard Worker# the License at 6*61c4878aSAndroid Build Coastguard Worker# 7*61c4878aSAndroid Build Coastguard Worker# https://www.apache.org/licenses/LICENSE-2.0 8*61c4878aSAndroid Build Coastguard Worker# 9*61c4878aSAndroid Build Coastguard Worker# Unless required by applicable law or agreed to in writing, software 10*61c4878aSAndroid Build Coastguard Worker# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 11*61c4878aSAndroid Build Coastguard Worker# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 12*61c4878aSAndroid Build Coastguard Worker# License for the specific language governing permissions and limitations under 13*61c4878aSAndroid Build Coastguard Worker# the License. 14*61c4878aSAndroid Build Coastguard Worker 15*61c4878aSAndroid Build Coastguard Workerimport("//build_overrides/pigweed.gni") 16*61c4878aSAndroid Build Coastguard Workerimport("$dir_pw_build/facade.gni") 17*61c4878aSAndroid Build Coastguard Workerimport("$dir_pw_build/target_types.gni") 18*61c4878aSAndroid Build Coastguard Workerimport("$dir_pw_docgen/docs.gni") 19*61c4878aSAndroid Build Coastguard Workerimport("$dir_pw_third_party/boringssl/boringssl.gni") 20*61c4878aSAndroid Build Coastguard Workerimport("$dir_pw_tls_client/configs.gni") 21*61c4878aSAndroid Build Coastguard Workerimport("$dir_pw_unit_test/test.gni") 22*61c4878aSAndroid Build Coastguard Worker 23*61c4878aSAndroid Build Coastguard Workerconfig("public_includes") { 24*61c4878aSAndroid Build Coastguard Worker include_dirs = [ "public" ] 25*61c4878aSAndroid Build Coastguard Worker} 26*61c4878aSAndroid Build Coastguard Worker 27*61c4878aSAndroid Build Coastguard Workerpw_facade("pw_tls_client") { 28*61c4878aSAndroid Build Coastguard Worker backend = pw_tls_client_BACKEND 29*61c4878aSAndroid Build Coastguard Worker public_configs = [ ":public_includes" ] 30*61c4878aSAndroid Build Coastguard Worker public = [ 31*61c4878aSAndroid Build Coastguard Worker "public/pw_tls_client/options.h", 32*61c4878aSAndroid Build Coastguard Worker "public/pw_tls_client/session.h", 33*61c4878aSAndroid Build Coastguard Worker "public/pw_tls_client/status.h", 34*61c4878aSAndroid Build Coastguard Worker ] 35*61c4878aSAndroid Build Coastguard Worker public_deps = [ 36*61c4878aSAndroid Build Coastguard Worker "$dir_pw_assert", 37*61c4878aSAndroid Build Coastguard Worker "$dir_pw_bytes", 38*61c4878aSAndroid Build Coastguard Worker "$dir_pw_result", 39*61c4878aSAndroid Build Coastguard Worker "$dir_pw_status", 40*61c4878aSAndroid Build Coastguard Worker "$dir_pw_stream", 41*61c4878aSAndroid Build Coastguard Worker "$dir_pw_string", 42*61c4878aSAndroid Build Coastguard Worker ] 43*61c4878aSAndroid Build Coastguard Worker} 44*61c4878aSAndroid Build Coastguard Worker 45*61c4878aSAndroid Build Coastguard Workerpw_facade("tls_entropy") { 46*61c4878aSAndroid Build Coastguard Worker backend = pw_tls_client_ENTROPY_BACKEND 47*61c4878aSAndroid Build Coastguard Worker public_configs = [ ":public_includes" ] 48*61c4878aSAndroid Build Coastguard Worker public = [ "public/pw_tls_client/entropy.h" ] 49*61c4878aSAndroid Build Coastguard Worker public_deps = [ 50*61c4878aSAndroid Build Coastguard Worker "$dir_pw_bytes", 51*61c4878aSAndroid Build Coastguard Worker "$dir_pw_status", 52*61c4878aSAndroid Build Coastguard Worker ] 53*61c4878aSAndroid Build Coastguard Worker} 54*61c4878aSAndroid Build Coastguard Worker 55*61c4878aSAndroid Build Coastguard Worker# A fake entropy source that does nothing. It should only be used for 56*61c4878aSAndroid Build Coastguard Worker# demo and test purpose only. Production code shall not use it. 57*61c4878aSAndroid Build Coastguard Workerpw_source_set("fake_entropy") { 58*61c4878aSAndroid Build Coastguard Worker public_deps = [ ":tls_entropy.facade" ] 59*61c4878aSAndroid Build Coastguard Worker sources = [ "fake_entropy.cc" ] 60*61c4878aSAndroid Build Coastguard Worker deps = [ "$dir_pw_log" ] 61*61c4878aSAndroid Build Coastguard Worker} 62*61c4878aSAndroid Build Coastguard Worker 63*61c4878aSAndroid Build Coastguard Workerpw_facade("time") { 64*61c4878aSAndroid Build Coastguard Worker backend = pw_tls_client_TIME_BACKEND 65*61c4878aSAndroid Build Coastguard Worker public = [] 66*61c4878aSAndroid Build Coastguard Worker 67*61c4878aSAndroid Build Coastguard Worker # The target should only be used by TLS libraries to obtain date time 68*61c4878aSAndroid Build Coastguard Worker visibility = [ 69*61c4878aSAndroid Build Coastguard Worker ":*", 70*61c4878aSAndroid Build Coastguard Worker "$dir_pw_third_party/boringssl", 71*61c4878aSAndroid Build Coastguard Worker "$dir_pw_third_party/mbedtls", 72*61c4878aSAndroid Build Coastguard Worker "$dir_pw_third_party/mbedtls:mbedtls_v3", 73*61c4878aSAndroid Build Coastguard Worker ] 74*61c4878aSAndroid Build Coastguard Worker} 75*61c4878aSAndroid Build Coastguard Worker 76*61c4878aSAndroid Build Coastguard Worker# TODO: b/235290724 - Add a python target to generate source file from the 77*61c4878aSAndroid Build Coastguard Worker# specified CRLSet file in `pw_tls_client_CRLSET_FILE` 78*61c4878aSAndroid Build Coastguard Worker 79*61c4878aSAndroid Build Coastguard Workerpw_source_set("crlset") { 80*61c4878aSAndroid Build Coastguard Worker public_configs = [ ":public_includes" ] 81*61c4878aSAndroid Build Coastguard Worker public = [ "public/pw_tls_client/crlset.h" ] 82*61c4878aSAndroid Build Coastguard Worker public_deps = [ dir_pw_bytes ] 83*61c4878aSAndroid Build Coastguard Worker 84*61c4878aSAndroid Build Coastguard Worker # TODO: b/235290724 - Add sources generated from a CRLSet file to build. 85*61c4878aSAndroid Build Coastguard Worker} 86*61c4878aSAndroid Build Coastguard Worker 87*61c4878aSAndroid Build Coastguard Workerpw_source_set("test_server") { 88*61c4878aSAndroid Build Coastguard Worker sources = [ "test_server.cc" ] 89*61c4878aSAndroid Build Coastguard Worker public_configs = [ ":public_includes" ] 90*61c4878aSAndroid Build Coastguard Worker public = [ "public/pw_tls_client/test/test_server.h" ] 91*61c4878aSAndroid Build Coastguard Worker public_deps = [ 92*61c4878aSAndroid Build Coastguard Worker "$dir_pw_bytes", 93*61c4878aSAndroid Build Coastguard Worker "$dir_pw_log", 94*61c4878aSAndroid Build Coastguard Worker "$dir_pw_stream", 95*61c4878aSAndroid Build Coastguard Worker "$dir_pw_third_party/boringssl", 96*61c4878aSAndroid Build Coastguard Worker ] 97*61c4878aSAndroid Build Coastguard Worker} 98*61c4878aSAndroid Build Coastguard Worker 99*61c4878aSAndroid Build Coastguard Workerpw_test("test_server_test") { 100*61c4878aSAndroid Build Coastguard Worker enable_if = dir_pw_third_party_boringssl != "" 101*61c4878aSAndroid Build Coastguard Worker public_deps = [ 102*61c4878aSAndroid Build Coastguard Worker ":test_data", 103*61c4878aSAndroid Build Coastguard Worker ":test_server", 104*61c4878aSAndroid Build Coastguard Worker ] 105*61c4878aSAndroid Build Coastguard Worker sources = [ "test_server_test.cc" ] 106*61c4878aSAndroid Build Coastguard Worker} 107*61c4878aSAndroid Build Coastguard Worker 108*61c4878aSAndroid Build Coastguard Workerpw_python_action("generate_test_data") { 109*61c4878aSAndroid Build Coastguard Worker header_output = "$target_gen_dir/$target_name/test_certs_and_keys.h" 110*61c4878aSAndroid Build Coastguard Worker script = "py/pw_tls_client/generate_test_data.py" 111*61c4878aSAndroid Build Coastguard Worker python_deps = [ "py" ] 112*61c4878aSAndroid Build Coastguard Worker outputs = [ header_output ] 113*61c4878aSAndroid Build Coastguard Worker args = [ rebase_path(header_output) ] 114*61c4878aSAndroid Build Coastguard Worker} 115*61c4878aSAndroid Build Coastguard Worker 116*61c4878aSAndroid Build Coastguard Workerconfig("test_data_includes") { 117*61c4878aSAndroid Build Coastguard Worker test_header_out = get_target_outputs(":generate_test_data") 118*61c4878aSAndroid Build Coastguard Worker include_dirs = [ get_path_info(test_header_out[0], "dir") ] 119*61c4878aSAndroid Build Coastguard Worker} 120*61c4878aSAndroid Build Coastguard Worker 121*61c4878aSAndroid Build Coastguard Workergroup("test_data") { 122*61c4878aSAndroid Build Coastguard Worker public_deps = [ ":generate_test_data" ] 123*61c4878aSAndroid Build Coastguard Worker public_configs = [ ":test_data_includes" ] 124*61c4878aSAndroid Build Coastguard Worker} 125*61c4878aSAndroid Build Coastguard Worker 126*61c4878aSAndroid Build Coastguard Workerpw_test_group("tests") { 127*61c4878aSAndroid Build Coastguard Worker tests = [ ":test_server_test" ] 128*61c4878aSAndroid Build Coastguard Worker} 129*61c4878aSAndroid Build Coastguard Worker 130*61c4878aSAndroid Build Coastguard Workerpw_doc_group("docs") { 131*61c4878aSAndroid Build Coastguard Worker sources = [ 132*61c4878aSAndroid Build Coastguard Worker "backends.rst", 133*61c4878aSAndroid Build Coastguard Worker "docs.rst", 134*61c4878aSAndroid Build Coastguard Worker ] 135*61c4878aSAndroid Build Coastguard Worker} 136