blob: 0eab491092acbb3b2c1ee07744a754c0f37f9123 [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
David Benjamin2f2cb362019-10-15 22:51:05119 if (is_chromeos) {
120 sources += [ "nss_util_chromeos.cc" ]
121 }
122
sergeyu99d83f92015-09-14 23:03:33123 defines = [ "CRYPTO_IMPLEMENTATION" ]
erikcheneece6c32015-07-07 22:13:11124
sergeyu99d83f92015-09-14 23:03:33125 if (is_nacl) {
126 deps += [ "//native_client_sdk/src/libraries/nacl_io" ]
erikcheneece6c32015-07-07 22:13:11127 }
[email protected]c6f27f22013-08-21 21:44:59128}
129
brettw690c96672015-04-21 16:19:54130test("crypto_unittests") {
131 sources = [
svaldez22de42fe2016-04-21 19:42:22132 "aead_unittest.cc",
brettw690c96672015-04-21 16:19:54133 "ec_private_key_unittest.cc",
134 "ec_signature_creator_unittest.cc",
135 "encryptor_unittest.cc",
brettw690c96672015-04-21 16:19:54136 "hmac_unittest.cc",
davidben85bad9e2015-05-11 20:20:10137 "nss_key_util_unittest.cc",
brettw690c96672015-04-21 16:19:54138 "nss_util_unittest.cc",
brettw690c96672015-04-21 16:19:54139 "p224_spake_unittest.cc",
140 "p224_unittest.cc",
141 "random_unittest.cc",
brettw690c96672015-04-21 16:19:54142 "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 ]
dpranke43760592014-11-08 02:59:57149
svaldez2135be52016-04-20 16:34:53150 # Some files are built when NSS is used for the platform certificate library.
151 if (!use_nss_certs) {
davidben85bad9e2015-05-11 20:20:10152 sources -= [
153 "nss_key_util_unittest.cc",
154 "nss_util_unittest.cc",
155 ]
[email protected]7a7e0852014-04-14 23:25:13156 }
brettw690c96672015-04-21 16:19:54157
brettw690c96672015-04-21 16:19:54158 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]7a7e0852014-04-14 23:25:13168}
[email protected]c6f27f22013-08-21 21:44:59169
brettw2dbbe5b02016-07-14 19:38:57170# This has no sources in some cases so can't be a static library.
[email protected]190933f2014-07-28 09:56:51171source_set("test_support") {
brettw2dbbe5b02016-07-14 19:38:57172 testonly = true
173 sources = []
[email protected]190933f2014-07-28 09:56:51174
brettw2dbbe5b02016-07-14 19:38:57175 if (use_nss_certs) {
176 sources += [
[email protected]190933f2014-07-28 09:56:51177 "scoped_test_nss_db.cc",
178 "scoped_test_nss_db.h",
179 ]
180 }
181
brettw2dbbe5b02016-07-14 19:38:57182 if (is_chromeos) {
183 sources += [
[email protected]190933f2014-07-28 09:56:51184 "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 }
brettw2dbbe5b02016-07-14 19:38:57190
191 deps = [
192 ":crypto",
193 ":platform",
194 "//base",
195 ]
[email protected]190933f2014-07-28 09:56:51196}
197
brettw70d2f6e2015-02-25 18:46:53198config("platform_config") {
svaldez2135be52016-04-20 16:34:53199 if (use_nss_certs && is_clang) {
brettw70d2f6e2015-02-25 18:46:53200 # 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]7a7e0852014-04-14 23:25:13206# 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.
209group("platform") {
svaldez2135be52016-04-20 16:34:53210 public_deps = [
211 "//third_party/boringssl",
212 ]
davidben2bcbc6b2015-04-22 02:36:41213
svaldez2135be52016-04-20 16:34:53214 # 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 Weber2023256d2018-08-28 17:44:57218 public_configs += [ "//build/config/linux/nss:system_nss_no_ssl_config" ]
[email protected]c6f27f22013-08-21 21:44:59219 }
220}