1#
2# Copyright (C) 2009 The Android Open Source Project
3#
4# Licensed under the Apache License, Version 2.0 (the "License");
5# you may not use this file except in compliance with the License.
6# You may obtain a copy of the License at
7#
8#      http://www.apache.org/licenses/LICENSE-2.0
9#
10# Unless required by applicable law or agreed to in writing, software
11# distributed under the License is distributed on an "AS IS" BASIS,
12# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13# See the License for the specific language governing permissions and
14# limitations under the License.
15#
16
17LOCAL_PATH := $(call my-dir)
18
19# This has to be lazy-resolved because it depends on the LOCAL_MODULE_CLASS
20# which varies depending on what is being built.
21define keystore_proto_include
22$(call local-generated-sources-dir)/proto/$(LOCAL_PATH)
23endef
24
25ifneq ($(TARGET_BUILD_PDK),true)
26include $(CLEAR_VARS)
27ifeq ($(USE_32_BIT_KEYSTORE), true)
28LOCAL_MULTILIB := 32
29endif
30LOCAL_CFLAGS := -Wall -Wextra -Werror -Wunused
31LOCAL_SRC_FILES := \
32	auth_token_table.cpp \
33	blob.cpp \
34	entropy.cpp \
35	key_store_service.cpp \
36	keystore_attestation_id.cpp \
37	keyblob_utils.cpp \
38	keystore.cpp \
39	keystore_main.cpp \
40	keystore_utils.cpp \
41	legacy_keymaster_device_wrapper.cpp \
42	keymaster_enforcement.cpp \
43	operation.cpp \
44	permissions.cpp \
45	user_state.cpp \
46	grant_store.cpp \
47	../../../frameworks/base/core/java/android/security/keymaster/IKeyAttestationApplicationIdProvider.aidl
48LOCAL_SHARED_LIBRARIES := \
49	libbinder \
50	libcutils \
51	libcrypto \
52	libhardware \
53	libwifikeystorehal \
54	libkeystore_binder \
55	liblog \
56	libsoftkeymaster \
57	libutils \
58	libselinux \
59	libsoftkeymasterdevice \
60	libkeymaster_messages \
61	libkeymaster_portable \
62	libkeymaster_staging \
63	libhwbinder \
64	libhidlbase \
65	libhidltransport \
66	android.hardware.keymaster@3.0 \
67	android.system.wifi.keystore@1.0
68LOCAL_HEADER_LIBRARIES := libbase_headers
69LOCAL_MODULE := keystore
70LOCAL_MODULE_TAGS := optional
71LOCAL_INIT_RC := keystore.rc
72LOCAL_C_INCLUES := system/keymaster/
73LOCAL_CLANG := true
74LOCAL_SANITIZE := integer
75LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
76LOCAL_AIDL_INCLUDES := frameworks/base/core/java/
77include $(BUILD_EXECUTABLE)
78endif
79
80include $(CLEAR_VARS)
81ifeq ($(USE_32_BIT_KEYSTORE), true)
82LOCAL_MULTILIB := 32
83endif
84LOCAL_CFLAGS := -Wall -Wextra -Werror
85LOCAL_SRC_FILES := keystore_cli.cpp
86LOCAL_SHARED_LIBRARIES := libcutils libcrypto libkeystore_binder libutils liblog libbinder \
87	libhwbinder \
88	libhidlbase \
89	android.hardware.keymaster@3.0
90LOCAL_MODULE := keystore_cli
91LOCAL_MODULE_TAGS := debug
92LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
93include $(BUILD_EXECUTABLE)
94
95include $(CLEAR_VARS)
96ifeq ($(USE_32_BIT_KEYSTORE), true)
97LOCAL_MULTILIB := 32
98endif
99LOCAL_CFLAGS := -Wall -Wextra -Werror -Wno-unused-parameter -DKEYMASTER_NAME_TAGS
100LOCAL_SRC_FILES := keystore_cli_v2.cpp
101LOCAL_SHARED_LIBRARIES := \
102	libchrome \
103	libkeystore_binder \
104	libhwbinder \
105	libhidlbase \
106	android.hardware.keymaster@3.0
107
108LOCAL_MODULE := keystore_cli_v2
109LOCAL_MODULE_TAGS := debug
110LOCAL_C_INCLUDES := $(LOCAL_PATH)/include external/gtest/include
111LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
112include $(BUILD_EXECUTABLE)
113
114# Library for keystore clients
115include $(CLEAR_VARS)
116ifeq ($(USE_32_BIT_KEYSTORE), true)
117LOCAL_MULTILIB := 32
118endif
119LOCAL_CFLAGS := -Wall -Wextra -Werror
120LOCAL_SRC_FILES := \
121	IKeystoreService.cpp \
122	KeyAttestationApplicationId.cpp \
123	KeyAttestationPackageInfo.cpp \
124	Signature.cpp \
125	keyblob_utils.cpp \
126	keystore_client.proto \
127	keystore_client_impl.cpp \
128	keystore_get.cpp \
129	authorization_set.cpp \
130	keystore_tags_utils.cpp \
131	keystore_aidl_hidl_marshalling_utils.cpp
132LOCAL_SHARED_LIBRARIES := \
133	libbinder \
134	liblog \
135	libprotobuf-cpp-lite \
136	libutils \
137	libhwbinder \
138	libhidlbase \
139	android.hardware.keymaster@3.0
140LOCAL_MODULE_CLASS := SHARED_LIBRARIES
141LOCAL_MODULE := libkeystore_binder
142LOCAL_MODULE_TAGS := optional
143LOCAL_C_INCLUDES := $(LOCAL_PATH)/include $(call keystore_proto_include)
144LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH)/include
145LOCAL_EXPORT_SHARED_LIBRARY_HEADERS := libbinder \
146	libhwbinder \
147	libhidlbase \
148	android.hardware.keymaster@3.0
149LOCAL_CLANG := true
150LOCAL_SANITIZE := integer
151LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
152include $(BUILD_SHARED_LIBRARY)
153
154# Library for keystore clients using the WiFi HIDL interface
155include $(CLEAR_VARS)
156LOCAL_CFLAGS := -Wall -Wextra -Werror
157LOCAL_SRC_FILES := \
158	keystore_get_wifi_hidl.cpp
159LOCAL_SHARED_LIBRARIES := \
160	android.system.wifi.keystore@1.0 \
161	libbase \
162	libhidlbase \
163	libhidltransport \
164	liblog \
165	libutils
166LOCAL_MODULE_CLASS := SHARED_LIBRARIES
167LOCAL_MODULE := libkeystore-wifi-hidl
168LOCAL_MODULE_TAGS := optional
169LOCAL_C_INCLUDES := $(LOCAL_PATH)/include
170LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH)/include
171LOCAL_CLANG := true
172LOCAL_SANITIZE := integer
173LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
174LOCAL_VENDOR_MODULE := true
175include $(BUILD_SHARED_LIBRARY)
176
177# Library for unit tests
178include $(CLEAR_VARS)
179ifeq ($(USE_32_BIT_KEYSTORE), true)
180LOCAL_MULTILIB := 32
181endif
182LOCAL_CFLAGS := -Wall -Wextra -Werror
183LOCAL_SRC_FILES := auth_token_table.cpp
184LOCAL_MODULE := libkeystore_test
185LOCAL_C_INCLUDES := $(LOCAL_PATH)/include
186LOCAL_STATIC_LIBRARIES := libgtest_main
187LOCAL_SHARED_LIBRARIES := libkeymaster_messages \
188	libutils \
189	libhwbinder \
190	libhidlbase \
191	android.hardware.keymaster@3.0
192
193LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH)/include
194LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
195include $(BUILD_STATIC_LIBRARY)
196