// 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", ], }