[email protected] | c6f27f2 | 2013-08-21 21:44:59 | [diff] [blame] | 1 | # Copyright (c) 2013 The Chromium Authors. All rights reserved. |
| 2 | # Use of this source code is governed by a BSD-style license that can be |
| 3 | # found in the LICENSE file. |
| 4 | |
Yuta Hijikata | bf95320 | 2020-11-12 08:43:55 | [diff] [blame] | 5 | import("//build/config/chromeos/ui_mode.gni") |
[email protected] | 3ad0946b | 2014-02-24 21:29:49 | [diff] [blame] | 6 | import("//build/config/crypto.gni") |
qsr | fb5251d1 | 2015-01-21 15:57:22 | [diff] [blame] | 7 | import("//testing/test.gni") |
[email protected] | c6f27f2 | 2013-08-21 21:44:59 | [diff] [blame] | 8 | |
sergeyu | 99d83f9 | 2015-09-14 23:03:33 | [diff] [blame] | 9 | component("crypto") { |
| 10 | output_name = "crcrypto" # Avoid colliding with OpenSSL's libcrypto. |
| 11 | sources = [ |
svaldez | 22de42fe | 2016-04-21 19:42:22 | [diff] [blame] | 12 | "aead.cc", |
| 13 | "aead.h", |
sergeyu | 99d83f9 | 2015-09-14 23:03:33 | [diff] [blame] | 14 | "crypto_export.h", |
svaldez | 22de42fe | 2016-04-21 19:42:22 | [diff] [blame] | 15 | "ec_private_key.cc", |
sergeyu | 99d83f9 | 2015-09-14 23:03:33 | [diff] [blame] | 16 | "ec_private_key.h", |
sergeyu | 99d83f9 | 2015-09-14 23:03:33 | [diff] [blame] | 17 | "ec_signature_creator.cc", |
| 18 | "ec_signature_creator.h", |
svaldez | e83af29 | 2016-04-26 14:33:37 | [diff] [blame] | 19 | "ec_signature_creator_impl.cc", |
sergeyu | 99d83f9 | 2015-09-14 23:03:33 | [diff] [blame] | 20 | "ec_signature_creator_impl.h", |
sergeyu | 99d83f9 | 2015-09-14 23:03:33 | [diff] [blame] | 21 | "encryptor.cc", |
| 22 | "encryptor.h", |
sergeyu | 99d83f9 | 2015-09-14 23:03:33 | [diff] [blame] | 23 | "hkdf.cc", |
| 24 | "hkdf.h", |
| 25 | "hmac.cc", |
| 26 | "hmac.h", |
sergeyu | 99d83f9 | 2015-09-14 23:03:33 | [diff] [blame] | 27 | "openssl_util.cc", |
| 28 | "openssl_util.h", |
sergeyu | 99d83f9 | 2015-09-14 23:03:33 | [diff] [blame] | 29 | "p224_spake.cc", |
| 30 | "p224_spake.h", |
| 31 | "random.cc", |
| 32 | "random.h", |
svaldez | 22de42fe | 2016-04-21 19:42:22 | [diff] [blame] | 33 | "rsa_private_key.cc", |
sergeyu | 99d83f9 | 2015-09-14 23:03:33 | [diff] [blame] | 34 | "rsa_private_key.h", |
sergeyu | 99d83f9 | 2015-09-14 23:03:33 | [diff] [blame] | 35 | "scoped_capi_types.h", |
| 36 | "scoped_nss_types.h", |
svaldez | 22de42fe | 2016-04-21 19:42:22 | [diff] [blame] | 37 | "secure_hash.cc", |
sergeyu | 99d83f9 | 2015-09-14 23:03:33 | [diff] [blame] | 38 | "secure_hash.h", |
sergeyu | 99d83f9 | 2015-09-14 23:03:33 | [diff] [blame] | 39 | "secure_util.cc", |
| 40 | "secure_util.h", |
| 41 | "sha2.cc", |
| 42 | "sha2.h", |
svaldez | 22de42fe | 2016-04-21 19:42:22 | [diff] [blame] | 43 | "signature_creator.cc", |
sergeyu | 99d83f9 | 2015-09-14 23:03:33 | [diff] [blame] | 44 | "signature_creator.h", |
svaldez | 22de42fe | 2016-04-21 19:42:22 | [diff] [blame] | 45 | "signature_verifier.cc", |
sergeyu | 99d83f9 | 2015-09-14 23:03:33 | [diff] [blame] | 46 | "signature_verifier.h", |
svaldez | 9c64146 | 2016-05-02 20:49:05 | [diff] [blame] | 47 | "symmetric_key.cc", |
sergeyu | 99d83f9 | 2015-09-14 23:03:33 | [diff] [blame] | 48 | "symmetric_key.h", |
Adam Langley | 979ee87 | 2021-03-12 02:47:19 | [diff] [blame^] | 49 | "unexportable_key.cc", |
| 50 | "unexportable_key.h", |
sergeyu | 99d83f9 | 2015-09-14 23:03:33 | [diff] [blame] | 51 | ] |
| 52 | |
sergeyu | 99d83f9 | 2015-09-14 23:03:33 | [diff] [blame] | 53 | deps = [ |
| 54 | ":platform", |
| 55 | "//base", |
| 56 | "//base/third_party/dynamic_annotations", |
| 57 | ] |
| 58 | |
Nico Weber | 5413772 | 2020-01-13 19:53:30 | [diff] [blame] | 59 | public_deps = [ "//third_party/boringssl" ] |
davidben | 74f6744 | 2016-10-01 01:45:22 | [diff] [blame] | 60 | |
Sylvain Defresne | bb05f532 | 2020-09-15 10:53:18 | [diff] [blame] | 61 | if (is_apple) { |
| 62 | sources += [ |
sergeyu | 99d83f9 | 2015-09-14 23:03:33 | [diff] [blame] | 63 | "apple_keychain.h", |
Sylvain Defresne | bb05f532 | 2020-09-15 10:53:18 | [diff] [blame] | 64 | |
| 65 | # TODO(brettw): these mocks should be moved to a test_support_crypto |
| 66 | # target if possible. |
erikchen | eece6c3 | 2015-07-07 22:13:11 | [diff] [blame] | 67 | "mock_apple_keychain.cc", |
| 68 | "mock_apple_keychain.h", |
sergeyu | 99d83f9 | 2015-09-14 23:03:33 | [diff] [blame] | 69 | ] |
Sylvain Defresne | bb05f532 | 2020-09-15 10:53:18 | [diff] [blame] | 70 | |
| 71 | if (is_mac) { |
| 72 | sources += [ |
| 73 | "apple_keychain_mac.mm", |
| 74 | |
| 75 | # TODO(brettw): these mocks should be moved to a test_support_crypto |
| 76 | # target if possible. |
| 77 | "mock_apple_keychain_mac.cc", |
| 78 | ] |
| 79 | } |
| 80 | if (is_ios) { |
| 81 | sources += [ |
| 82 | "apple_keychain_ios.mm", |
| 83 | |
| 84 | # TODO(brettw): these mocks should be moved to a test_support_crypto |
| 85 | # target if possible. |
| 86 | "mock_apple_keychain_ios.cc", |
| 87 | ] |
| 88 | } |
| 89 | |
Robert Sesek | d9106de | 2020-06-30 23:24:02 | [diff] [blame] | 90 | frameworks = [ |
rsesek | 02aa51c | 2016-05-11 02:13:57 | [diff] [blame] | 91 | "CoreFoundation.framework", |
| 92 | "Security.framework", |
| 93 | ] |
sergeyu | 99d83f9 | 2015-09-14 23:03:33 | [diff] [blame] | 94 | } |
| 95 | |
Sylvain Defresne | bb05f532 | 2020-09-15 10:53:18 | [diff] [blame] | 96 | if (is_mac) { |
| 97 | sources += [ |
sergeyu | 99d83f9 | 2015-09-14 23:03:33 | [diff] [blame] | 98 | "mac_security_services_lock.cc", |
| 99 | "mac_security_services_lock.h", |
| 100 | ] |
| 101 | } |
Sylvain Defresne | bb05f532 | 2020-09-15 10:53:18 | [diff] [blame] | 102 | if (is_win) { |
| 103 | sources += [ |
sergeyu | 99d83f9 | 2015-09-14 23:03:33 | [diff] [blame] | 104 | "capi_util.cc", |
| 105 | "capi_util.h", |
Adam Langley | 979ee87 | 2021-03-12 02:47:19 | [diff] [blame^] | 106 | "unexportable_key_win.cc", |
sergeyu | 99d83f9 | 2015-09-14 23:03:33 | [diff] [blame] | 107 | ] |
Adam Langley | 979ee87 | 2021-03-12 02:47:19 | [diff] [blame^] | 108 | libs = [ "ncrypt.lib" ] |
sergeyu | 99d83f9 | 2015-09-14 23:03:33 | [diff] [blame] | 109 | } |
| 110 | |
svaldez | 2135be5 | 2016-04-20 16:34:53 | [diff] [blame] | 111 | # Some files are built when NSS is used for the platform certificate library. |
Sylvain Defresne | bb05f532 | 2020-09-15 10:53:18 | [diff] [blame] | 112 | if (use_nss_certs) { |
| 113 | sources += [ |
| 114 | "nss_crypto_module_delegate.h", |
davidben | 85bad9e | 2015-05-11 20:20:10 | [diff] [blame] | 115 | "nss_key_util.cc", |
| 116 | "nss_key_util.h", |
davidben | 2bcbc6b | 2015-04-22 02:36:41 | [diff] [blame] | 117 | "nss_util.cc", |
| 118 | "nss_util.h", |
| 119 | "nss_util_internal.h", |
| 120 | ] |
Yuta Hijikata | bf95320 | 2020-11-12 08:43:55 | [diff] [blame] | 121 | deps += [ "//build:chromeos_buildflags" ] |
sergeyu | 99d83f9 | 2015-09-14 23:03:33 | [diff] [blame] | 122 | } |
davidben | 2bcbc6b | 2015-04-22 02:36:41 | [diff] [blame] | 123 | |
Yuta Hijikata | bf95320 | 2020-11-12 08:43:55 | [diff] [blame] | 124 | if (is_chromeos_ash) { |
David Benjamin | 2f2cb36 | 2019-10-15 22:51:05 | [diff] [blame] | 125 | sources += [ "nss_util_chromeos.cc" ] |
| 126 | } |
| 127 | |
Yuta Hijikata | 2eecbe2 | 2021-01-13 05:39:22 | [diff] [blame] | 128 | if (is_chromeos || is_chromeos_lacros) { |
Michael Ershov | 1c50ac95 | 2020-12-02 21:01:17 | [diff] [blame] | 129 | sources += [ |
| 130 | "chaps_support.cc", |
| 131 | "chaps_support.h", |
| 132 | ] |
| 133 | } |
| 134 | |
sergeyu | 99d83f9 | 2015-09-14 23:03:33 | [diff] [blame] | 135 | defines = [ "CRYPTO_IMPLEMENTATION" ] |
erikchen | eece6c3 | 2015-07-07 22:13:11 | [diff] [blame] | 136 | |
sergeyu | 99d83f9 | 2015-09-14 23:03:33 | [diff] [blame] | 137 | if (is_nacl) { |
| 138 | deps += [ "//native_client_sdk/src/libraries/nacl_io" ] |
erikchen | eece6c3 | 2015-07-07 22:13:11 | [diff] [blame] | 139 | } |
[email protected] | c6f27f2 | 2013-08-21 21:44:59 | [diff] [blame] | 140 | } |
| 141 | |
brettw | 690c9667 | 2015-04-21 16:19:54 | [diff] [blame] | 142 | test("crypto_unittests") { |
| 143 | sources = [ |
svaldez | 22de42fe | 2016-04-21 19:42:22 | [diff] [blame] | 144 | "aead_unittest.cc", |
brettw | 690c9667 | 2015-04-21 16:19:54 | [diff] [blame] | 145 | "ec_private_key_unittest.cc", |
| 146 | "ec_signature_creator_unittest.cc", |
| 147 | "encryptor_unittest.cc", |
brettw | 690c9667 | 2015-04-21 16:19:54 | [diff] [blame] | 148 | "hmac_unittest.cc", |
brettw | 690c9667 | 2015-04-21 16:19:54 | [diff] [blame] | 149 | "p224_spake_unittest.cc", |
brettw | 690c9667 | 2015-04-21 16:19:54 | [diff] [blame] | 150 | "random_unittest.cc", |
brettw | 690c9667 | 2015-04-21 16:19:54 | [diff] [blame] | 151 | "rsa_private_key_unittest.cc", |
| 152 | "secure_hash_unittest.cc", |
| 153 | "sha2_unittest.cc", |
| 154 | "signature_creator_unittest.cc", |
| 155 | "signature_verifier_unittest.cc", |
| 156 | "symmetric_key_unittest.cc", |
Adam Langley | 979ee87 | 2021-03-12 02:47:19 | [diff] [blame^] | 157 | "unexportable_key_unittest.cc", |
brettw | 690c9667 | 2015-04-21 16:19:54 | [diff] [blame] | 158 | ] |
dpranke | 4376059 | 2014-11-08 02:59:57 | [diff] [blame] | 159 | |
svaldez | 2135be5 | 2016-04-20 16:34:53 | [diff] [blame] | 160 | # Some files are built when NSS is used for the platform certificate library. |
Sylvain Defresne | bb05f532 | 2020-09-15 10:53:18 | [diff] [blame] | 161 | if (use_nss_certs) { |
| 162 | sources += [ |
davidben | 85bad9e | 2015-05-11 20:20:10 | [diff] [blame] | 163 | "nss_key_util_unittest.cc", |
| 164 | "nss_util_unittest.cc", |
| 165 | ] |
[email protected] | 7a7e085 | 2014-04-14 23:25:13 | [diff] [blame] | 166 | } |
brettw | 690c9667 | 2015-04-21 16:19:54 | [diff] [blame] | 167 | |
brettw | 690c9667 | 2015-04-21 16:19:54 | [diff] [blame] | 168 | deps = [ |
| 169 | ":crypto", |
| 170 | ":platform", |
| 171 | ":test_support", |
| 172 | "//base", |
| 173 | "//base/test:run_all_unittests", |
| 174 | "//base/test:test_support", |
| 175 | "//testing/gmock", |
| 176 | "//testing/gtest", |
| 177 | ] |
[email protected] | 7a7e085 | 2014-04-14 23:25:13 | [diff] [blame] | 178 | } |
[email protected] | c6f27f2 | 2013-08-21 21:44:59 | [diff] [blame] | 179 | |
Adam Langley | 979ee87 | 2021-03-12 02:47:19 | [diff] [blame^] | 180 | static_library("test_support") { |
brettw | 2dbbe5b0 | 2016-07-14 19:38:57 | [diff] [blame] | 181 | testonly = true |
Adam Langley | 979ee87 | 2021-03-12 02:47:19 | [diff] [blame^] | 182 | sources = [ |
| 183 | "scoped_mock_unexportable_key_provider.cc", |
| 184 | "scoped_mock_unexportable_key_provider.h", |
| 185 | ] |
[email protected] | 190933f | 2014-07-28 09:56:51 | [diff] [blame] | 186 | |
brettw | 2dbbe5b0 | 2016-07-14 19:38:57 | [diff] [blame] | 187 | if (use_nss_certs) { |
| 188 | sources += [ |
[email protected] | 190933f | 2014-07-28 09:56:51 | [diff] [blame] | 189 | "scoped_test_nss_db.cc", |
| 190 | "scoped_test_nss_db.h", |
| 191 | ] |
| 192 | } |
| 193 | |
Yuta Hijikata | bf95320 | 2020-11-12 08:43:55 | [diff] [blame] | 194 | if (is_chromeos_ash) { |
brettw | 2dbbe5b0 | 2016-07-14 19:38:57 | [diff] [blame] | 195 | sources += [ |
[email protected] | 190933f | 2014-07-28 09:56:51 | [diff] [blame] | 196 | "scoped_test_nss_chromeos_user.cc", |
| 197 | "scoped_test_nss_chromeos_user.h", |
| 198 | "scoped_test_system_nss_key_slot.cc", |
| 199 | "scoped_test_system_nss_key_slot.h", |
| 200 | ] |
| 201 | } |
brettw | 2dbbe5b0 | 2016-07-14 19:38:57 | [diff] [blame] | 202 | |
| 203 | deps = [ |
| 204 | ":crypto", |
| 205 | ":platform", |
| 206 | "//base", |
| 207 | ] |
[email protected] | 190933f | 2014-07-28 09:56:51 | [diff] [blame] | 208 | } |
| 209 | |
brettw | 70d2f6e | 2015-02-25 18:46:53 | [diff] [blame] | 210 | config("platform_config") { |
svaldez | 2135be5 | 2016-04-20 16:34:53 | [diff] [blame] | 211 | if (use_nss_certs && is_clang) { |
brettw | 70d2f6e | 2015-02-25 18:46:53 | [diff] [blame] | 212 | # There is a broken header guard in /usr/include/nss/secmod.h: |
| 213 | # https://bugzilla.mozilla.org/show_bug.cgi?id=884072 |
| 214 | cflags = [ "-Wno-header-guard" ] |
| 215 | } |
| 216 | } |
| 217 | |
[email protected] | 7a7e085 | 2014-04-14 23:25:13 | [diff] [blame] | 218 | # This is a meta-target that forwards to NSS's SSL library or OpenSSL, |
| 219 | # according to the state of the crypto flags. A target just wanting to depend |
| 220 | # on the current SSL library should just depend on this. |
| 221 | group("platform") { |
Nico Weber | 5413772 | 2020-01-13 19:53:30 | [diff] [blame] | 222 | public_deps = [ "//third_party/boringssl" ] |
davidben | 2bcbc6b | 2015-04-22 02:36:41 | [diff] [blame] | 223 | |
svaldez | 2135be5 | 2016-04-20 16:34:53 | [diff] [blame] | 224 | # Link in NSS if it is used for the platform certificate library |
| 225 | # (use_nss_certs). |
| 226 | if (use_nss_certs) { |
| 227 | public_configs = [ ":platform_config" ] |
Nico Weber | 2023256d | 2018-08-28 17:44:57 | [diff] [blame] | 228 | public_configs += [ "//build/config/linux/nss:system_nss_no_ssl_config" ] |
[email protected] | c6f27f2 | 2013-08-21 21:44:59 | [diff] [blame] | 229 | } |
| 230 | } |