blob: 4395a85779dae6de5124ca0af565acded03062c0
1 | # Copyright (C) 2012 The Android Open Source Project |
2 | # |
3 | # Licensed under the Apache License, Version 2.0 (the "License"); |
4 | # you may not use this file except in compliance with the License. |
5 | # You may obtain a copy of the License at |
6 | # |
7 | # http://www.apache.org/licenses/LICENSE-2.0 |
8 | # |
9 | # Unless required by applicable law or agreed to in writing, software |
10 | # distributed under the License is distributed on an "AS IS" BASIS, |
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
12 | # See the License for the specific language governing permissions and |
13 | # limitations under the License. |
14 | |
15 | LOCAL_PATH := $(call my-dir) |
16 | |
17 | KEYMASTER_TA_BINARY := 8efb1e1c-37e5-4326-a5d68c33726c7d57 |
18 | |
19 | include $(CLEAR_VARS) |
20 | LOCAL_MODULE := keystore.amlogic |
21 | LOCAL_MODULE_RELATIVE_PATH := hw |
22 | LOCAL_SRC_FILES := module.cpp \ |
23 | aml_keymaster_ipc.cpp \ |
24 | aml_keymaster_device.cpp \ |
25 | |
26 | LOCAL_C_INCLUDES := \ |
27 | system/security/keystore \ |
28 | $(LOCAL_PATH)/include \ |
29 | system/keymaster/ \ |
30 | system/keymaster/include \ |
31 | external/boringssl/include \ |
32 | $(BOARD_AML_VENDOR_PATH)/tdk/ca_export_arm/include \ |
33 | |
34 | LOCAL_CFLAGS = -fvisibility=hidden -Wall -Werror |
35 | LOCAL_CFLAGS += -DANDROID_BUILD |
36 | ifeq ($(USE_SOFT_KEYSTORE), false) |
37 | LOCAL_CFLAGS += -DUSE_HW_KEYMASTER |
38 | endif |
39 | LOCAL_SHARED_LIBRARIES := libcrypto \ |
40 | liblog \ |
41 | libkeystore_binder \ |
42 | libkeymaster_messages \ |
43 | libteec |
44 | |
45 | LOCAL_MODULE_TAGS := optional |
46 | |
47 | ifeq ($(shell test $(PLATFORM_SDK_VERSION) -ge 26 && echo OK),OK) |
48 | LOCAL_PROPRIETARY_MODULE := true |
49 | endif |
50 | |
51 | ifeq ($(shell test $(PLATFORM_SDK_VERSION) -le 26 && echo OK),OK) |
52 | LOCAL_SHARED_LIBRARIES += libkeymaster1 |
53 | endif |
54 | |
55 | LOCAL_CFLAGS += -DANDROID_PLATFORM_SDK_VERSION=$(PLATFORM_SDK_VERSION) |
56 | |
57 | LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk |
58 | LOCAL_REQUIRED_MODULES := $(KEYMASTER_TA_BINARY) |
59 | include $(BUILD_SHARED_LIBRARY) |
60 | |
61 | ##################################################### |
62 | # TA Library |
63 | ##################################################### |
64 | include $(CLEAR_VARS) |
65 | LOCAL_MODULE_CLASS := ETC |
66 | LOCAL_MODULE_TAGS := optional |
67 | LOCAL_MODULE := $(KEYMASTER_TA_BINARY) |
68 | LOCAL_MODULE_SUFFIX := .ta |
69 | LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/lib/teetz |
70 | ifeq ($(TARGET_ENABLE_TA_SIGN), true) |
71 | $(info $(shell mkdir $(ANDROID_BUILD_TOP)/$(LOCAL_PATH)/signed)) |
72 | $(info $(shell $(ANDROID_BUILD_TOP)/$(BOARD_AML_VENDOR_PATH)/tdk/ta_export/scripts/sign_ta_auto.py \ |
73 | --in=$(ANDROID_BUILD_TOP)/$(LOCAL_PATH)/$(LOCAL_MODULE)$(LOCAL_MODULE_SUFFIX) \ |
74 | --out=$(ANDROID_BUILD_TOP)/$(LOCAL_PATH)/signed/$(LOCAL_MODULE)$(LOCAL_MODULE_SUFFIX))) |
75 | LOCAL_SRC_FILES := signed/$(LOCAL_MODULE)$(LOCAL_MODULE_SUFFIX) |
76 | else |
77 | LOCAL_SRC_FILES := $(LOCAL_MODULE)$(LOCAL_MODULE_SUFFIX) |
78 | endif |
79 | include $(BUILD_PREBUILT) |
80 | |
81 | |
82 | # Unit tests for libkeymaster |
83 | include $(CLEAR_VARS) |
84 | LOCAL_MODULE := amlkeymaster_tests |
85 | LOCAL_SRC_FILES := \ |
86 | unit_test/android_keymaster_test.cpp \ |
87 | unit_test/android_keymaster_test_utils.cpp \ |
88 | unit_test/attestation_record.cpp |
89 | # unit_test/attestation_record_test.cpp \ |
90 | unit_test/authorization_set_test.cpp \ |
91 | # unit_test/android_keymaster_messages_test.cpp \ |
92 | unit_test/hkdf_test.cpp \ |
93 | unit_test/hmac_test.cpp \ |
94 | unit_test/kdf1_test.cpp \ |
95 | unit_test/kdf2_test.cpp \ |
96 | unit_test/kdf_test.cpp \ |
97 | unit_test/key_blob_test.cpp \ |
98 | unit_test/keymaster_enforcement_test.cpp |
99 | |
100 | LOCAL_C_INCLUDES := \ |
101 | external/boringssl/include \ |
102 | system/keymaster/include \ |
103 | system/keymaster \ |
104 | system/security/softkeymaster/include |
105 | |
106 | LOCAL_CFLAGS = -Wall -Werror -Wunused -DKEYMASTER_NAME_TAGS |
107 | LOCAL_CLANG_CFLAGS += -Wno-error=unused-const-variable -Wno-error=unused-private-field |
108 | # TODO(krasin): reenable coverage flags, when the new Clang toolchain is released. |
109 | # Currently, if enabled, these flags will cause an internal error in Clang. |
110 | LOCAL_CLANG_CFLAGS += -fno-sanitize-coverage=edge,indirect-calls,8bit-counters,trace-cmp |
111 | LOCAL_MODULE_TAGS := tests |
112 | LOCAL_SHARED_LIBRARIES := \ |
113 | libsoftkeymasterdevice \ |
114 | libkeymaster_messages \ |
115 | libcrypto \ |
116 | libsoftkeymaster \ |
117 | libkeymaster_portable \ |
118 | libhardware |
119 | |
120 | LOCAL_CFLAGS += -DANDROID_PLATFORM_SDK_VERSION=$(PLATFORM_SDK_VERSION) |
121 | |
122 | ifeq ($(shell test $(PLATFORM_SDK_VERSION) -le 26 && echo OK),OK) |
123 | LOCAL_SHARED_LIBRARIES += libkeymaster1 |
124 | endif |
125 | |
126 | LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk |
127 | include $(BUILD_NATIVE_TEST) |
128 | |
129 |