// Copyright (C) 2014 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.

// libkeymaster_messages contains just the code necessary to communicate with a
// AndroidKeymaster implementation, e.g. one running in TrustZone.
cc_library_shared {
    name: "libkeymaster_messages",
    srcs: [
        "android_keymaster_messages.cpp",
        "android_keymaster_utils.cpp",
        "authorization_set.cpp",
        "keymaster_tags.cpp",
        "logger.cpp",
        "serializable.cpp",
    ],
    cflags: [
        "-Wall",
        "-Werror",
        "-Wunused",
        "-DKEYMASTER_NAME_TAGS",
    ],
    clang: true,
    // TODO(krasin): reenable coverage flags, when the new Clang toolchain is released.
    // Currently, if enabled, these flags will cause an internal error in Clang.
    clang_cflags: ["-fno-sanitize-coverage=edge,indirect-calls,8bit-counters,trace-cmp"],

    export_include_dirs: ["include"],

}

// libkeymaster1 contains almost everything needed for a keymaster1
// implementation, lacking only a subclass of the (abstract) KeymasterContext
// class to provide environment-specific services and a wrapper to translate from
// the function-based keymaster HAL API to the message-based AndroidKeymaster API.
cc_library_shared {
    name: "libkeymaster1",
    srcs: [
        "aes_key.cpp",
        "aes_operation.cpp",
        "android_keymaster.cpp",
        "android_keymaster_messages.cpp",
        "android_keymaster_utils.cpp",
        "asymmetric_key.cpp",
        "asymmetric_key_factory.cpp",
        "attestation_record.cpp",
        "auth_encrypted_key_blob.cpp",
        "ec_key.cpp",
        "ec_key_factory.cpp",
        "ecdsa_operation.cpp",
        "ecies_kem.cpp",
        "hkdf.cpp",
        "hmac.cpp",
        "hmac_key.cpp",
        "hmac_operation.cpp",
        "integrity_assured_key_blob.cpp",
        "iso18033kdf.cpp",
        "kdf.cpp",
        "key.cpp",
        "keymaster_enforcement.cpp",
        "nist_curve_key_exchange.cpp",
        "ocb.c",
        "ocb_utils.cpp",
        "openssl_err.cpp",
        "openssl_utils.cpp",
        "operation.cpp",
        "operation_table.cpp",
        "rsa_key.cpp",
        "rsa_key_factory.cpp",
        "rsa_operation.cpp",
        "symmetric_key.cpp",
    ],

    shared_libs: [
        "libcrypto",
        "libkeymaster_messages",
    ],
    cflags: [
        "-Wall",
        "-Werror",
        "-Wunused",
    ],
    clang: true,
    clang_cflags: [
        "-Wno-error=unused-const-variable",
        "-Wno-error=unused-private-field",
        // TODO(krasin): reenable coverage flags, when the new Clang toolchain is released.
        // Currently, if enabled, these flags will cause an internal error in Clang.
        "-fno-sanitize-coverage=edge,indirect-calls,8bit-counters,trace-cmp"
    ],

    export_include_dirs: ["include"],

}

// libsoftkeymaster provides a software-based keymaster HAL implementation.
// This is used by keystore as a fallback for when the hardware keymaster does
// not support the request.
cc_library_shared {
    name: "libsoftkeymasterdevice",
    srcs: [
        "ec_keymaster0_key.cpp",
        "ec_keymaster1_key.cpp",
        "ecdsa_keymaster1_operation.cpp",
        "keymaster0_engine.cpp",
        "keymaster1_engine.cpp",
        "keymaster_configuration.cpp",
        "rsa_keymaster0_key.cpp",
        "rsa_keymaster1_key.cpp",
        "rsa_keymaster1_operation.cpp",
        "soft_keymaster_context.cpp",
        "soft_keymaster_device.cpp",
        "soft_keymaster_logger.cpp",
    ],
    include_dirs: ["system/security/keystore"],
    cflags: [
        "-Wall",
        "-Werror",
        "-Wunused",
    ],
    clang: true,
    clang_cflags: [
        "-Wno-error=unused-const-variable",
        "-Wno-error=unused-private-field",
        // TODO(krasin): reenable coverage flags, when the new Clang toolchain is released.
        // Currently, if enabled, these flags will cause an internal error in Clang.
        "-fno-sanitize-coverage=edge,indirect-calls,8bit-counters,trace-cmp"
    ],

    shared_libs: [
        "libkeymaster_messages",
        "libkeymaster1",
        "liblog",
        "libcrypto",
        "libcutils",
    ],

    export_include_dirs: ["include"],
}

// libkeymasterfiles is an empty library that exports all of the files in keymaster as includes.
cc_library_static {
    name: "libkeymasterfiles",
    export_include_dirs: [
        ".",
        "include",
    ],
}
