blob: c27c7cf5c4b85b0e5b885f50af35d850254ad96b [file] [log] [blame]
[email protected]c6f27f22013-08-21 21:44:591# 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]3ad0946b2014-02-24 21:29:495import("//build/config/crypto.gni")
qsrfb5251d12015-01-21 15:57:226import("//testing/test.gni")
[email protected]c6f27f22013-08-21 21:44:597
sergeyu99d83f92015-09-14 23:03:338component("crypto") {
9 output_name = "crcrypto" # Avoid colliding with OpenSSL's libcrypto.
10 sources = [
svaldez22de42fe2016-04-21 19:42:2211 "aead.cc",
12 "aead.h",
sergeyu99d83f92015-09-14 23:03:3313 "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",
svaldez22de42fe2016-04-21 19:42:2219 "ec_private_key.cc",
sergeyu99d83f92015-09-14 23:03:3320 "ec_private_key.h",
sergeyu99d83f92015-09-14 23:03:3321 "ec_signature_creator.cc",
22 "ec_signature_creator.h",
svaldeze83af292016-04-26 14:33:3723 "ec_signature_creator_impl.cc",
sergeyu99d83f92015-09-14 23:03:3324 "ec_signature_creator_impl.h",
sergeyu99d83f92015-09-14 23:03:3325 "encryptor.cc",
26 "encryptor.h",
sergeyu99d83f92015-09-14 23:03:3327 "hkdf.cc",
28 "hkdf.h",
29 "hmac.cc",
30 "hmac.h",
sergeyu99d83f92015-09-14 23:03:3331 "mac_security_services_lock.cc",
32 "mac_security_services_lock.h",
[email protected]c6f27f22013-08-21 21:44:5933
sergeyu99d83f92015-09-14 23:03:3334 # 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",
tfarina22bf1522017-03-24 01:05:0440 "nss_crypto_module_delegate.h",
sergeyu99d83f92015-09-14 23:03:3341 "nss_key_util.cc",
42 "nss_key_util.h",
43 "nss_util.cc",
44 "nss_util.h",
45 "nss_util_internal.h",
sergeyu99d83f92015-09-14 23:03:3346 "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",
svaldez22de42fe2016-04-21 19:42:2254 "rsa_private_key.cc",
sergeyu99d83f92015-09-14 23:03:3355 "rsa_private_key.h",
sergeyu99d83f92015-09-14 23:03:3356 "scoped_capi_types.h",
57 "scoped_nss_types.h",
svaldez22de42fe2016-04-21 19:42:2258 "secure_hash.cc",
sergeyu99d83f92015-09-14 23:03:3359 "secure_hash.h",
sergeyu99d83f92015-09-14 23:03:3360 "secure_util.cc",
61 "secure_util.h",
62 "sha2.cc",
63 "sha2.h",
svaldez22de42fe2016-04-21 19:42:2264 "signature_creator.cc",
sergeyu99d83f92015-09-14 23:03:3365 "signature_creator.h",
svaldez22de42fe2016-04-21 19:42:2266 "signature_verifier.cc",
sergeyu99d83f92015-09-14 23:03:3367 "signature_verifier.h",
svaldez9c641462016-05-02 20:49:0568 "symmetric_key.cc",
sergeyu99d83f92015-09-14 23:03:3369 "symmetric_key.h",
sergeyu99d83f92015-09-14 23:03:3370 ]
71
sergeyu99d83f92015-09-14 23:03:3372 deps = [
73 ":platform",
74 "//base",
75 "//base/third_party/dynamic_annotations",
76 ]
77
davidben74f67442016-10-01 01:45:2278 public_deps = [
79 "//third_party/boringssl",
80 ]
81
sergeyu99d83f92015-09-14 23:03:3382 if (!is_mac && !is_ios) {
83 sources -= [
84 "apple_keychain.h",
erikcheneece6c32015-07-07 22:13:1185 "mock_apple_keychain.cc",
86 "mock_apple_keychain.h",
sergeyu99d83f92015-09-14 23:03:3387 ]
sdefresne41b86902016-03-17 18:09:2388 } else {
rsesek02aa51c2016-05-11 02:13:5789 libs = [
90 "CoreFoundation.framework",
91 "Security.framework",
92 ]
sergeyu99d83f92015-09-14 23:03:3393 }
94
95 if (!is_mac) {
96 sources -= [
sergeyu99d83f92015-09-14 23:03:3397 "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
svaldez2135be52016-04-20 16:34:53108 # Some files are built when NSS is used for the platform certificate library.
109 if (!use_nss_certs) {
sergeyu99d83f92015-09-14 23:03:33110 sources -= [
davidben85bad9e2015-05-11 20:20:10111 "nss_key_util.cc",
112 "nss_key_util.h",
davidben2bcbc6b2015-04-22 02:36:41113 "nss_util.cc",
114 "nss_util.h",
115 "nss_util_internal.h",
116 ]
sergeyu99d83f92015-09-14 23:03:33117 }
davidben2bcbc6b2015-04-22 02:36:41118
sergeyu99d83f92015-09-14 23:03:33119 defines = [ "CRYPTO_IMPLEMENTATION" ]
erikcheneece6c32015-07-07 22:13:11120
sergeyu99d83f92015-09-14 23:03:33121 if (is_nacl) {
122 deps += [ "//native_client_sdk/src/libraries/nacl_io" ]
erikcheneece6c32015-07-07 22:13:11123 }
[email protected]c6f27f22013-08-21 21:44:59124}
125
brettw690c96672015-04-21 16:19:54126test("crypto_unittests") {
127 sources = [
svaldez22de42fe2016-04-21 19:42:22128 "aead_unittest.cc",
brettw690c96672015-04-21 16:19:54129 "ec_private_key_unittest.cc",
130 "ec_signature_creator_unittest.cc",
131 "encryptor_unittest.cc",
brettw690c96672015-04-21 16:19:54132 "hmac_unittest.cc",
davidben85bad9e2015-05-11 20:20:10133 "nss_key_util_unittest.cc",
brettw690c96672015-04-21 16:19:54134 "nss_util_unittest.cc",
brettw690c96672015-04-21 16:19:54135 "p224_spake_unittest.cc",
136 "p224_unittest.cc",
137 "random_unittest.cc",
brettw690c96672015-04-21 16:19:54138 "rsa_private_key_unittest.cc",
139 "secure_hash_unittest.cc",
140 "sha2_unittest.cc",
141 "signature_creator_unittest.cc",
142 "signature_verifier_unittest.cc",
143 "symmetric_key_unittest.cc",
144 ]
dpranke43760592014-11-08 02:59:57145
svaldez2135be52016-04-20 16:34:53146 # Some files are built when NSS is used for the platform certificate library.
147 if (!use_nss_certs) {
davidben85bad9e2015-05-11 20:20:10148 sources -= [
149 "nss_key_util_unittest.cc",
150 "nss_util_unittest.cc",
151 ]
[email protected]7a7e0852014-04-14 23:25:13152 }
brettw690c96672015-04-21 16:19:54153
brettw690c96672015-04-21 16:19:54154 deps = [
155 ":crypto",
156 ":platform",
157 ":test_support",
158 "//base",
159 "//base/test:run_all_unittests",
160 "//base/test:test_support",
161 "//testing/gmock",
162 "//testing/gtest",
163 ]
[email protected]7a7e0852014-04-14 23:25:13164}
[email protected]c6f27f22013-08-21 21:44:59165
brettw2dbbe5b02016-07-14 19:38:57166# This has no sources in some cases so can't be a static library.
[email protected]190933f2014-07-28 09:56:51167source_set("test_support") {
brettw2dbbe5b02016-07-14 19:38:57168 testonly = true
169 sources = []
[email protected]190933f2014-07-28 09:56:51170
brettw2dbbe5b02016-07-14 19:38:57171 if (use_nss_certs) {
172 sources += [
[email protected]190933f2014-07-28 09:56:51173 "scoped_test_nss_db.cc",
174 "scoped_test_nss_db.h",
175 ]
176 }
177
brettw2dbbe5b02016-07-14 19:38:57178 if (is_chromeos) {
179 sources += [
[email protected]190933f2014-07-28 09:56:51180 "scoped_test_nss_chromeos_user.cc",
181 "scoped_test_nss_chromeos_user.h",
182 "scoped_test_system_nss_key_slot.cc",
183 "scoped_test_system_nss_key_slot.h",
184 ]
185 }
brettw2dbbe5b02016-07-14 19:38:57186
187 deps = [
188 ":crypto",
189 ":platform",
190 "//base",
191 ]
[email protected]190933f2014-07-28 09:56:51192}
193
brettw70d2f6e2015-02-25 18:46:53194config("platform_config") {
svaldez2135be52016-04-20 16:34:53195 if (use_nss_certs && is_clang) {
brettw70d2f6e2015-02-25 18:46:53196 # There is a broken header guard in /usr/include/nss/secmod.h:
197 # https://bugzilla.mozilla.org/show_bug.cgi?id=884072
198 cflags = [ "-Wno-header-guard" ]
199 }
200}
201
[email protected]7a7e0852014-04-14 23:25:13202# This is a meta-target that forwards to NSS's SSL library or OpenSSL,
203# according to the state of the crypto flags. A target just wanting to depend
204# on the current SSL library should just depend on this.
205group("platform") {
svaldez2135be52016-04-20 16:34:53206 public_deps = [
207 "//third_party/boringssl",
208 ]
davidben2bcbc6b2015-04-22 02:36:41209
svaldez2135be52016-04-20 16:34:53210 # Link in NSS if it is used for the platform certificate library
211 # (use_nss_certs).
212 if (use_nss_certs) {
213 public_configs = [ ":platform_config" ]
Nico Weber2023256d2018-08-28 17:44:57214 public_configs += [ "//build/config/linux/nss:system_nss_no_ssl_config" ]
[email protected]c6f27f22013-08-21 21:44:59215 }
216}