[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", |
davidben | 7dad2a3 | 2016-03-01 23:47:47 | [diff] [blame] | 16 | "auto_cbb.h", |
sergeyu | 99d83f9 | 2015-09-14 23:03:33 | [diff] [blame] | 17 | "capi_util.cc", |
| 18 | "capi_util.h", |
| 19 | "crypto_export.h", |
| 20 | "cssm_init.cc", |
| 21 | "cssm_init.h", |
svaldez | 22de42fe | 2016-04-21 19:42:22 | [diff] [blame] | 22 | "curve25519.cc", |
sergeyu | 99d83f9 | 2015-09-14 23:03:33 | [diff] [blame] | 23 | "curve25519.h", |
svaldez | 22de42fe | 2016-04-21 19:42:22 | [diff] [blame] | 24 | "ec_private_key.cc", |
sergeyu | 99d83f9 | 2015-09-14 23:03:33 | [diff] [blame] | 25 | "ec_private_key.h", |
sergeyu | 99d83f9 | 2015-09-14 23:03:33 | [diff] [blame] | 26 | "ec_signature_creator.cc", |
| 27 | "ec_signature_creator.h", |
svaldez | e83af29 | 2016-04-26 14:33:37 | [diff] [blame] | 28 | "ec_signature_creator_impl.cc", |
sergeyu | 99d83f9 | 2015-09-14 23:03:33 | [diff] [blame] | 29 | "ec_signature_creator_impl.h", |
sergeyu | 99d83f9 | 2015-09-14 23:03:33 | [diff] [blame] | 30 | "encryptor.cc", |
| 31 | "encryptor.h", |
sergeyu | 99d83f9 | 2015-09-14 23:03:33 | [diff] [blame] | 32 | "hkdf.cc", |
| 33 | "hkdf.h", |
| 34 | "hmac.cc", |
| 35 | "hmac.h", |
sergeyu | 99d83f9 | 2015-09-14 23:03:33 | [diff] [blame] | 36 | "mac_security_services_lock.cc", |
| 37 | "mac_security_services_lock.h", |
[email protected] | c6f27f2 | 2013-08-21 21:44:59 | [diff] [blame] | 38 | |
sergeyu | 99d83f9 | 2015-09-14 23:03:33 | [diff] [blame] | 39 | # TODO(brettw) these mocks should be moved to a test_support_crypto target |
| 40 | # if possible. |
| 41 | "mock_apple_keychain.cc", |
| 42 | "mock_apple_keychain.h", |
| 43 | "mock_apple_keychain_ios.cc", |
| 44 | "mock_apple_keychain_mac.cc", |
| 45 | "nss_key_util.cc", |
| 46 | "nss_key_util.h", |
| 47 | "nss_util.cc", |
| 48 | "nss_util.h", |
| 49 | "nss_util_internal.h", |
| 50 | "openssl_bio_string.cc", |
| 51 | "openssl_bio_string.h", |
| 52 | "openssl_util.cc", |
| 53 | "openssl_util.h", |
| 54 | "p224.cc", |
| 55 | "p224.h", |
| 56 | "p224_spake.cc", |
| 57 | "p224_spake.h", |
| 58 | "random.cc", |
| 59 | "random.h", |
svaldez | 22de42fe | 2016-04-21 19:42:22 | [diff] [blame] | 60 | "rsa_private_key.cc", |
sergeyu | 99d83f9 | 2015-09-14 23:03:33 | [diff] [blame] | 61 | "rsa_private_key.h", |
sergeyu | 99d83f9 | 2015-09-14 23:03:33 | [diff] [blame] | 62 | "scoped_capi_types.h", |
| 63 | "scoped_nss_types.h", |
svaldez | 22de42fe | 2016-04-21 19:42:22 | [diff] [blame] | 64 | "secure_hash.cc", |
sergeyu | 99d83f9 | 2015-09-14 23:03:33 | [diff] [blame] | 65 | "secure_hash.h", |
sergeyu | 99d83f9 | 2015-09-14 23:03:33 | [diff] [blame] | 66 | "secure_util.cc", |
| 67 | "secure_util.h", |
| 68 | "sha2.cc", |
| 69 | "sha2.h", |
svaldez | 22de42fe | 2016-04-21 19:42:22 | [diff] [blame] | 70 | "signature_creator.cc", |
sergeyu | 99d83f9 | 2015-09-14 23:03:33 | [diff] [blame] | 71 | "signature_creator.h", |
svaldez | 22de42fe | 2016-04-21 19:42:22 | [diff] [blame] | 72 | "signature_verifier.cc", |
sergeyu | 99d83f9 | 2015-09-14 23:03:33 | [diff] [blame] | 73 | "signature_verifier.h", |
svaldez | 9c64146 | 2016-05-02 20:49:05 | [diff] [blame^] | 74 | "symmetric_key.cc", |
sergeyu | 99d83f9 | 2015-09-14 23:03:33 | [diff] [blame] | 75 | "symmetric_key.h", |
sergeyu | 99d83f9 | 2015-09-14 23:03:33 | [diff] [blame] | 76 | ] |
| 77 | |
| 78 | # TODO(jschuh): crbug.com/167187 fix size_t to int truncations. |
| 79 | configs += [ "//build/config/compiler:no_size_t_to_int_warning" ] |
| 80 | |
| 81 | deps = [ |
| 82 | ":platform", |
| 83 | "//base", |
| 84 | "//base/third_party/dynamic_annotations", |
| 85 | ] |
| 86 | |
| 87 | if (!is_mac && !is_ios) { |
| 88 | sources -= [ |
| 89 | "apple_keychain.h", |
erikchen | eece6c3 | 2015-07-07 22:13:11 | [diff] [blame] | 90 | "mock_apple_keychain.cc", |
| 91 | "mock_apple_keychain.h", |
sergeyu | 99d83f9 | 2015-09-14 23:03:33 | [diff] [blame] | 92 | ] |
sdefresne | 41b8690 | 2016-03-17 18:09:23 | [diff] [blame] | 93 | } else { |
| 94 | libs = [ "Security.framework" ] |
sergeyu | 99d83f9 | 2015-09-14 23:03:33 | [diff] [blame] | 95 | } |
| 96 | |
| 97 | if (!is_mac) { |
| 98 | sources -= [ |
| 99 | "cssm_init.cc", |
| 100 | "cssm_init.h", |
| 101 | "mac_security_services_lock.cc", |
| 102 | "mac_security_services_lock.h", |
| 103 | ] |
| 104 | } |
| 105 | if (!is_win) { |
| 106 | sources -= [ |
| 107 | "capi_util.cc", |
| 108 | "capi_util.h", |
| 109 | ] |
| 110 | } |
| 111 | |
svaldez | 2135be5 | 2016-04-20 16:34:53 | [diff] [blame] | 112 | # Some files are built when NSS is used for the platform certificate library. |
| 113 | if (!use_nss_certs) { |
sergeyu | 99d83f9 | 2015-09-14 23:03:33 | [diff] [blame] | 114 | sources -= [ |
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 | ] |
sergeyu | 99d83f9 | 2015-09-14 23:03:33 | [diff] [blame] | 121 | } |
davidben | 2bcbc6b | 2015-04-22 02:36:41 | [diff] [blame] | 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 | |
dpranke | 4376059 | 2014-11-08 02:59:57 | [diff] [blame] | 130 | # TODO(GYP): TODO(dpranke), fix the compile errors for this stuff |
| 131 | # and make it work. |
| 132 | if (false && is_win) { |
[email protected] | 7a7e085 | 2014-04-14 23:25:13 | [diff] [blame] | 133 | # A minimal crypto subset for hmac-related stuff that small standalone |
| 134 | # targets can use to reduce code size on Windows. This does not depend on |
| 135 | # OpenSSL/NSS but will use Windows APIs for that functionality. |
| 136 | source_set("crypto_minimal_win") { |
| 137 | sources = [ |
[email protected] | 59ff2d4 | 2014-04-22 22:25:23 | [diff] [blame] | 138 | "crypto_export.h", |
[email protected] | 7a7e085 | 2014-04-14 23:25:13 | [diff] [blame] | 139 | "hmac.cc", |
| 140 | "hmac.h", |
svaldez | 9c64146 | 2016-05-02 20:49:05 | [diff] [blame^] | 141 | "openssl_util.cc", |
| 142 | "openssl_util.h", |
[email protected] | 7a7e085 | 2014-04-14 23:25:13 | [diff] [blame] | 143 | "secure_util.cc", |
| 144 | "secure_util.h", |
svaldez | 9c64146 | 2016-05-02 20:49:05 | [diff] [blame^] | 145 | "symmetric_key.cc", |
[email protected] | 7a7e085 | 2014-04-14 23:25:13 | [diff] [blame] | 146 | "symmetric_key.h", |
[email protected] | 7a7e085 | 2014-04-14 23:25:13 | [diff] [blame] | 147 | ] |
[email protected] | c6f27f2 | 2013-08-21 21:44:59 | [diff] [blame] | 148 | |
[email protected] | 7a7e085 | 2014-04-14 23:25:13 | [diff] [blame] | 149 | deps = [ |
| 150 | "//base", |
| 151 | "//base/third_party/dynamic_annotations", |
| 152 | ] |
[email protected] | c6f27f2 | 2013-08-21 21:44:59 | [diff] [blame] | 153 | |
[email protected] | 7a7e085 | 2014-04-14 23:25:13 | [diff] [blame] | 154 | defines = [ "CRYPTO_IMPLEMENTATION" ] |
| 155 | } |
[email protected] | c6f27f2 | 2013-08-21 21:44:59 | [diff] [blame] | 156 | } |
| 157 | |
brettw | 690c9667 | 2015-04-21 16:19:54 | [diff] [blame] | 158 | test("crypto_unittests") { |
| 159 | sources = [ |
svaldez | 22de42fe | 2016-04-21 19:42:22 | [diff] [blame] | 160 | "aead_unittest.cc", |
brettw | 690c9667 | 2015-04-21 16:19:54 | [diff] [blame] | 161 | "curve25519_unittest.cc", |
| 162 | "ec_private_key_unittest.cc", |
| 163 | "ec_signature_creator_unittest.cc", |
| 164 | "encryptor_unittest.cc", |
brettw | 690c9667 | 2015-04-21 16:19:54 | [diff] [blame] | 165 | "hkdf_unittest.cc", |
| 166 | "hmac_unittest.cc", |
davidben | 85bad9e | 2015-05-11 20:20:10 | [diff] [blame] | 167 | "nss_key_util_unittest.cc", |
brettw | 690c9667 | 2015-04-21 16:19:54 | [diff] [blame] | 168 | "nss_util_unittest.cc", |
| 169 | "openssl_bio_string_unittest.cc", |
| 170 | "p224_spake_unittest.cc", |
| 171 | "p224_unittest.cc", |
| 172 | "random_unittest.cc", |
brettw | 690c9667 | 2015-04-21 16:19:54 | [diff] [blame] | 173 | "rsa_private_key_unittest.cc", |
| 174 | "secure_hash_unittest.cc", |
| 175 | "sha2_unittest.cc", |
| 176 | "signature_creator_unittest.cc", |
| 177 | "signature_verifier_unittest.cc", |
| 178 | "symmetric_key_unittest.cc", |
| 179 | ] |
dpranke | 4376059 | 2014-11-08 02:59:57 | [diff] [blame] | 180 | |
svaldez | 2135be5 | 2016-04-20 16:34:53 | [diff] [blame] | 181 | # Some files are built when NSS is used for the platform certificate library. |
| 182 | if (!use_nss_certs) { |
davidben | 85bad9e | 2015-05-11 20:20:10 | [diff] [blame] | 183 | sources -= [ |
| 184 | "nss_key_util_unittest.cc", |
| 185 | "nss_util_unittest.cc", |
| 186 | ] |
[email protected] | 7a7e085 | 2014-04-14 23:25:13 | [diff] [blame] | 187 | } |
brettw | 690c9667 | 2015-04-21 16:19:54 | [diff] [blame] | 188 | |
brettw | 690c9667 | 2015-04-21 16:19:54 | [diff] [blame] | 189 | configs += [ "//build/config/compiler:no_size_t_to_int_warning" ] |
| 190 | |
| 191 | deps = [ |
| 192 | ":crypto", |
| 193 | ":platform", |
| 194 | ":test_support", |
| 195 | "//base", |
| 196 | "//base/test:run_all_unittests", |
| 197 | "//base/test:test_support", |
| 198 | "//testing/gmock", |
| 199 | "//testing/gtest", |
| 200 | ] |
[email protected] | 7a7e085 | 2014-04-14 23:25:13 | [diff] [blame] | 201 | } |
[email protected] | c6f27f2 | 2013-08-21 21:44:59 | [diff] [blame] | 202 | |
[email protected] | 190933f | 2014-07-28 09:56:51 | [diff] [blame] | 203 | source_set("test_support") { |
| 204 | sources = [ |
[email protected] | 190933f | 2014-07-28 09:56:51 | [diff] [blame] | 205 | "scoped_test_nss_chromeos_user.cc", |
| 206 | "scoped_test_nss_chromeos_user.h", |
scottmg | 7c7296f4 | 2015-02-28 02:23:09 | [diff] [blame] | 207 | "scoped_test_nss_db.cc", |
| 208 | "scoped_test_nss_db.h", |
[email protected] | 190933f | 2014-07-28 09:56:51 | [diff] [blame] | 209 | "scoped_test_system_nss_key_slot.cc", |
| 210 | "scoped_test_system_nss_key_slot.h", |
| 211 | ] |
| 212 | deps = [ |
| 213 | ":crypto", |
| 214 | ":platform", |
| 215 | "//base", |
| 216 | ] |
| 217 | |
| 218 | if (!use_nss_certs) { |
| 219 | sources -= [ |
| 220 | "scoped_test_nss_db.cc", |
| 221 | "scoped_test_nss_db.h", |
| 222 | ] |
| 223 | } |
| 224 | |
| 225 | if (!is_chromeos) { |
| 226 | sources -= [ |
| 227 | "scoped_test_nss_chromeos_user.cc", |
| 228 | "scoped_test_nss_chromeos_user.h", |
| 229 | "scoped_test_system_nss_key_slot.cc", |
| 230 | "scoped_test_system_nss_key_slot.h", |
| 231 | ] |
| 232 | } |
| 233 | } |
| 234 | |
brettw | 70d2f6e | 2015-02-25 18:46:53 | [diff] [blame] | 235 | config("platform_config") { |
svaldez | 2135be5 | 2016-04-20 16:34:53 | [diff] [blame] | 236 | if (use_nss_certs && is_clang) { |
brettw | 70d2f6e | 2015-02-25 18:46:53 | [diff] [blame] | 237 | # There is a broken header guard in /usr/include/nss/secmod.h: |
| 238 | # https://bugzilla.mozilla.org/show_bug.cgi?id=884072 |
| 239 | cflags = [ "-Wno-header-guard" ] |
| 240 | } |
| 241 | } |
| 242 | |
[email protected] | 7a7e085 | 2014-04-14 23:25:13 | [diff] [blame] | 243 | # This is a meta-target that forwards to NSS's SSL library or OpenSSL, |
| 244 | # according to the state of the crypto flags. A target just wanting to depend |
| 245 | # on the current SSL library should just depend on this. |
| 246 | group("platform") { |
svaldez | 2135be5 | 2016-04-20 16:34:53 | [diff] [blame] | 247 | public_deps = [ |
| 248 | "//third_party/boringssl", |
| 249 | ] |
davidben | 2bcbc6b | 2015-04-22 02:36:41 | [diff] [blame] | 250 | |
svaldez | 2135be5 | 2016-04-20 16:34:53 | [diff] [blame] | 251 | # Link in NSS if it is used for the platform certificate library |
| 252 | # (use_nss_certs). |
| 253 | if (use_nss_certs) { |
| 254 | public_configs = [ ":platform_config" ] |
| 255 | public_configs += [ "//third_party/nss:system_nss_no_ssl_config" ] |
[email protected] | c6f27f2 | 2013-08-21 21:44:59 | [diff] [blame] | 256 | } |
| 257 | } |