|  | # Copyright (c) 2012 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. | 
|  |  | 
|  | { | 
|  | 'variables': { | 
|  | 'chromium_code': 1, | 
|  | # Put all transitive dependencies for Windows HMAC here. | 
|  | # This is required so that we can build them for nacl win64. | 
|  | 'hmac_win64_related_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', | 
|  | ], | 
|  | }, | 
|  | 'targets': [ | 
|  | { | 
|  | 'target_name': 'crypto', | 
|  | 'type': '<(component)', | 
|  | 'product_name': 'crcrypto',  # Avoid colliding with OpenSSL's libcrypto | 
|  | 'dependencies': [ | 
|  | '../base/base.gyp:base', | 
|  | '../base/third_party/dynamic_annotations/dynamic_annotations.gyp:dynamic_annotations', | 
|  | ], | 
|  | 'defines': [ | 
|  | 'CRYPTO_IMPLEMENTATION', | 
|  | ], | 
|  | 'msvs_disabled_warnings': [ | 
|  | 4018, | 
|  | ], | 
|  | 'conditions': [ | 
|  | [ 'os_posix == 1 and OS != "mac" and OS != "ios" and OS != "android" and OS != "lb_shell"', { | 
|  | 'dependencies': [ | 
|  | '../build/linux/system.gyp:ssl', | 
|  | ], | 
|  | 'export_dependent_settings': [ | 
|  | '../build/linux/system.gyp:ssl', | 
|  | ], | 
|  | 'conditions': [ | 
|  | [ 'chromeos==1', { | 
|  | 'sources/': [ ['include', '_chromeos\\.cc$'] ] | 
|  | }, | 
|  | ], | 
|  | ], | 
|  | }, {  # os_posix != 1 or OS == "mac" or OS == "ios" or OS == "android" | 
|  | 'sources/': [ | 
|  | ['exclude', '_nss\.cc$'], | 
|  | ['include', 'ec_private_key_nss\.cc$'], | 
|  | ['include', 'ec_signature_creator_nss\.cc$'], | 
|  | ['include', 'encryptor_nss\.cc$'], | 
|  | ['include', 'hmac_nss\.cc$'], | 
|  | ['include', 'signature_verifier_nss\.cc$'], | 
|  | ['include', 'symmetric_key_nss\.cc$'], | 
|  | ], | 
|  | 'sources!': [ | 
|  | 'hmac_win.cc', | 
|  | 'openpgp_symmetric_encryption.cc', | 
|  | 'openpgp_symmetric_encryption.h', | 
|  | 'symmetric_key_win.cc', | 
|  | ], | 
|  | }], | 
|  | [ 'OS != "mac" and OS != "ios"', { | 
|  | 'sources!': [ | 
|  | 'apple_keychain.h', | 
|  | 'mock_apple_keychain.cc', | 
|  | 'mock_apple_keychain.h', | 
|  | ], | 
|  | }], | 
|  | [ 'OS == "android"', { | 
|  | 'dependencies': [ | 
|  | '../third_party/openssl/openssl.gyp:openssl', | 
|  | ], | 
|  | 'sources/': [ | 
|  | ['exclude', 'ec_private_key_nss\.cc$'], | 
|  | ['exclude', 'ec_signature_creator_nss\.cc$'], | 
|  | ['exclude', 'encryptor_nss\.cc$'], | 
|  | ['exclude', 'hmac_nss\.cc$'], | 
|  | ['exclude', 'signature_verifier_nss\.cc$'], | 
|  | ['exclude', 'symmetric_key_nss\.cc$'], | 
|  | ], | 
|  | }], | 
|  | [ 'os_bsd==1', { | 
|  | 'link_settings': { | 
|  | 'libraries': [ | 
|  | '-L/usr/local/lib -lexecinfo', | 
|  | ], | 
|  | }, | 
|  | }, | 
|  | ], | 
|  | [ 'OS == "ios"', { | 
|  | 'sources!': [ | 
|  | # This class is stubbed out on iOS. | 
|  | 'rsa_private_key.cc', | 
|  | ], | 
|  | }], | 
|  | [ 'OS == "mac"', { | 
|  | 'link_settings': { | 
|  | 'libraries': [ | 
|  | '$(SDKROOT)/System/Library/Frameworks/Security.framework', | 
|  | ], | 
|  | }, | 
|  | }, {  # OS != "mac" | 
|  | 'sources!': [ | 
|  | 'cssm_init.cc', | 
|  | 'cssm_init.h', | 
|  | 'mac_security_services_lock.cc', | 
|  | 'mac_security_services_lock.h', | 
|  | ], | 
|  | }], | 
|  | [ 'OS == "mac" or OS == "ios" or OS == "win"', { | 
|  | 'dependencies': [ | 
|  | '../third_party/nss/nss.gyp:nspr', | 
|  | '../third_party/nss/nss.gyp:nss', | 
|  | ], | 
|  | 'export_dependent_settings': [ | 
|  | '../third_party/nss/nss.gyp:nspr', | 
|  | '../third_party/nss/nss.gyp:nss', | 
|  | ], | 
|  | }], | 
|  | [ 'OS != "win"', { | 
|  | 'sources!': [ | 
|  | 'capi_util.h', | 
|  | 'capi_util.cc', | 
|  | ], | 
|  | }], | 
|  | ['OS == "lb_shell"', { | 
|  | 'dependencies' : [ | 
|  | '<(lbshell_root)/build/projects/posix_emulation.gyp:posix_emulation', | 
|  | ], | 
|  | }], | 
|  | ['OS == "starboard"', { | 
|  | 'dependencies' : [ | 
|  | '<(DEPTH)/starboard/starboard.gyp:starboard', | 
|  | ], | 
|  | }], | 
|  | ['OS == "lb_shell" or OS == "starboard"', { | 
|  | 'dependencies' : [ | 
|  | '../third_party/openssl/openssl.gyp:openssl', | 
|  | ], | 
|  | 'sources/': [ | 
|  | ['exclude', '_nss.cc$'], | 
|  | ], | 
|  | }], | 
|  | [ 'use_openssl==1', { | 
|  | # TODO(joth): Use a glob to match exclude patterns once the | 
|  | #             OpenSSL file set is complete. | 
|  | 'sources!': [ | 
|  | 'ec_private_key_nss.cc', | 
|  | 'ec_signature_creator_nss.cc', | 
|  | 'encryptor_nss.cc', | 
|  | 'hmac_nss.cc', | 
|  | 'nss_util.cc', | 
|  | 'nss_util.h', | 
|  | 'openpgp_symmetric_encryption.cc', | 
|  | '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/chromium-sha256.h', | 
|  | 'third_party/nss/pk11akey.cc', | 
|  | 'third_party/nss/secsign.cc', | 
|  | 'third_party/nss/sha512.cc', | 
|  | ], | 
|  | }, { | 
|  | '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', | 
|  | ], | 
|  | },], | 
|  | ], | 
|  | 'sources': [ | 
|  | # NOTE: all transitive dependencies of HMAC on windows need | 
|  | #     to be placed in the source list above. | 
|  | '<@(hmac_win64_related_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', | 
|  | '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', | 
|  | 'hmac_nss.cc', | 
|  | 'hmac_openssl.cc', | 
|  | 'mac_security_services_lock.cc', | 
|  | 'mac_security_services_lock.h', | 
|  | '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_ios.cc', | 
|  | 'rsa_private_key_mac.cc', | 
|  | 'rsa_private_key_nss.cc', | 
|  | 'rsa_private_key_openssl.cc', | 
|  | 'rsa_private_key_win.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_mac.cc', | 
|  | 'signature_creator_nss.cc', | 
|  | 'signature_creator_openssl.cc', | 
|  | 'signature_creator_win.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/secsign.cc', | 
|  | ], | 
|  | }, | 
|  | { | 
|  | 'target_name': 'crypto_unittests', | 
|  | 'type': 'executable', | 
|  | 'sources': [ | 
|  | # Infrastructure files. | 
|  | 'run_all_unittests.cc', | 
|  |  | 
|  | # Tests. | 
|  | 'ec_private_key_unittest.cc', | 
|  | 'ec_signature_creator_unittest.cc', | 
|  | 'encryptor_unittest.cc', | 
|  | 'ghash_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', | 
|  | ], | 
|  | 'dependencies': [ | 
|  | 'crypto', | 
|  | '../base/base.gyp:base', | 
|  | '../base/base.gyp:test_support_base', | 
|  | '../testing/gmock.gyp:gmock', | 
|  | '../testing/gtest.gyp:gtest', | 
|  | ], | 
|  | 'conditions': [ | 
|  | [ 'os_posix == 1 and OS != "mac" and OS != "android" and OS != "ios" and OS != "lb_shell"', { | 
|  | 'conditions': [ | 
|  | [ 'linux_use_tcmalloc==1', { | 
|  | 'dependencies': [ | 
|  | '../base/allocator/allocator.gyp:allocator', | 
|  | ], | 
|  | }, | 
|  | ], | 
|  | ], | 
|  | 'dependencies': [ | 
|  | '../build/linux/system.gyp:ssl', | 
|  | ], | 
|  | }, {  # os_posix != 1 or OS == "mac" or OS == "android" or OS == "ios" | 
|  | 'sources!': [ | 
|  | 'rsa_private_key_nss_unittest.cc', | 
|  | 'openpgp_symmetric_encryption_unittest.cc', | 
|  | ] | 
|  | }], | 
|  | [ 'OS == "mac" or OS == "ios" or OS == "win"', { | 
|  | 'dependencies': [ | 
|  | '../third_party/nss/nss.gyp:nss', | 
|  | ], | 
|  | }], | 
|  | ['OS == "ios"', { | 
|  | 'sources!': [ | 
|  | # These tests are excluded because they test classes that are not | 
|  | # implemented on iOS. | 
|  | 'rsa_private_key_unittest.cc', | 
|  | 'signature_creator_unittest.cc', | 
|  | 'signature_verifier_unittest.cc', | 
|  | ], | 
|  | }], | 
|  | [ 'OS == "mac"', { | 
|  | 'dependencies': [ | 
|  | '../third_party/nss/nss.gyp:nspr', | 
|  | ], | 
|  | }], | 
|  | [ 'use_openssl==1', { | 
|  | 'sources!': [ | 
|  | 'nss_util_unittest.cc', | 
|  | 'openpgp_symmetric_encryption_unittest.cc', | 
|  | 'rsa_private_key_nss_unittest.cc', | 
|  | ], | 
|  | }], | 
|  | ], | 
|  | }, | 
|  | ], | 
|  | 'conditions': [ | 
|  | [ 'OS == "win"', { | 
|  | 'targets': [ | 
|  | { | 
|  | 'target_name': 'crypto_nacl_win64', | 
|  | # We do not want nacl_helper to depend on NSS because this would | 
|  | # require including a 64-bit copy of NSS. Thus, use the native APIs | 
|  | # for the helper. | 
|  | 'type': '<(component)', | 
|  | 'dependencies': [ | 
|  | '../base/base.gyp:base_nacl_win64', | 
|  | '../base/third_party/dynamic_annotations/dynamic_annotations.gyp:dynamic_annotations_win64', | 
|  | ], | 
|  | 'sources': [ | 
|  | '<@(hmac_win64_related_sources)', | 
|  | ], | 
|  | 'defines': [ | 
|  | 'CRYPTO_IMPLEMENTATION', | 
|  | '<@(nacl_win64_defines)', | 
|  | ], | 
|  | 'msvs_disabled_warnings': [ | 
|  | 4018, | 
|  | ], | 
|  | 'configurations': { | 
|  | 'Common_Base': { | 
|  | 'msvs_target_platform': 'x64', | 
|  | }, | 
|  | }, | 
|  | }, | 
|  | ], | 
|  | }], | 
|  | ['cobalt==1', { | 
|  | 'targets': [ | 
|  | { | 
|  | 'target_name': 'crypto_unittests_deploy', | 
|  | 'type': 'none', | 
|  | 'dependencies': [ | 
|  | 'crypto_unittests', | 
|  | ], | 
|  | 'variables': { | 
|  | 'executable_name': 'crypto_unittests', | 
|  | }, | 
|  | 'includes': [ '../starboard/build/deploy.gypi' ], | 
|  | }, | 
|  | ], | 
|  | }], | 
|  | ], | 
|  | } |