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