blob: 69594cbd135acc2e55a8e1f7581f6f6565215004 [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
Collin5baeeba52022-01-20 02:07:595import("//build/buildflag_header.gni")
Yuta Hijikatabf953202020-11-12 08:43:556import("//build/config/chromeos/ui_mode.gni")
Collin5baeeba52022-01-20 02:07:597import("//crypto/features.gni")
qsrfb5251d12015-01-21 15:57:228import("//testing/test.gni")
[email protected]c6f27f22013-08-21 21:44:599
Collin5baeeba52022-01-20 02:07:5910buildflag_header("buildflags") {
11 header = "crypto_buildflags.h"
12 flags = [ "USE_NSS_CERTS=$use_nss_certs" ]
13}
14
sergeyu99d83f92015-09-14 23:03:3315component("crypto") {
16 output_name = "crcrypto" # Avoid colliding with OpenSSL's libcrypto.
17 sources = [
svaldez22de42fe2016-04-21 19:42:2218 "aead.cc",
19 "aead.h",
sergeyu99d83f92015-09-14 23:03:3320 "crypto_export.h",
svaldez22de42fe2016-04-21 19:42:2221 "ec_private_key.cc",
sergeyu99d83f92015-09-14 23:03:3322 "ec_private_key.h",
sergeyu99d83f92015-09-14 23:03:3323 "ec_signature_creator.cc",
24 "ec_signature_creator.h",
svaldeze83af292016-04-26 14:33:3725 "ec_signature_creator_impl.cc",
sergeyu99d83f92015-09-14 23:03:3326 "ec_signature_creator_impl.h",
sergeyu99d83f92015-09-14 23:03:3327 "encryptor.cc",
28 "encryptor.h",
sergeyu99d83f92015-09-14 23:03:3329 "hkdf.cc",
30 "hkdf.h",
31 "hmac.cc",
32 "hmac.h",
sergeyu99d83f92015-09-14 23:03:3333 "openssl_util.cc",
34 "openssl_util.h",
sergeyu99d83f92015-09-14 23:03:3335 "p224_spake.cc",
36 "p224_spake.h",
37 "random.cc",
38 "random.h",
svaldez22de42fe2016-04-21 19:42:2239 "rsa_private_key.cc",
sergeyu99d83f92015-09-14 23:03:3340 "rsa_private_key.h",
sergeyu99d83f92015-09-14 23:03:3341 "scoped_capi_types.h",
42 "scoped_nss_types.h",
svaldez22de42fe2016-04-21 19:42:2243 "secure_hash.cc",
sergeyu99d83f92015-09-14 23:03:3344 "secure_hash.h",
sergeyu99d83f92015-09-14 23:03:3345 "secure_util.cc",
46 "secure_util.h",
47 "sha2.cc",
48 "sha2.h",
svaldez22de42fe2016-04-21 19:42:2249 "signature_creator.cc",
sergeyu99d83f92015-09-14 23:03:3350 "signature_creator.h",
svaldez22de42fe2016-04-21 19:42:2251 "signature_verifier.cc",
sergeyu99d83f92015-09-14 23:03:3352 "signature_verifier.h",
svaldez9c641462016-05-02 20:49:0553 "symmetric_key.cc",
sergeyu99d83f92015-09-14 23:03:3354 "symmetric_key.h",
Adam Langley979ee872021-03-12 02:47:1955 "unexportable_key.cc",
56 "unexportable_key.h",
sergeyu99d83f92015-09-14 23:03:3357 ]
58
sergeyu99d83f92015-09-14 23:03:3359 deps = [
sergeyu99d83f92015-09-14 23:03:3360 "//base",
61 "//base/third_party/dynamic_annotations",
62 ]
63
Collin5baeeba52022-01-20 02:07:5964 public_deps = [
65 ":buildflags",
66 "//third_party/boringssl",
67 ]
davidben74f67442016-10-01 01:45:2268
Sylvain Defresnebb05f5322020-09-15 10:53:1869 if (is_apple) {
70 sources += [
sergeyu99d83f92015-09-14 23:03:3371 "apple_keychain.h",
Sylvain Defresnebb05f5322020-09-15 10:53:1872
73 # TODO(brettw): these mocks should be moved to a test_support_crypto
74 # target if possible.
erikcheneece6c32015-07-07 22:13:1175 "mock_apple_keychain.cc",
76 "mock_apple_keychain.h",
sergeyu99d83f92015-09-14 23:03:3377 ]
Sylvain Defresnebb05f5322020-09-15 10:53:1878
79 if (is_mac) {
80 sources += [
Mark Mentovaib4e1bfc2022-02-10 14:43:3481 "apple_keychain_mac.cc",
Sylvain Defresnebb05f5322020-09-15 10:53:1882
83 # TODO(brettw): these mocks should be moved to a test_support_crypto
84 # target if possible.
85 "mock_apple_keychain_mac.cc",
86 ]
87 }
88 if (is_ios) {
89 sources += [
90 "apple_keychain_ios.mm",
91
92 # TODO(brettw): these mocks should be moved to a test_support_crypto
93 # target if possible.
94 "mock_apple_keychain_ios.cc",
95 ]
96 }
97
Robert Sesekd9106de2020-06-30 23:24:0298 frameworks = [
rsesek02aa51c2016-05-11 02:13:5799 "CoreFoundation.framework",
100 "Security.framework",
101 ]
sergeyu99d83f92015-09-14 23:03:33102 }
103
Sylvain Defresnebb05f5322020-09-15 10:53:18104 if (is_mac) {
105 sources += [
sergeyu99d83f92015-09-14 23:03:33106 "mac_security_services_lock.cc",
107 "mac_security_services_lock.h",
108 ]
109 }
Sylvain Defresnebb05f5322020-09-15 10:53:18110 if (is_win) {
111 sources += [
sergeyu99d83f92015-09-14 23:03:33112 "capi_util.cc",
113 "capi_util.h",
Adam Langley979ee872021-03-12 02:47:19114 "unexportable_key_win.cc",
sergeyu99d83f92015-09-14 23:03:33115 ]
Adam Langley979ee872021-03-12 02:47:19116 libs = [ "ncrypt.lib" ]
sergeyu99d83f92015-09-14 23:03:33117 }
118
svaldez2135be52016-04-20 16:34:53119 # Some files are built when NSS is used for the platform certificate library.
Sylvain Defresnebb05f5322020-09-15 10:53:18120 if (use_nss_certs) {
121 sources += [
122 "nss_crypto_module_delegate.h",
davidben85bad9e2015-05-11 20:20:10123 "nss_key_util.cc",
124 "nss_key_util.h",
davidben2bcbc6b2015-04-22 02:36:41125 "nss_util.cc",
126 "nss_util.h",
127 "nss_util_internal.h",
128 ]
Yuta Hijikatabf953202020-11-12 08:43:55129 deps += [ "//build:chromeos_buildflags" ]
David Benjamin4c457a782022-04-29 16:52:33130 configs += [ "//build/config/linux/nss" ]
sergeyu99d83f92015-09-14 23:03:33131 }
davidben2bcbc6b2015-04-22 02:36:41132
Yuta Hijikatabf953202020-11-12 08:43:55133 if (is_chromeos_ash) {
David Benjamin2f2cb362019-10-15 22:51:05134 sources += [ "nss_util_chromeos.cc" ]
135 }
136
Yuta Hijikata2eecbe22021-01-13 05:39:22137 if (is_chromeos || is_chromeos_lacros) {
Michael Ershov1c50ac952020-12-02 21:01:17138 sources += [
139 "chaps_support.cc",
140 "chaps_support.h",
141 ]
142 }
143
sergeyu99d83f92015-09-14 23:03:33144 defines = [ "CRYPTO_IMPLEMENTATION" ]
[email protected]c6f27f22013-08-21 21:44:59145}
146
brettw690c96672015-04-21 16:19:54147test("crypto_unittests") {
148 sources = [
svaldez22de42fe2016-04-21 19:42:22149 "aead_unittest.cc",
brettw690c96672015-04-21 16:19:54150 "ec_private_key_unittest.cc",
151 "ec_signature_creator_unittest.cc",
152 "encryptor_unittest.cc",
brettw690c96672015-04-21 16:19:54153 "hmac_unittest.cc",
brettw690c96672015-04-21 16:19:54154 "p224_spake_unittest.cc",
brettw690c96672015-04-21 16:19:54155 "random_unittest.cc",
brettw690c96672015-04-21 16:19:54156 "rsa_private_key_unittest.cc",
157 "secure_hash_unittest.cc",
158 "sha2_unittest.cc",
159 "signature_creator_unittest.cc",
160 "signature_verifier_unittest.cc",
161 "symmetric_key_unittest.cc",
Adam Langley979ee872021-03-12 02:47:19162 "unexportable_key_unittest.cc",
brettw690c96672015-04-21 16:19:54163 ]
dpranke43760592014-11-08 02:59:57164
svaldez2135be52016-04-20 16:34:53165 # Some files are built when NSS is used for the platform certificate library.
Sylvain Defresnebb05f5322020-09-15 10:53:18166 if (use_nss_certs) {
167 sources += [
davidben85bad9e2015-05-11 20:20:10168 "nss_key_util_unittest.cc",
169 "nss_util_unittest.cc",
170 ]
David Benjamin4c457a782022-04-29 16:52:33171 configs += [ "//build/config/linux/nss" ]
[email protected]7a7e0852014-04-14 23:25:13172 }
brettw690c96672015-04-21 16:19:54173
brettw690c96672015-04-21 16:19:54174 deps = [
175 ":crypto",
brettw690c96672015-04-21 16:19:54176 ":test_support",
177 "//base",
178 "//base/test:run_all_unittests",
179 "//base/test:test_support",
180 "//testing/gmock",
181 "//testing/gtest",
182 ]
[email protected]7a7e0852014-04-14 23:25:13183}
[email protected]c6f27f22013-08-21 21:44:59184
Adam Langley979ee872021-03-12 02:47:19185static_library("test_support") {
brettw2dbbe5b02016-07-14 19:38:57186 testonly = true
Adam Langley979ee872021-03-12 02:47:19187 sources = [
188 "scoped_mock_unexportable_key_provider.cc",
189 "scoped_mock_unexportable_key_provider.h",
190 ]
[email protected]190933f2014-07-28 09:56:51191
brettw2dbbe5b02016-07-14 19:38:57192 if (use_nss_certs) {
193 sources += [
[email protected]190933f2014-07-28 09:56:51194 "scoped_test_nss_db.cc",
195 "scoped_test_nss_db.h",
196 ]
David Benjamin4c457a782022-04-29 16:52:33197 configs += [ "//build/config/linux/nss" ]
[email protected]190933f2014-07-28 09:56:51198 }
199
Yuta Hijikatabf953202020-11-12 08:43:55200 if (is_chromeos_ash) {
brettw2dbbe5b02016-07-14 19:38:57201 sources += [
[email protected]190933f2014-07-28 09:56:51202 "scoped_test_nss_chromeos_user.cc",
203 "scoped_test_nss_chromeos_user.h",
204 "scoped_test_system_nss_key_slot.cc",
205 "scoped_test_system_nss_key_slot.h",
206 ]
207 }
brettw2dbbe5b02016-07-14 19:38:57208
209 deps = [
210 ":crypto",
brettw2dbbe5b02016-07-14 19:38:57211 "//base",
212 ]
[email protected]190933f2014-07-28 09:56:51213}