1# Copyright 2021 The Pigweed Authors 2# 3# Licensed under the Apache License, Version 2.0 (the "License"); you may not 4# use this file except in compliance with the License. You may obtain a copy of 5# the License at 6# 7# https://www.apache.org/licenses/LICENSE-2.0 8# 9# Unless required by applicable law or agreed to in writing, software 10# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 11# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 12# License for the specific language governing permissions and limitations under 13# the License. 14 15load("//pw_build:pw_facade.bzl", "pw_facade") 16load("//pw_unit_test:pw_cc_test.bzl", "pw_cc_test") 17 18package(default_visibility = ["//visibility:public"]) 19 20licenses(["notice"]) 21 22pw_facade( 23 name = "sha256", 24 hdrs = [ 25 "public/pw_crypto/sha256.h", 26 ], 27 backend = ":sha256_backend", 28 strip_include_prefix = "public", 29 deps = [ 30 "//pw_assert", 31 "//pw_bytes", 32 "//pw_log", 33 "//pw_status", 34 "//pw_stream", 35 ], 36) 37 38label_flag( 39 name = "sha256_backend", 40 build_setting_default = ":sha256_backend_multiplexer", 41) 42 43constraint_setting( 44 name = "sha256_backend_constraint_setting", 45) 46 47constraint_value( 48 name = "sha256_mbedtls_backend", 49 constraint_setting = ":sha256_backend_constraint_setting", 50) 51 52alias( 53 name = "sha256_backend_multiplexer", 54 actual = select({ 55 ":sha256_mbedtls_backend": ":sha256_mbedtls", 56 "//conditions:default": ":sha256_mbedtls", 57 }), 58) 59 60cc_library( 61 name = "sha256_mbedtls", 62 srcs = ["sha256_mbedtls.cc"], 63 hdrs = [ 64 "public/pw_crypto/sha256_mbedtls.h", 65 "public_overrides/mbedtls/pw_crypto/sha256_backend.h", 66 ], 67 includes = [ 68 "public", 69 "public_overrides/mbedtls", 70 ], 71 deps = [ 72 ":sha256.facade", 73 "@mbedtls", 74 ], 75) 76 77pw_cc_test( 78 name = "sha256_test", 79 srcs = ["sha256_test.cc"], 80 deps = [ 81 ":sha256", 82 "//pw_unit_test", 83 ], 84) 85 86cc_library( 87 name = "sha256_mock", 88 srcs = ["sha256_mock.cc"], 89 hdrs = [ 90 "public/pw_crypto/sha256_mock.h", 91 "public_overrides/mock/pw_crypto/sha256_backend.h", 92 ], 93 includes = [ 94 "public", 95 "public_overrides/mock", 96 ], 97 deps = [":sha256.facade"], 98) 99 100pw_cc_test( 101 name = "sha256_mock_test", 102 srcs = ["sha256_mock_test.cc"], 103 deps = [ 104 ":sha256_mock", 105 "//pw_unit_test", 106 ], 107) 108 109pw_facade( 110 name = "ecdsa", 111 hdrs = [ 112 "public/pw_crypto/ecdsa.h", 113 ], 114 backend = ":ecdsa_backend", 115 strip_include_prefix = "public", 116 deps = [ 117 "//pw_bytes", 118 "//pw_status", 119 ], 120) 121 122label_flag( 123 name = "ecdsa_backend", 124 build_setting_default = ":ecdsa_backend_multiplexer", 125) 126 127constraint_setting( 128 name = "ecdsa_backend_constraint_setting", 129) 130 131constraint_value( 132 name = "ecdsa_mbedtls_backend", 133 constraint_setting = ":ecdsa_backend_constraint_setting", 134) 135 136constraint_value( 137 name = "ecdsa_uecc_backend", 138 constraint_setting = ":ecdsa_backend_constraint_setting", 139) 140 141alias( 142 name = "ecdsa_backend_multiplexer", 143 actual = select({ 144 ":ecdsa_mbedtls_backend": ":ecdsa_mbedtls", 145 ":ecdsa_uecc_backend": ":ecdsa_uecc", 146 "//conditions:default": ":ecdsa_mbedtls", 147 }), 148) 149 150cc_library( 151 name = "ecdsa_mbedtls", 152 srcs = ["ecdsa_mbedtls.cc"], 153 deps = [ 154 ":ecdsa.facade", 155 "//pw_function", 156 "//pw_log", 157 "@mbedtls", 158 ], 159) 160 161cc_library( 162 name = "ecdsa_uecc", 163 srcs = [ 164 "ecdsa_uecc.cc", 165 ], 166 # TODO: b/261603269 - Get this to build. 167 tags = ["manual"], 168 deps = [ 169 ":ecdsa.facade", 170 "//pw_log", 171 "@micro_ecc//:uecc", 172 ], 173) 174 175pw_cc_test( 176 name = "ecdsa_test", 177 srcs = ["ecdsa_test.cc"], 178 deps = [ 179 ":ecdsa", 180 "//pw_unit_test", 181 ], 182) 183 184filegroup( 185 name = "doxygen", 186 srcs = [ 187 "public/pw_crypto/ecdsa.h", 188 "public/pw_crypto/sha256.h", 189 ], 190) 191