blob: 094fb1ec35955244e7a6b325200c9b4b4137b244 [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
Yuta Hijikatabf953202020-11-12 08:43:555import("//build/config/chromeos/ui_mode.gni")
[email protected]3ad0946b2014-02-24 21:29:496import("//build/config/crypto.gni")
qsrfb5251d12015-01-21 15:57:227import("//testing/test.gni")
[email protected]c6f27f22013-08-21 21:44:598
sergeyu99d83f92015-09-14 23:03:339component("crypto") {
10 output_name = "crcrypto" # Avoid colliding with OpenSSL's libcrypto.
11 sources = [
svaldez22de42fe2016-04-21 19:42:2212 "aead.cc",
13 "aead.h",
sergeyu99d83f92015-09-14 23:03:3314 "crypto_export.h",
svaldez22de42fe2016-04-21 19:42:2215 "ec_private_key.cc",
sergeyu99d83f92015-09-14 23:03:3316 "ec_private_key.h",
sergeyu99d83f92015-09-14 23:03:3317 "ec_signature_creator.cc",
18 "ec_signature_creator.h",
svaldeze83af292016-04-26 14:33:3719 "ec_signature_creator_impl.cc",
sergeyu99d83f92015-09-14 23:03:3320 "ec_signature_creator_impl.h",
sergeyu99d83f92015-09-14 23:03:3321 "encryptor.cc",
22 "encryptor.h",
sergeyu99d83f92015-09-14 23:03:3323 "hkdf.cc",
24 "hkdf.h",
25 "hmac.cc",
26 "hmac.h",
sergeyu99d83f92015-09-14 23:03:3327 "openssl_util.cc",
28 "openssl_util.h",
sergeyu99d83f92015-09-14 23:03:3329 "p224_spake.cc",
30 "p224_spake.h",
31 "random.cc",
32 "random.h",
svaldez22de42fe2016-04-21 19:42:2233 "rsa_private_key.cc",
sergeyu99d83f92015-09-14 23:03:3334 "rsa_private_key.h",
sergeyu99d83f92015-09-14 23:03:3335 "scoped_capi_types.h",
36 "scoped_nss_types.h",
svaldez22de42fe2016-04-21 19:42:2237 "secure_hash.cc",
sergeyu99d83f92015-09-14 23:03:3338 "secure_hash.h",
sergeyu99d83f92015-09-14 23:03:3339 "secure_util.cc",
40 "secure_util.h",
41 "sha2.cc",
42 "sha2.h",
svaldez22de42fe2016-04-21 19:42:2243 "signature_creator.cc",
sergeyu99d83f92015-09-14 23:03:3344 "signature_creator.h",
svaldez22de42fe2016-04-21 19:42:2245 "signature_verifier.cc",
sergeyu99d83f92015-09-14 23:03:3346 "signature_verifier.h",
svaldez9c641462016-05-02 20:49:0547 "symmetric_key.cc",
sergeyu99d83f92015-09-14 23:03:3348 "symmetric_key.h",
Adam Langley979ee872021-03-12 02:47:1949 "unexportable_key.cc",
50 "unexportable_key.h",
sergeyu99d83f92015-09-14 23:03:3351 ]
52
sergeyu99d83f92015-09-14 23:03:3353 deps = [
54 ":platform",
55 "//base",
56 "//base/third_party/dynamic_annotations",
57 ]
58
Nico Weber54137722020-01-13 19:53:3059 public_deps = [ "//third_party/boringssl" ]
davidben74f67442016-10-01 01:45:2260
Sylvain Defresnebb05f5322020-09-15 10:53:1861 if (is_apple) {
62 sources += [
sergeyu99d83f92015-09-14 23:03:3363 "apple_keychain.h",
Sylvain Defresnebb05f5322020-09-15 10:53:1864
65 # TODO(brettw): these mocks should be moved to a test_support_crypto
66 # target if possible.
erikcheneece6c32015-07-07 22:13:1167 "mock_apple_keychain.cc",
68 "mock_apple_keychain.h",
sergeyu99d83f92015-09-14 23:03:3369 ]
Sylvain Defresnebb05f5322020-09-15 10:53:1870
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 Sesekd9106de2020-06-30 23:24:0290 frameworks = [
rsesek02aa51c2016-05-11 02:13:5791 "CoreFoundation.framework",
92 "Security.framework",
93 ]
sergeyu99d83f92015-09-14 23:03:3394 }
95
Sylvain Defresnebb05f5322020-09-15 10:53:1896 if (is_mac) {
97 sources += [
sergeyu99d83f92015-09-14 23:03:3398 "mac_security_services_lock.cc",
99 "mac_security_services_lock.h",
100 ]
101 }
Sylvain Defresnebb05f5322020-09-15 10:53:18102 if (is_win) {
103 sources += [
sergeyu99d83f92015-09-14 23:03:33104 "capi_util.cc",
105 "capi_util.h",
Adam Langley979ee872021-03-12 02:47:19106 "unexportable_key_win.cc",
sergeyu99d83f92015-09-14 23:03:33107 ]
Adam Langley979ee872021-03-12 02:47:19108 libs = [ "ncrypt.lib" ]
sergeyu99d83f92015-09-14 23:03:33109 }
110
svaldez2135be52016-04-20 16:34:53111 # Some files are built when NSS is used for the platform certificate library.
Sylvain Defresnebb05f5322020-09-15 10:53:18112 if (use_nss_certs) {
113 sources += [
114 "nss_crypto_module_delegate.h",
davidben85bad9e2015-05-11 20:20:10115 "nss_key_util.cc",
116 "nss_key_util.h",
davidben2bcbc6b2015-04-22 02:36:41117 "nss_util.cc",
118 "nss_util.h",
119 "nss_util_internal.h",
120 ]
Yuta Hijikatabf953202020-11-12 08:43:55121 deps += [ "//build:chromeos_buildflags" ]
sergeyu99d83f92015-09-14 23:03:33122 }
davidben2bcbc6b2015-04-22 02:36:41123
Yuta Hijikatabf953202020-11-12 08:43:55124 if (is_chromeos_ash) {
David Benjamin2f2cb362019-10-15 22:51:05125 sources += [ "nss_util_chromeos.cc" ]
126 }
127
Yuta Hijikata2eecbe22021-01-13 05:39:22128 if (is_chromeos || is_chromeos_lacros) {
Michael Ershov1c50ac952020-12-02 21:01:17129 sources += [
130 "chaps_support.cc",
131 "chaps_support.h",
132 ]
133 }
134
sergeyu99d83f92015-09-14 23:03:33135 defines = [ "CRYPTO_IMPLEMENTATION" ]
erikcheneece6c32015-07-07 22:13:11136
sergeyu99d83f92015-09-14 23:03:33137 if (is_nacl) {
138 deps += [ "//native_client_sdk/src/libraries/nacl_io" ]
erikcheneece6c32015-07-07 22:13:11139 }
[email protected]c6f27f22013-08-21 21:44:59140}
141
brettw690c96672015-04-21 16:19:54142test("crypto_unittests") {
143 sources = [
svaldez22de42fe2016-04-21 19:42:22144 "aead_unittest.cc",
brettw690c96672015-04-21 16:19:54145 "ec_private_key_unittest.cc",
146 "ec_signature_creator_unittest.cc",
147 "encryptor_unittest.cc",
brettw690c96672015-04-21 16:19:54148 "hmac_unittest.cc",
brettw690c96672015-04-21 16:19:54149 "p224_spake_unittest.cc",
brettw690c96672015-04-21 16:19:54150 "random_unittest.cc",
brettw690c96672015-04-21 16:19:54151 "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 Langley979ee872021-03-12 02:47:19157 "unexportable_key_unittest.cc",
brettw690c96672015-04-21 16:19:54158 ]
dpranke43760592014-11-08 02:59:57159
svaldez2135be52016-04-20 16:34:53160 # Some files are built when NSS is used for the platform certificate library.
Sylvain Defresnebb05f5322020-09-15 10:53:18161 if (use_nss_certs) {
162 sources += [
davidben85bad9e2015-05-11 20:20:10163 "nss_key_util_unittest.cc",
164 "nss_util_unittest.cc",
165 ]
[email protected]7a7e0852014-04-14 23:25:13166 }
brettw690c96672015-04-21 16:19:54167
brettw690c96672015-04-21 16:19:54168 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]7a7e0852014-04-14 23:25:13178}
[email protected]c6f27f22013-08-21 21:44:59179
Adam Langley979ee872021-03-12 02:47:19180static_library("test_support") {
brettw2dbbe5b02016-07-14 19:38:57181 testonly = true
Adam Langley979ee872021-03-12 02:47:19182 sources = [
183 "scoped_mock_unexportable_key_provider.cc",
184 "scoped_mock_unexportable_key_provider.h",
185 ]
[email protected]190933f2014-07-28 09:56:51186
brettw2dbbe5b02016-07-14 19:38:57187 if (use_nss_certs) {
188 sources += [
[email protected]190933f2014-07-28 09:56:51189 "scoped_test_nss_db.cc",
190 "scoped_test_nss_db.h",
191 ]
192 }
193
Yuta Hijikatabf953202020-11-12 08:43:55194 if (is_chromeos_ash) {
brettw2dbbe5b02016-07-14 19:38:57195 sources += [
[email protected]190933f2014-07-28 09:56:51196 "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 }
brettw2dbbe5b02016-07-14 19:38:57202
203 deps = [
204 ":crypto",
205 ":platform",
206 "//base",
207 ]
[email protected]190933f2014-07-28 09:56:51208}
209
brettw70d2f6e2015-02-25 18:46:53210config("platform_config") {
svaldez2135be52016-04-20 16:34:53211 if (use_nss_certs && is_clang) {
brettw70d2f6e2015-02-25 18:46:53212 # 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]7a7e0852014-04-14 23:25:13218# 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.
221group("platform") {
Nico Weber54137722020-01-13 19:53:30222 public_deps = [ "//third_party/boringssl" ]
davidben2bcbc6b2015-04-22 02:36:41223
svaldez2135be52016-04-20 16:34:53224 # 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 Weber2023256d2018-08-28 17:44:57228 public_configs += [ "//build/config/linux/nss:system_nss_no_ssl_config" ]
[email protected]c6f27f22013-08-21 21:44:59229 }
230}