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( 16 "//pw_build:pigweed.bzl", 17 "pw_cc_test", 18 "pw_facade", 19) 20 21package(default_visibility = ["//visibility:public"]) 22 23licenses(["notice"]) 24 25pw_facade( 26 name = "sha256", 27 hdrs = [ 28 "public/pw_crypto/sha256.h", 29 ], 30 backend = ":sha256_backend", 31 includes = ["public"], 32 deps = [ 33 "//pw_assert", 34 "//pw_bytes", 35 "//pw_log", 36 "//pw_status", 37 "//pw_stream", 38 ], 39) 40 41label_flag( 42 name = "sha256_backend", 43 build_setting_default = ":sha256_backend_multiplexer", 44) 45 46constraint_setting( 47 name = "sha256_backend_constraint_setting", 48) 49 50constraint_value( 51 name = "sha256_mbedtls_backend", 52 constraint_setting = ":sha256_backend_constraint_setting", 53) 54 55alias( 56 name = "sha256_backend_multiplexer", 57 actual = select({ 58 ":sha256_mbedtls_backend": ":sha256_mbedtls", 59 "//conditions:default": ":sha256_mbedtls", 60 }), 61) 62 63cc_library( 64 name = "sha256_mbedtls", 65 srcs = ["sha256_mbedtls.cc"], 66 hdrs = [ 67 "public/pw_crypto/sha256_mbedtls.h", 68 "public_overrides/mbedtls/pw_crypto/sha256_backend.h", 69 ], 70 includes = ["public_overrides/mbedtls"], 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 includes = ["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 deps = [ 167 ":ecdsa_facade", 168 "//pw_log", 169 "@micro_ecc//:uecc", 170 ], 171) 172 173pw_cc_test( 174 name = "ecdsa_test", 175 srcs = ["ecdsa_test.cc"], 176 deps = [ 177 ":ecdsa", 178 "//pw_unit_test", 179 ], 180) 181