181 lines
6.1 KiB
Makefile
181 lines
6.1 KiB
Makefile
# 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.
|
|
|
|
LOCAL_PATH := $(call my-dir)
|
|
|
|
###
|
|
# libkeymaster_messages contains just the code necessary to communicate with a
|
|
# AndroidKeymaster implementation, e.g. one running in TrustZone.
|
|
##
|
|
include $(CLEAR_VARS)
|
|
LOCAL_MODULE:= libkeymaster_messages
|
|
LOCAL_SRC_FILES:= \
|
|
android_keymaster_messages.cpp \
|
|
android_keymaster_utils.cpp \
|
|
authorization_set.cpp \
|
|
keymaster_tags.cpp \
|
|
logger.cpp \
|
|
serializable.cpp
|
|
LOCAL_C_INCLUDES := \
|
|
$(LOCAL_PATH)/include
|
|
LOCAL_CFLAGS = -Wall -Werror -Wunused -DKEYMASTER_NAME_TAGS
|
|
LOCAL_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.
|
|
LOCAL_CLANG_CFLAGS += -fno-sanitize-coverage=edge,indirect-calls,8bit-counters,trace-cmp
|
|
LOCAL_MODULE_TAGS := optional
|
|
LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH)/include
|
|
LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
|
|
include $(BUILD_SHARED_LIBRARY)
|
|
|
|
###
|
|
# 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.
|
|
###
|
|
include $(CLEAR_VARS)
|
|
LOCAL_MODULE:= libkeymaster1
|
|
LOCAL_SRC_FILES:= \
|
|
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
|
|
LOCAL_C_INCLUDES := \
|
|
$(LOCAL_PATH)/include
|
|
LOCAL_SHARED_LIBRARIES := libcrypto libkeymaster_messages
|
|
LOCAL_CFLAGS = -Wall -Werror -Wunused
|
|
LOCAL_CLANG := true
|
|
LOCAL_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.
|
|
LOCAL_CLANG_CFLAGS += -fno-sanitize-coverage=edge,indirect-calls,8bit-counters,trace-cmp
|
|
# Ignore benign warnings for now.
|
|
LOCAL_CLANG_CFLAGS += -Wno-error=unused-private-field
|
|
LOCAL_MODULE_TAGS := optional
|
|
LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH)/include
|
|
LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
|
|
include $(BUILD_SHARED_LIBRARY)
|
|
|
|
|
|
###
|
|
# 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.
|
|
###
|
|
include $(CLEAR_VARS)
|
|
LOCAL_MODULE := libsoftkeymasterdevice
|
|
LOCAL_SRC_FILES := \
|
|
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
|
|
LOCAL_C_INCLUDES := \
|
|
system/security/keystore \
|
|
$(LOCAL_PATH)/include
|
|
LOCAL_CFLAGS = -Wall -Werror -Wunused
|
|
LOCAL_CLANG := true
|
|
LOCAL_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.
|
|
LOCAL_CLANG_CFLAGS += -fno-sanitize-coverage=edge,indirect-calls,8bit-counters,trace-cmp
|
|
LOCAL_SHARED_LIBRARIES := libkeymaster_messages libkeymaster1 liblog libcrypto libcutils
|
|
LOCAL_MODULE_TAGS := optional
|
|
LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
|
|
LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH)/include
|
|
include $(BUILD_SHARED_LIBRARY)
|
|
|
|
###
|
|
# libkeymasterfiles is an empty library that exports all of the files in keymaster as includes.
|
|
###
|
|
include $(CLEAR_VARS)
|
|
LOCAL_MODULE := libkeymasterfiles
|
|
LOCAL_EXPORT_C_INCLUDE_DIRS := \
|
|
$(LOCAL_PATH) \
|
|
$(LOCAL_PATH)/include
|
|
LOCAL_MODULE_TAGS := optional
|
|
LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
|
|
include $(BUILD_STATIC_LIBRARY)
|
|
|
|
# Unit tests for libkeymaster
|
|
include $(CLEAR_VARS)
|
|
LOCAL_MODULE := keymaster_tests
|
|
LOCAL_SRC_FILES := \
|
|
android_keymaster_messages_test.cpp \
|
|
android_keymaster_test.cpp \
|
|
android_keymaster_test_utils.cpp \
|
|
attestation_record_test.cpp \
|
|
authorization_set_test.cpp \
|
|
hkdf_test.cpp \
|
|
hmac_test.cpp \
|
|
kdf1_test.cpp \
|
|
kdf2_test.cpp \
|
|
kdf_test.cpp \
|
|
key_blob_test.cpp \
|
|
keymaster_enforcement_test.cpp
|
|
|
|
LOCAL_C_INCLUDES := \
|
|
$(LOCAL_PATH)/include
|
|
LOCAL_CFLAGS = -Wall -Werror -Wunused -DKEYMASTER_NAME_TAGS
|
|
LOCAL_CLANG := true
|
|
LOCAL_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.
|
|
LOCAL_CLANG_CFLAGS += -fno-sanitize-coverage=edge,indirect-calls,8bit-counters,trace-cmp
|
|
LOCAL_MODULE_TAGS := tests
|
|
LOCAL_SHARED_LIBRARIES := \
|
|
libsoftkeymasterdevice \
|
|
libkeymaster_messages \
|
|
libkeymaster1 \
|
|
libcrypto \
|
|
libsoftkeymaster
|
|
LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
|
|
include $(BUILD_NATIVE_TEST)
|