# 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("ssl/flags.gni") crypto_minimal_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", ] component("crypto") { external = true 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.h", "curve25519-donna.c", "ghash.cc", "ghash.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", "hkdf.cc", "hkdf.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", "p224_spake.cc", "p224_spake.h", "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", "random.h", "random.cc", "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.h", "secure_hash_default.cc", "secure_hash_openssl.cc", "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_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/pk11akey.cc", "third_party/nss/rsawrapr.c", "third_party/nss/secsign.cc", ] deps = [ "//base", "//base/third_party/dynamic_annotations", "//crypto/ssl:metassl", ] forward_dependent_configs_from = [ "//crypto/ssl:metassl" ] if (!is_mac && !is_ios) { sources -= [ "apple_keychain.h", "mock_apple_keychain.cc", "mock_apple_keychain.h", ] } if (!is_linux) { 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) { configs += "//third_party/nss:nss_linux_config" } else { 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" ] # TODO(brettw) once GYP compat is no longer necessary, just move # crypto_minimal_sources to the crypto_minimal target and include a # dependency on it here. sources += crypto_minimal_sources } # A minimal crypto subset for core features that small standalone targets can # use to reduce code size. static_library("crypto_minimal") { external = true sources = crypto_minimal_sources deps = [ "//base", "//base/third_party/dynamic_annotations", ] defines = [ "CRYPTO_IMPLEMENTATION" ] } test("crypto_unittests") { external = true sources = [ # Infrastructure files. "run_all_unittests.cc", # 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", ] } deps = [ ":crypto", "//base", "//base:test_support_base", "//testing:gmock", "//testing:gtest", ] if (is_mac) { #deps += "//third_party/nss:nspr" } }