//
// Copyright (C) 2020 The Android Open Source Project
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//      http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

package {
    default_applicable_licenses: ["Android-Apache-2.0"],
}

cc_defaults {
    name: "secure_env_defaults",
    shared_libs: [
        "libext2_blkid",
        "libbase",
        "libcppbor_external",
        "libcppcose_rkp",
        "libcuttlefish_fs",
        "libcuttlefish_kernel_log_monitor_utils",
        "libcuttlefish_security",
        "libcuttlefish_utils",
        "libfruit",
        "libgatekeeper",
        "libjsoncpp",
        "libkeymaster_portable",
        "libkeymaster_messages",
        "libsoft_attestation_cert",
        "liblog",
        "libcrypto",
        "libcutils",
        "libpuresoftkeymasterdevice_host",
        "ms-tpm-20-ref-lib",
        "tpm2-tss2-esys",
        "tpm2-tss2-mu",
        "tpm2-tss2-rc",
        "tpm2-tss2-tcti",
    ],
    static_libs: [
        "libcuttlefish_host_config",
        "libgflags",
        "libscrypt_static",
    ],
    cflags: [
        "-fno-rtti", // Required for libkeymaster_portable
    ],
}

cc_library_host_static {
    name: "libsecure_env",
    srcs: [
        "composite_serialization.cpp",
        "confui_sign_server.cpp",
        "device_tpm.cpp",
        "encrypted_serializable.cpp",
        "fragile_tpm_storage.cpp",
        "gatekeeper_responder.cpp",
        "hmac_serializable.cpp",
        "in_process_tpm.cpp",
        "insecure_fallback_storage.cpp",
        "json_serializable.cpp",
        "keymaster_responder.cpp",
        "primary_key_builder.cpp",
        "secure_env.cpp",
        "tpm_attestation_record.cpp",
        "tpm_auth.cpp",
        "tpm_commands.cpp",
        "tpm_encrypt_decrypt.cpp",
        "tpm_gatekeeper.cpp",
        "tpm_hmac.cpp",
        "tpm_key_blob_maker.cpp",
        "tpm_keymaster_context.cpp",
        "tpm_keymaster_enforcement.cpp",
        "tpm_random_source.cpp",
        "tpm_remote_provisioning_context.cpp",
        "tpm_resource_manager.cpp",
        "tpm_serialize.cpp",
    ],
    defaults: ["cuttlefish_buildhost_only", "secure_env_defaults"],
}

cc_binary_host {
    name: "secure_env",
    srcs: [
        "secure_env.cpp",
    ],
    static_libs: [
        "libsecure_env",
    ],
    defaults: ["cuttlefish_buildhost_only", "secure_env_defaults"],
}

cc_test_host {
    name: "libsecure_env_test",
    srcs: [
        "test_tpm.cpp",
        "encrypted_serializable_test.cpp",
    ],
    static_libs: [
        "libsecure_env",
    ],
    defaults: ["cuttlefish_buildhost_only", "secure_env_defaults"],
    test_options: {
        unit_test: true,
    },
}
