blob: 33573bc5a1bc383e38eb9efb3e92f1d546264406 [file] [log] [blame]
# Copyright 2019 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import("//common-mk/mojom_bindings_generator.gni")
import("//common-mk/pkg_config.gni")
keymaster_src = "../../../aosp/system/keymaster"
group("all") {
deps = [
":arc-keymasterd",
]
if (use.test) {
deps += [ ":arc-keymasterd_testrunner" ]
}
}
# Binary
executable("arc-keymasterd") {
sources = [
"conversion.cc",
"daemon.cc",
"keymaster_server.cc",
"main.cc",
]
deps = [
":keymaster_mojo_bindings",
":libarckeymaster_context",
":libkeymaster",
]
pkg_deps = [
"libbrillo-${libbase_ver}",
"libchrome-${libbase_ver}",
"libmojo-${libbase_ver}",
]
}
# Mojo bindings
generate_mojom_bindings("keymaster_mojo_bindings") {
sources = [
"mojo/keymaster.mojom",
]
}
# BoringSSL
config("boringssl_config") {
libs = [
"boringcrypto",
"pthread",
]
}
# Keymaster context
shared_library("libarckeymaster_context") {
deps = [
":libkeymaster",
]
pkg_deps = [ "libchrome-${libbase_ver}" ]
configs += [
# Needed since the keymaster context doesn't follow CrOS's guidelines.
"//common-mk:visibility_default",
":boringssl_config",
]
sources = [
"${keymaster_src}/android_keymaster/logger.cpp",
"${keymaster_src}/contexts/pure_soft_keymaster_context.cpp",
"${keymaster_src}/contexts/soft_attestation_cert.cpp",
"${keymaster_src}/km_openssl/attestation_utils.cpp",
"${keymaster_src}/km_openssl/soft_keymaster_enforcement.cpp",
"keymaster_logger.cc",
]
}
# Keymaster
config("libkeymaster_config") {
include_dirs = [ "${keymaster_src}/include" ]
cflags = [
"-Wno-defaulted-function-deleted",
"-Wno-format-nonliteral",
"-Wno-implicit-fallthrough",
]
}
shared_library("libkeymaster") {
public_configs = [ ":libkeymaster_config" ]
configs += [
"//common-mk:visibility_default",
":boringssl_config",
]
sources = [
"${keymaster_src}/android_keymaster/android_keymaster.cpp",
"${keymaster_src}/android_keymaster/android_keymaster_messages.cpp",
"${keymaster_src}/android_keymaster/android_keymaster_utils.cpp",
"${keymaster_src}/android_keymaster/authorization_set.cpp",
"${keymaster_src}/android_keymaster/keymaster_enforcement.cpp",
"${keymaster_src}/android_keymaster/keymaster_stl.cpp",
"${keymaster_src}/android_keymaster/keymaster_tags.cpp",
"${keymaster_src}/android_keymaster/operation.cpp",
"${keymaster_src}/android_keymaster/operation_table.cpp",
"${keymaster_src}/android_keymaster/serializable.cpp",
"${keymaster_src}/key_blob_utils/auth_encrypted_key_blob.cpp",
"${keymaster_src}/key_blob_utils/integrity_assured_key_blob.cpp",
"${keymaster_src}/key_blob_utils/ocb.c",
"${keymaster_src}/key_blob_utils/ocb_utils.cpp",
"${keymaster_src}/key_blob_utils/software_keyblobs.cpp",
"${keymaster_src}/km_openssl/aes_key.cpp",
"${keymaster_src}/km_openssl/aes_operation.cpp",
"${keymaster_src}/km_openssl/asymmetric_key.cpp",
"${keymaster_src}/km_openssl/asymmetric_key_factory.cpp",
"${keymaster_src}/km_openssl/attestation_record.cpp",
"${keymaster_src}/km_openssl/block_cipher_operation.cpp",
"${keymaster_src}/km_openssl/ckdf.cpp",
"${keymaster_src}/km_openssl/ec_key.cpp",
"${keymaster_src}/km_openssl/ec_key_factory.cpp",
"${keymaster_src}/km_openssl/ecdsa_operation.cpp",
"${keymaster_src}/km_openssl/ecies_kem.cpp",
"${keymaster_src}/km_openssl/hkdf.cpp",
"${keymaster_src}/km_openssl/hmac.cpp",
"${keymaster_src}/km_openssl/hmac_key.cpp",
"${keymaster_src}/km_openssl/hmac_operation.cpp",
"${keymaster_src}/km_openssl/iso18033kdf.cpp",
"${keymaster_src}/km_openssl/kdf.cpp",
"${keymaster_src}/km_openssl/nist_curve_key_exchange.cpp",
"${keymaster_src}/km_openssl/openssl_err.cpp",
"${keymaster_src}/km_openssl/openssl_utils.cpp",
"${keymaster_src}/km_openssl/rsa_key.cpp",
"${keymaster_src}/km_openssl/rsa_key_factory.cpp",
"${keymaster_src}/km_openssl/rsa_operation.cpp",
"${keymaster_src}/km_openssl/software_random_source.cpp",
"${keymaster_src}/km_openssl/symmetric_key.cpp",
"${keymaster_src}/km_openssl/triple_des_key.cpp",
"${keymaster_src}/km_openssl/triple_des_operation.cpp",
"${keymaster_src}/km_openssl/wrapped_key.cpp",
]
}
if (use.test) {
pkg_config("arc-keymasterd_testrunner_config") {
pkg_deps = [
"libchrome-${libbase_ver}",
"libchrome-test-${libbase_ver}",
]
}
executable("arc-keymasterd_testrunner") {
configs += [
"//common-mk:test",
":arc-keymasterd_testrunner_config",
]
deps = [
":keymaster_mojo_bindings",
":libarckeymaster_context",
":libkeymaster",
"//common-mk/testrunner:testrunner",
]
sources = [
"conversion.cc",
"conversion_test.cc",
"keymaster_logger_test.cc",
]
}
}