diff options
author | brettw@chromium.org <brettw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-04-14 23:25:13 +0000 |
---|---|---|
committer | brettw@chromium.org <brettw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-04-14 23:25:13 +0000 |
commit | 7a7e08546c85dd5a039c8dd0e57bae1cd384fc44 (patch) | |
tree | a316212f6372e5d9bd8fd814a62c786d0fd7baf5 /crypto | |
parent | 7ff2cc13a2d85f02aaca8bd0edd2c45dae527065 (diff) | |
download | chromium_src-7a7e08546c85dd5a039c8dd0e57bae1cd384fc44.zip chromium_src-7a7e08546c85dd5a039c8dd0e57bae1cd384fc44.tar.gz chromium_src-7a7e08546c85dd5a039c8dd0e57bae1cd384fc44.tar.bz2 |
Add SSL support to the GN build
This moves files from the secondary tree to the main one, and renames the "meta" one to //crypto:ssl. It also adds the crypto unit tests.
R=rsleevi@chromium.org
Review URL: https://codereview.chromium.org/231673006
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@263744 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'crypto')
-rw-r--r-- | crypto/BUILD.gn | 278 |
1 files changed, 278 insertions, 0 deletions
diff --git a/crypto/BUILD.gn b/crypto/BUILD.gn new file mode 100644 index 0000000..110868d --- /dev/null +++ b/crypto/BUILD.gn @@ -0,0 +1,278 @@ +# Copyright (c) 2013 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import("//build/config/crypto.gni") + +component("crypto") { + output_name = "crcrypto" # Avoid colliding with OpenSSL's libcrypto. + sources = [ + "apple_keychain.h", + "apple_keychain_ios.mm", + "apple_keychain_mac.mm", + "capi_util.cc", + "capi_util.h", + "crypto_export.h", + "crypto_module_blocking_password_delegate.h", + "cssm_init.cc", + "cssm_init.h", + "curve25519.cc", + "curve25519-donna.c", + "curve25519.h", + "ec_private_key.h", + "ec_private_key_nss.cc", + "ec_private_key_openssl.cc", + "ec_signature_creator.cc", + "ec_signature_creator.h", + "ec_signature_creator_impl.h", + "ec_signature_creator_nss.cc", + "ec_signature_creator_openssl.cc", + "encryptor.cc", + "encryptor.h", + "encryptor_nss.cc", + "encryptor_openssl.cc", + "ghash.cc", + "ghash.h", + "hkdf.cc", + "hkdf.h", + "hmac.cc", + "hmac.h", + "hmac_nss.cc", + "hmac_openssl.cc", + "mac_security_services_lock.cc", + "mac_security_services_lock.h", + # TODO(brettw) these mocks should be moved to a test_support_crypto target + # if possible. + "mock_apple_keychain.cc", + "mock_apple_keychain.h", + "mock_apple_keychain_ios.cc", + "mock_apple_keychain_mac.cc", + "nss_util.cc", + "nss_util.h", + "nss_util_internal.h", + "openpgp_symmetric_encryption.cc", + "openpgp_symmetric_encryption.h", + "openssl_util.cc", + "openssl_util.h", + "p224.cc", + "p224.h", + "p224_spake.cc", + "p224_spake.h", + "random.cc", + "random.h", + "rsa_private_key.cc", + "rsa_private_key.h", + "rsa_private_key_nss.cc", + "rsa_private_key_openssl.cc", + "scoped_capi_types.h", + "scoped_nss_types.h", + "secure_hash_default.cc", + "secure_hash.h", + "secure_hash_openssl.cc", + "secure_util.cc", + "secure_util.h", + "sha2.cc", + "sha2.h", + "signature_creator.h", + "signature_creator_nss.cc", + "signature_creator_openssl.cc", + "signature_verifier.h", + "signature_verifier_nss.cc", + "signature_verifier_openssl.cc", + "symmetric_key.h", + "symmetric_key_nss.cc", + "symmetric_key_openssl.cc", + "third_party/nss/chromium-blapi.h", + "third_party/nss/chromium-blapit.h", + "third_party/nss/chromium-nss.h", + "third_party/nss/chromium-sha256.h", + "third_party/nss/pk11akey.cc", + "third_party/nss/rsawrapr.c", + "third_party/nss/secsign.cc", + "third_party/nss/sha512.cc", + ] + + deps = [ + ":platform", + "//base", + "//base/third_party/dynamic_annotations", + ] + + if (!is_mac && !is_ios) { + sources -= [ + "apple_keychain.h", + "mock_apple_keychain.cc", + "mock_apple_keychain.h", + ] + } + + if (!is_linux) { + sources -= [ + "openpgp_symmetric_encryption.cc", + "openpgp_symmetric_encryption.h", + ] + if (use_nss) { # Removed for non-NSS in all cases below. + sources -= [ + "openpgp_symmetric_encryption.cc", + "openpgp_symmetric_encryption.h", + ] + } + } + if (!is_mac) { + sources -= [ + "cssm_init.cc", + "cssm_init.h", + "mac_security_services_lock.cc", + "mac_security_services_lock.h", + ] + } + if (!is_win) { + sources -= [ + "capi_util.cc", + "capi_util.h", + ] + } + + if (!use_nss) { + sources -= [ + "ec_private_key_nss.cc", + "ec_signature_creator_nss.cc", + "encryptor_nss.cc", + "hmac_nss.cc", + "nss_util.cc", + "nss_util.h", + "rsa_private_key_nss.cc", + "secure_hash_default.cc", + "signature_creator_nss.cc", + "signature_verifier_nss.cc", + "symmetric_key_nss.cc", + "third_party/nss/chromium-blapi.h", + "third_party/nss/chromium-blapit.h", + "third_party/nss/chromium-nss.h", + "third_party/nss/pk11akey.cc", + "third_party/nss/rsawrapr.c", + "third_party/nss/secsign.cc", + ] + } + if (!use_openssl) { + sources -= [ + "ec_private_key_openssl.cc", + "ec_signature_creator_openssl.cc", + "encryptor_openssl.cc", + "hmac_openssl.cc", + "openssl_util.cc", + "openssl_util.h", + "rsa_private_key_openssl.cc", + "secure_hash_openssl.cc", + "signature_creator_openssl.cc", + "signature_verifier_openssl.cc", + "symmetric_key_openssl.cc", + ] + } + + defines = [ "CRYPTO_IMPLEMENTATION" ] +} + +if (is_win) { + # A minimal crypto subset for hmac-related stuff that small standalone + # targets can use to reduce code size on Windows. This does not depend on + # OpenSSL/NSS but will use Windows APIs for that functionality. + source_set("crypto_minimal_win") { + sources = [ + "hmac.cc", + "hmac.h", + "hmac_win.cc", + "secure_util.cc", + "secure_util.h", + "symmetric_key.h", + "symmetric_key_win.cc", + "third_party/nss/chromium-sha256.h", + "third_party/nss/sha512.cc", + ] + + deps = [ + "//base", + "//base/third_party/dynamic_annotations", + ] + + defines = [ "CRYPTO_IMPLEMENTATION" ] + } +} + +test("crypto_unittests") { + sources = [ + # Tests. + "curve25519_unittest.cc", + "ec_private_key_unittest.cc", + "ec_signature_creator_unittest.cc", + "encryptor_unittest.cc", + "ghash_unittest.cc", + "hkdf_unittest.cc", + "hmac_unittest.cc", + "nss_util_unittest.cc", + "p224_unittest.cc", + "p224_spake_unittest.cc", + "random_unittest.cc", + "rsa_private_key_unittest.cc", + "rsa_private_key_nss_unittest.cc", + "secure_hash_unittest.cc", + "sha2_unittest.cc", + "signature_creator_unittest.cc", + "signature_verifier_unittest.cc", + "symmetric_key_unittest.cc", + "openpgp_symmetric_encryption_unittest.cc", + ] + + if (use_openssl) { + sources -= [ + "nss_util_unittest.cc", + "openpgp_symmetric_encryption_unittest.cc", + "rsa_private_key_nss_unittest.cc", + ] + } + + if (use_openssl || !is_linux) { + sources -= [ + "rsa_private_key_nss_unittest.cc", + "openpgp_symmetric_encryption_unittest.cc", + ] + } + + if (use_openssl) { + sources -= [ "nss_util_unittest.cc" ] + } + + deps = [ + ":crypto", + ":platform", + "//base", + "//base/test:run_all_unittests", + "//base/test:test_support", + "//testing/gmock", + "//testing/gtest", + ] +} + +# This is a meta-target that forwards to NSS's SSL library or OpenSSL, +# according to the state of the crypto flags. A target just wanting to depend +# on the current SSL library should just depend on this. +group("platform") { + if (use_openssl) { + deps = [ "//third_party/openssl" ] + } else { + deps = [ "//net/third_party/nss/ssl:libssl" ] + if (is_linux) { + # On Linux, we use the system NSS (excepting SSL where we always use our + # own). + direct_dependent_configs = [ + "//third_party/nss:system_nss_no_ssl_config" + ] + } else { + # Non-Linux platforms use the hermetic NSS from the tree. + deps += [ + "//third_party/nss:nspr", + "//third_party/nss:nss", + ] + } + } +} |