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