xref: /aosp_15_r20/external/cronet/crypto/BUILD.gn (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1*6777b538SAndroid Build Coastguard Worker# Copyright 2013 The Chromium Authors
2*6777b538SAndroid Build Coastguard Worker# Use of this source code is governed by a BSD-style license that can be
3*6777b538SAndroid Build Coastguard Worker# found in the LICENSE file.
4*6777b538SAndroid Build Coastguard Worker
5*6777b538SAndroid Build Coastguard Workerimport("//build/buildflag_header.gni")
6*6777b538SAndroid Build Coastguard Workerimport("//build/config/chromeos/ui_mode.gni")
7*6777b538SAndroid Build Coastguard Workerimport("//components/nacl/toolchain.gni")
8*6777b538SAndroid Build Coastguard Workerimport("//crypto/features.gni")
9*6777b538SAndroid Build Coastguard Workerimport("//testing/test.gni")
10*6777b538SAndroid Build Coastguard Worker
11*6777b538SAndroid Build Coastguard Workerbuildflag_header("buildflags") {
12*6777b538SAndroid Build Coastguard Worker  header = "crypto_buildflags.h"
13*6777b538SAndroid Build Coastguard Worker  flags = [ "USE_NSS_CERTS=$use_nss_certs" ]
14*6777b538SAndroid Build Coastguard Worker}
15*6777b538SAndroid Build Coastguard Worker
16*6777b538SAndroid Build Coastguard Workercomponent("crypto") {
17*6777b538SAndroid Build Coastguard Worker  output_name = "crcrypto"  # Avoid colliding with OpenSSL's libcrypto.
18*6777b538SAndroid Build Coastguard Worker  sources = [
19*6777b538SAndroid Build Coastguard Worker    "aead.cc",
20*6777b538SAndroid Build Coastguard Worker    "aead.h",
21*6777b538SAndroid Build Coastguard Worker    "crypto_export.h",
22*6777b538SAndroid Build Coastguard Worker    "ec_private_key.cc",
23*6777b538SAndroid Build Coastguard Worker    "ec_private_key.h",
24*6777b538SAndroid Build Coastguard Worker    "ec_signature_creator.cc",
25*6777b538SAndroid Build Coastguard Worker    "ec_signature_creator.h",
26*6777b538SAndroid Build Coastguard Worker    "ec_signature_creator_impl.cc",
27*6777b538SAndroid Build Coastguard Worker    "ec_signature_creator_impl.h",
28*6777b538SAndroid Build Coastguard Worker    "encryptor.cc",
29*6777b538SAndroid Build Coastguard Worker    "encryptor.h",
30*6777b538SAndroid Build Coastguard Worker    "features.cc",
31*6777b538SAndroid Build Coastguard Worker    "features.h",
32*6777b538SAndroid Build Coastguard Worker    "hkdf.cc",
33*6777b538SAndroid Build Coastguard Worker    "hkdf.h",
34*6777b538SAndroid Build Coastguard Worker    "hmac.cc",
35*6777b538SAndroid Build Coastguard Worker    "hmac.h",
36*6777b538SAndroid Build Coastguard Worker    "openssl_util.cc",
37*6777b538SAndroid Build Coastguard Worker    "openssl_util.h",
38*6777b538SAndroid Build Coastguard Worker    "p224_spake.cc",
39*6777b538SAndroid Build Coastguard Worker    "p224_spake.h",
40*6777b538SAndroid Build Coastguard Worker    "random.cc",
41*6777b538SAndroid Build Coastguard Worker    "random.h",
42*6777b538SAndroid Build Coastguard Worker    "rsa_private_key.cc",
43*6777b538SAndroid Build Coastguard Worker    "rsa_private_key.h",
44*6777b538SAndroid Build Coastguard Worker    "scoped_nss_types.h",
45*6777b538SAndroid Build Coastguard Worker    "secure_hash.cc",
46*6777b538SAndroid Build Coastguard Worker    "secure_hash.h",
47*6777b538SAndroid Build Coastguard Worker    "secure_util.cc",
48*6777b538SAndroid Build Coastguard Worker    "secure_util.h",
49*6777b538SAndroid Build Coastguard Worker    "sha2.cc",
50*6777b538SAndroid Build Coastguard Worker    "sha2.h",
51*6777b538SAndroid Build Coastguard Worker    "signature_creator.cc",
52*6777b538SAndroid Build Coastguard Worker    "signature_creator.h",
53*6777b538SAndroid Build Coastguard Worker    "signature_verifier.cc",
54*6777b538SAndroid Build Coastguard Worker    "signature_verifier.h",
55*6777b538SAndroid Build Coastguard Worker    "symmetric_key.cc",
56*6777b538SAndroid Build Coastguard Worker    "symmetric_key.h",
57*6777b538SAndroid Build Coastguard Worker    "unexportable_key.cc",
58*6777b538SAndroid Build Coastguard Worker    "unexportable_key.h",
59*6777b538SAndroid Build Coastguard Worker    "unexportable_key_metrics.cc",
60*6777b538SAndroid Build Coastguard Worker    "unexportable_key_metrics.h",
61*6777b538SAndroid Build Coastguard Worker    "unexportable_key_software_unsecure.cc",
62*6777b538SAndroid Build Coastguard Worker    "user_verifying_key.cc",
63*6777b538SAndroid Build Coastguard Worker    "user_verifying_key.h",
64*6777b538SAndroid Build Coastguard Worker  ]
65*6777b538SAndroid Build Coastguard Worker
66*6777b538SAndroid Build Coastguard Worker  deps = []
67*6777b538SAndroid Build Coastguard Worker
68*6777b538SAndroid Build Coastguard Worker  public_deps = [
69*6777b538SAndroid Build Coastguard Worker    ":buildflags",
70*6777b538SAndroid Build Coastguard Worker    "//base",
71*6777b538SAndroid Build Coastguard Worker    "//third_party/boringssl",
72*6777b538SAndroid Build Coastguard Worker  ]
73*6777b538SAndroid Build Coastguard Worker
74*6777b538SAndroid Build Coastguard Worker  if (is_apple) {
75*6777b538SAndroid Build Coastguard Worker    sources += [
76*6777b538SAndroid Build Coastguard Worker      "apple_keychain.h",
77*6777b538SAndroid Build Coastguard Worker      "apple_keychain_util.h",
78*6777b538SAndroid Build Coastguard Worker      "apple_keychain_util.mm",
79*6777b538SAndroid Build Coastguard Worker      "apple_keychain_v2.h",
80*6777b538SAndroid Build Coastguard Worker      "apple_keychain_v2.mm",
81*6777b538SAndroid Build Coastguard Worker    ]
82*6777b538SAndroid Build Coastguard Worker
83*6777b538SAndroid Build Coastguard Worker    if (is_mac) {
84*6777b538SAndroid Build Coastguard Worker      sources += [
85*6777b538SAndroid Build Coastguard Worker        "apple_keychain_mac.cc",
86*6777b538SAndroid Build Coastguard Worker        "mac_security_services_lock.cc",
87*6777b538SAndroid Build Coastguard Worker        "mac_security_services_lock.h",
88*6777b538SAndroid Build Coastguard Worker        "scoped_lacontext.h",
89*6777b538SAndroid Build Coastguard Worker        "scoped_lacontext.mm",
90*6777b538SAndroid Build Coastguard Worker        "unexportable_key_mac.h",
91*6777b538SAndroid Build Coastguard Worker        "unexportable_key_mac.mm",
92*6777b538SAndroid Build Coastguard Worker        "user_verifying_key_mac.mm",
93*6777b538SAndroid Build Coastguard Worker      ]
94*6777b538SAndroid Build Coastguard Worker    } else if (is_ios) {
95*6777b538SAndroid Build Coastguard Worker      sources += [ "apple_keychain_ios.mm" ]
96*6777b538SAndroid Build Coastguard Worker    }
97*6777b538SAndroid Build Coastguard Worker
98*6777b538SAndroid Build Coastguard Worker    frameworks = [
99*6777b538SAndroid Build Coastguard Worker      "LocalAuthentication.framework",
100*6777b538SAndroid Build Coastguard Worker      "CoreFoundation.framework",
101*6777b538SAndroid Build Coastguard Worker      "CryptoTokenKit.framework",
102*6777b538SAndroid Build Coastguard Worker      "Foundation.framework",
103*6777b538SAndroid Build Coastguard Worker      "Security.framework",
104*6777b538SAndroid Build Coastguard Worker    ]
105*6777b538SAndroid Build Coastguard Worker  }
106*6777b538SAndroid Build Coastguard Worker
107*6777b538SAndroid Build Coastguard Worker  if (is_win) {
108*6777b538SAndroid Build Coastguard Worker    sources += [
109*6777b538SAndroid Build Coastguard Worker      "scoped_capi_types.h",
110*6777b538SAndroid Build Coastguard Worker      "scoped_cng_types.h",
111*6777b538SAndroid Build Coastguard Worker      "unexportable_key_win.cc",
112*6777b538SAndroid Build Coastguard Worker      "unexportable_key_win.h",
113*6777b538SAndroid Build Coastguard Worker      "user_verifying_key_win.cc",
114*6777b538SAndroid Build Coastguard Worker    ]
115*6777b538SAndroid Build Coastguard Worker    libs = [ "ncrypt.lib" ]
116*6777b538SAndroid Build Coastguard Worker  }
117*6777b538SAndroid Build Coastguard Worker
118*6777b538SAndroid Build Coastguard Worker  # Some files are built when NSS is used for the platform certificate library.
119*6777b538SAndroid Build Coastguard Worker  if (use_nss_certs) {
120*6777b538SAndroid Build Coastguard Worker    sources += [
121*6777b538SAndroid Build Coastguard Worker      "nss_crypto_module_delegate.h",
122*6777b538SAndroid Build Coastguard Worker      "nss_key_util.cc",
123*6777b538SAndroid Build Coastguard Worker      "nss_key_util.h",
124*6777b538SAndroid Build Coastguard Worker      "nss_util.cc",
125*6777b538SAndroid Build Coastguard Worker      "nss_util.h",
126*6777b538SAndroid Build Coastguard Worker      "nss_util_internal.h",
127*6777b538SAndroid Build Coastguard Worker    ]
128*6777b538SAndroid Build Coastguard Worker    deps += [
129*6777b538SAndroid Build Coastguard Worker      "//build:chromeos_buildflags",
130*6777b538SAndroid Build Coastguard Worker      "//components/nacl/common:buildflags",
131*6777b538SAndroid Build Coastguard Worker    ]
132*6777b538SAndroid Build Coastguard Worker    configs += [ "//build/config/linux/nss" ]
133*6777b538SAndroid Build Coastguard Worker  }
134*6777b538SAndroid Build Coastguard Worker
135*6777b538SAndroid Build Coastguard Worker  if (is_chromeos_ash && !is_minimal_toolchain) {
136*6777b538SAndroid Build Coastguard Worker    sources += [ "nss_util_chromeos.cc" ]
137*6777b538SAndroid Build Coastguard Worker  }
138*6777b538SAndroid Build Coastguard Worker
139*6777b538SAndroid Build Coastguard Worker  if (is_chromeos && !is_minimal_toolchain) {
140*6777b538SAndroid Build Coastguard Worker    sources += [
141*6777b538SAndroid Build Coastguard Worker      "chaps_support.cc",
142*6777b538SAndroid Build Coastguard Worker      "chaps_support.h",
143*6777b538SAndroid Build Coastguard Worker    ]
144*6777b538SAndroid Build Coastguard Worker  }
145*6777b538SAndroid Build Coastguard Worker
146*6777b538SAndroid Build Coastguard Worker  defines = [ "CRYPTO_IMPLEMENTATION" ]
147*6777b538SAndroid Build Coastguard Worker}
148*6777b538SAndroid Build Coastguard Worker
149*6777b538SAndroid Build Coastguard Workerif (is_apple) {
150*6777b538SAndroid Build Coastguard Worker  source_set("mock_apple_keychain") {
151*6777b538SAndroid Build Coastguard Worker    sources = [
152*6777b538SAndroid Build Coastguard Worker      "mock_apple_keychain.cc",
153*6777b538SAndroid Build Coastguard Worker      "mock_apple_keychain.h",
154*6777b538SAndroid Build Coastguard Worker    ]
155*6777b538SAndroid Build Coastguard Worker
156*6777b538SAndroid Build Coastguard Worker    if (is_mac) {
157*6777b538SAndroid Build Coastguard Worker      sources += [ "mock_apple_keychain_mac.cc" ]
158*6777b538SAndroid Build Coastguard Worker    } else if (is_ios) {
159*6777b538SAndroid Build Coastguard Worker      sources += [ "mock_apple_keychain_ios.cc" ]
160*6777b538SAndroid Build Coastguard Worker    }
161*6777b538SAndroid Build Coastguard Worker
162*6777b538SAndroid Build Coastguard Worker    deps = [
163*6777b538SAndroid Build Coastguard Worker      ":crypto",
164*6777b538SAndroid Build Coastguard Worker      "//base",
165*6777b538SAndroid Build Coastguard Worker    ]
166*6777b538SAndroid Build Coastguard Worker  }
167*6777b538SAndroid Build Coastguard Worker}
168*6777b538SAndroid Build Coastguard Worker
169*6777b538SAndroid Build Coastguard Workertest("crypto_unittests") {
170*6777b538SAndroid Build Coastguard Worker  sources = [
171*6777b538SAndroid Build Coastguard Worker    "aead_unittest.cc",
172*6777b538SAndroid Build Coastguard Worker    "ec_private_key_unittest.cc",
173*6777b538SAndroid Build Coastguard Worker    "ec_signature_creator_unittest.cc",
174*6777b538SAndroid Build Coastguard Worker    "encryptor_unittest.cc",
175*6777b538SAndroid Build Coastguard Worker    "hmac_unittest.cc",
176*6777b538SAndroid Build Coastguard Worker    "p224_spake_unittest.cc",
177*6777b538SAndroid Build Coastguard Worker    "random_unittest.cc",
178*6777b538SAndroid Build Coastguard Worker    "rsa_private_key_unittest.cc",
179*6777b538SAndroid Build Coastguard Worker    "secure_hash_unittest.cc",
180*6777b538SAndroid Build Coastguard Worker    "sha2_unittest.cc",
181*6777b538SAndroid Build Coastguard Worker    "signature_creator_unittest.cc",
182*6777b538SAndroid Build Coastguard Worker    "signature_verifier_unittest.cc",
183*6777b538SAndroid Build Coastguard Worker    "symmetric_key_unittest.cc",
184*6777b538SAndroid Build Coastguard Worker    "unexportable_key_unittest.cc",
185*6777b538SAndroid Build Coastguard Worker  ]
186*6777b538SAndroid Build Coastguard Worker
187*6777b538SAndroid Build Coastguard Worker  if (is_win || is_mac) {
188*6777b538SAndroid Build Coastguard Worker    sources += [ "unexportable_key_metrics_unittest.cc" ]
189*6777b538SAndroid Build Coastguard Worker  }
190*6777b538SAndroid Build Coastguard Worker
191*6777b538SAndroid Build Coastguard Worker  if (is_mac) {
192*6777b538SAndroid Build Coastguard Worker    sources += [
193*6777b538SAndroid Build Coastguard Worker      "apple_keychain_util_unittest.mm",
194*6777b538SAndroid Build Coastguard Worker      "unexportable_key_mac_unittest.mm",
195*6777b538SAndroid Build Coastguard Worker      "user_verifying_key_mac_unittest.mm",
196*6777b538SAndroid Build Coastguard Worker    ]
197*6777b538SAndroid Build Coastguard Worker  }
198*6777b538SAndroid Build Coastguard Worker
199*6777b538SAndroid Build Coastguard Worker  # Some files are built when NSS is used for the platform certificate library.
200*6777b538SAndroid Build Coastguard Worker  if (use_nss_certs) {
201*6777b538SAndroid Build Coastguard Worker    sources += [
202*6777b538SAndroid Build Coastguard Worker      "nss_key_util_unittest.cc",
203*6777b538SAndroid Build Coastguard Worker      "nss_util_unittest.cc",
204*6777b538SAndroid Build Coastguard Worker    ]
205*6777b538SAndroid Build Coastguard Worker    configs += [ "//build/config/linux/nss" ]
206*6777b538SAndroid Build Coastguard Worker  }
207*6777b538SAndroid Build Coastguard Worker
208*6777b538SAndroid Build Coastguard Worker  deps = [
209*6777b538SAndroid Build Coastguard Worker    ":crypto",
210*6777b538SAndroid Build Coastguard Worker    ":test_support",
211*6777b538SAndroid Build Coastguard Worker    "//base",
212*6777b538SAndroid Build Coastguard Worker    "//base/test:run_all_unittests",
213*6777b538SAndroid Build Coastguard Worker    "//base/test:test_support",
214*6777b538SAndroid Build Coastguard Worker    "//testing/gmock",
215*6777b538SAndroid Build Coastguard Worker    "//testing/gtest",
216*6777b538SAndroid Build Coastguard Worker  ]
217*6777b538SAndroid Build Coastguard Worker}
218*6777b538SAndroid Build Coastguard Worker
219*6777b538SAndroid Build Coastguard Workerstatic_library("test_support") {
220*6777b538SAndroid Build Coastguard Worker  testonly = true
221*6777b538SAndroid Build Coastguard Worker  sources = [
222*6777b538SAndroid Build Coastguard Worker    "scoped_fake_user_verifying_key_provider.cc",
223*6777b538SAndroid Build Coastguard Worker    "scoped_fake_user_verifying_key_provider.h",
224*6777b538SAndroid Build Coastguard Worker    "scoped_mock_unexportable_key_provider.cc",
225*6777b538SAndroid Build Coastguard Worker    "scoped_mock_unexportable_key_provider.h",
226*6777b538SAndroid Build Coastguard Worker  ]
227*6777b538SAndroid Build Coastguard Worker
228*6777b538SAndroid Build Coastguard Worker  if (use_nss_certs) {
229*6777b538SAndroid Build Coastguard Worker    sources += [
230*6777b538SAndroid Build Coastguard Worker      "scoped_test_nss_db.cc",
231*6777b538SAndroid Build Coastguard Worker      "scoped_test_nss_db.h",
232*6777b538SAndroid Build Coastguard Worker    ]
233*6777b538SAndroid Build Coastguard Worker    configs += [ "//build/config/linux/nss" ]
234*6777b538SAndroid Build Coastguard Worker  }
235*6777b538SAndroid Build Coastguard Worker
236*6777b538SAndroid Build Coastguard Worker  if (is_chromeos_ash) {
237*6777b538SAndroid Build Coastguard Worker    sources += [
238*6777b538SAndroid Build Coastguard Worker      "scoped_test_nss_chromeos_user.cc",
239*6777b538SAndroid Build Coastguard Worker      "scoped_test_nss_chromeos_user.h",
240*6777b538SAndroid Build Coastguard Worker      "scoped_test_system_nss_key_slot.cc",
241*6777b538SAndroid Build Coastguard Worker      "scoped_test_system_nss_key_slot.h",
242*6777b538SAndroid Build Coastguard Worker    ]
243*6777b538SAndroid Build Coastguard Worker  }
244*6777b538SAndroid Build Coastguard Worker
245*6777b538SAndroid Build Coastguard Worker  if (is_mac) {
246*6777b538SAndroid Build Coastguard Worker    sources += [
247*6777b538SAndroid Build Coastguard Worker      "fake_apple_keychain_v2.h",
248*6777b538SAndroid Build Coastguard Worker      "fake_apple_keychain_v2.mm",
249*6777b538SAndroid Build Coastguard Worker      "scoped_fake_apple_keychain_v2.h",
250*6777b538SAndroid Build Coastguard Worker      "scoped_fake_apple_keychain_v2.mm",
251*6777b538SAndroid Build Coastguard Worker    ]
252*6777b538SAndroid Build Coastguard Worker    frameworks = [
253*6777b538SAndroid Build Coastguard Worker      "CoreFoundation.framework",
254*6777b538SAndroid Build Coastguard Worker      "Foundation.framework",
255*6777b538SAndroid Build Coastguard Worker      "LocalAuthentication.framework",
256*6777b538SAndroid Build Coastguard Worker      "Security.framework",
257*6777b538SAndroid Build Coastguard Worker    ]
258*6777b538SAndroid Build Coastguard Worker  }
259*6777b538SAndroid Build Coastguard Worker
260*6777b538SAndroid Build Coastguard Worker  deps = [
261*6777b538SAndroid Build Coastguard Worker    ":crypto",
262*6777b538SAndroid Build Coastguard Worker    "//base",
263*6777b538SAndroid Build Coastguard Worker  ]
264*6777b538SAndroid Build Coastguard Worker}
265