# -*- mode: python -*- Import([ 'env', 'get_option', 'ssl_provider', ]) env = env.Clone() env.Library( 'sha1_block', source=['sha1_block.cpp'], LIBDEPS=[ '$BUILD_DIR/mongo/base', '$BUILD_DIR/mongo/util/secure_compare_memory', ], ) env.Library( 'sha256_block', source=['sha256_block.cpp'], LIBDEPS=[ '$BUILD_DIR/mongo/base', '$BUILD_DIR/mongo/util/secure_compare_memory', ], ) cryptoEnv = env.Clone() if "tom" in env["MONGO_CRYPTO"]: cryptoEnv.InjectThirdParty(libraries=['tomcrypt']) cryptoEnv.Append(CPPDEFINES=[ 'LTC_NO_PROTOTYPES', ]) cryptoEnv.Library( target='sha_block_${MONGO_CRYPTO}', source=['sha_block_${MONGO_CRYPTO}.cpp'], LIBDEPS=[ '$BUILD_DIR/mongo/base', 'sha1_block', 'sha256_block', ], LIBDEPS_PRIVATE=[ '$BUILD_DIR/third_party/shim_tomcrypt' if "tom" in env["MONGO_CRYPTO"] else [], ], ) cryptoEnv.Library( target='symmetric_crypto', source=[ 'symmetric_crypto.cpp', 'symmetric_crypto_${MONGO_CRYPTO}.cpp', 'symmetric_key.cpp', ], LIBDEPS=[ '$BUILD_DIR/mongo/base/secure_allocator', '$BUILD_DIR/mongo/util/secure_zero_memory', ], LIBDEPS_PRIVATE=[ '$BUILD_DIR/third_party/shim_tomcrypt' if "tom" in env["MONGO_CRYPTO"] else [], ], ) env.Library( target="aead_encryption", source=[ "aead_encryption.cpp", ], LIBDEPS=[ 'fle_fields', 'sha_block_${MONGO_CRYPTO}', 'symmetric_crypto', ], ) env.Library( target='encrypted_field_config', source=[ 'encryption_fields.idl', 'encryption_fields_validation.cpp', ], LIBDEPS=[ '$BUILD_DIR/mongo/db/pipeline/value_idl', ], LIBDEPS_PRIVATE=[ '$BUILD_DIR/mongo/db/common', '$BUILD_DIR/mongo/db/server_base', ], ) fleCryptoEnv = env.Clone() fleCryptoEnv.InjectThirdParty(libraries=['libmongocrypt']) fleCryptoEnv.InjectThirdParty(libraries=['libbson']) fleCryptoEnv.Library( target="fle_crypto", source=[ "encryption_fields_util.cpp", "fle_crypto.cpp", "fle_options.idl", "fle_tags.cpp", "fle_stats.cpp", "fle_stats.idl", ], LIBDEPS=[ '$BUILD_DIR/mongo/base/secure_allocator', '$BUILD_DIR/mongo/db/common', ], LIBDEPS_PRIVATE=[ '$BUILD_DIR/mongo/bson/util/bson_extract', '$BUILD_DIR/mongo/db/commands/server_status_core', '$BUILD_DIR/mongo/db/exec/document_value/document_value', '$BUILD_DIR/mongo/db/query/query_knobs', '$BUILD_DIR/mongo/db/server_base', '$BUILD_DIR/mongo/idl/cluster_server_parameter', '$BUILD_DIR/mongo/shell/kms_idl', '$BUILD_DIR/mongo/util/testing_options', '$BUILD_DIR/third_party/shim_libmongocrypt', 'aead_encryption', 'encrypted_field_config', 'fle_fields', 'sha_block_${MONGO_CRYPTO}', ], ) env.Library( target="fle_fields", source=[ "fle_field_schema.idl", "fle_fields_util.cpp", ], LIBDEPS=[ '$BUILD_DIR/mongo/idl/idl_parser', "encrypted_field_config", ], ) env.CppUnitTest( target='crypto_test', source=[ 'aead_encryption_test.cpp', 'encryption_fields_util_test.cpp', 'encryption_fields_validation_test.cpp', 'jwt_test.cpp' if ssl_provider == 'openssl' else [], 'fle_crypto_test.cpp', 'fle_crypto_test_vectors.cpp', 'fle_stats_test.cpp', 'mechanism_scram_test.cpp', 'sha1_block_test.cpp', 'sha256_block_test.cpp', 'sha512_block_test.cpp', 'symmetric_crypto_test.cpp', ], LIBDEPS=[ '$BUILD_DIR/mongo/base', '$BUILD_DIR/mongo/base/secure_allocator', '$BUILD_DIR/mongo/db/concurrency/lock_manager', '$BUILD_DIR/mongo/shell/kms_idl', '$BUILD_DIR/mongo/util/net/http_client_impl', '$BUILD_DIR/mongo/util/net/openssl_init' if ssl_provider == 'openssl' else [], '$BUILD_DIR/mongo/util/testing_options', 'aead_encryption', 'encrypted_field_config', 'fle_crypto', 'jwt', 'sha_block_${MONGO_CRYPTO}', ], ) env.Library( target='jwt', source=[ 'jwks_fetcher_impl.cpp', 'jwk_manager.cpp', 'jwt_types.idl', 'jws_validated_token.cpp', 'jws_validator_{}.cpp'.format(ssl_provider), ], LIBDEPS=[ '$BUILD_DIR/mongo/base', ], LIBDEPS_PRIVATE=[ '$BUILD_DIR/mongo/client/sasl_client', '$BUILD_DIR/mongo/db/auth/oidc_protocol', '$BUILD_DIR/mongo/db/commands/test_commands_enabled', '$BUILD_DIR/mongo/idl/idl_parser', '$BUILD_DIR/mongo/util/net/http_client_impl', ], ) if ssl_provider == 'openssl': env.CppUnitTest( target='jws_validator_test', source=[ 'jws_validator_test.cpp', 'jws_validated_token_test.cpp', ], LIBDEPS=[ '$BUILD_DIR/mongo/base', '$BUILD_DIR/mongo/util/net/openssl_init', 'jwt', ], ) env.Benchmark( target='crypto_bm', source=[ 'crypto_bm.cpp', ], LIBDEPS=[ 'fle_crypto', 'sha_block_${MONGO_CRYPTO}', ], )