summaryrefslogtreecommitdiff
path: root/keymaster
diff options
context:
space:
mode:
authorAaron Ding <aaronding@google.com>2021-05-19 13:18:49 +0800
committerAaron Ding <aaronding@google.com>2021-05-19 13:35:26 +0800
commitbb4beafe47aa8c97eaa5f4fb25a91ca0a798ddf4 (patch)
tree5adf562502cae6ba76ba78597f4479d11030be42 /keymaster
parent4414b92594727edb13a402d6ea1d860c07b3b8b0 (diff)
downloadgs201-bb4beafe47aa8c97eaa5f4fb25a91ca0a798ddf4.tar.gz
Create gs201 device folder baseline
clone from gs101 sha 9d1c97c2 Bug: 183183095 Change-Id: Ie7112bdf0aceb33c9e1956aa52e961b670582733
Diffstat (limited to 'keymaster')
-rw-r--r--keymaster/Android.bp40
-rw-r--r--keymaster/wait_for_strongbox.cpp59
-rw-r--r--keymaster/wait_for_strongbox.rc9
3 files changed, 108 insertions, 0 deletions
diff --git a/keymaster/Android.bp b/keymaster/Android.bp
new file mode 100644
index 0000000..99aa4b4
--- /dev/null
+++ b/keymaster/Android.bp
@@ -0,0 +1,40 @@
+//
+// Copyright (C) 2018 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.
+
+package {
+ // See: http://go/android-license-faq
+ // A large-scale-change added 'default_applicable_licenses' to import
+ // all of the 'license_kinds' from "//device/google/gs101:device_google_gs101_license"
+ // to get the below license kinds:
+ // SPDX-license-identifier-Apache-2.0
+ default_applicable_licenses: [
+ "//device/google/gs101:device_google_gs101_license",
+ ],
+}
+
+cc_binary {
+ name: "wait_for_strongbox",
+ init_rc: ["wait_for_strongbox.rc"],
+ relative_install_path: "hw",
+ srcs: [ "wait_for_strongbox.cpp" ],
+ cflags: [ "-Werror", "-Wall" ],
+ shared_libs: [
+ "android.hardware.keymaster@4.0",
+ "libbase",
+ "libkeymaster4_1support",
+ "libutils",
+ ],
+ proprietary: true,
+}
diff --git a/keymaster/wait_for_strongbox.cpp b/keymaster/wait_for_strongbox.cpp
new file mode 100644
index 0000000..c0f4094
--- /dev/null
+++ b/keymaster/wait_for_strongbox.cpp
@@ -0,0 +1,59 @@
+/*
+ ** Copyright 2018, 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.
+ */
+
+#include <unistd.h>
+
+#define LOG_TAG "wait_for_strongbox"
+#include <android-base/logging.h>
+
+#include <keymasterV4_1/Keymaster.h>
+
+using android::hardware::keymaster::V4_1::SecurityLevel;
+using android::hardware::keymaster::V4_1::support::Keymaster;
+
+useconds_t kWaitTimeMicroseconds = 1 * 1000; // 1 milliseconds
+
+int main() {
+ for (unsigned cycleCount = 0; /* Forever */; ++cycleCount) {
+ auto keymasters = Keymaster::enumerateAvailableDevices();
+
+ bool foundStrongBox = false;
+ bool foundTee = false;
+ for (auto &dev : keymasters) {
+ SecurityLevel securityLevel = dev->halVersion().securityLevel;
+ uint8_t majorVersion = dev->halVersion().majorVersion;
+ if (securityLevel == SecurityLevel::STRONGBOX && majorVersion == 4) {
+ foundStrongBox = true;
+ }
+ if (securityLevel == SecurityLevel::TRUSTED_ENVIRONMENT && majorVersion == 4) {
+ foundTee = true;
+ }
+ }
+
+ if (foundTee && foundStrongBox) {
+ return 0;
+ }
+ if (cycleCount % 10 == 1) {
+ if (!foundStrongBox) {
+ LOG(WARNING) << "Still waiting for StrongBox Keymaster";
+ }
+ if (!foundTee) {
+ LOG(WARNING) << "Still waiting for TEE Keymaster";
+ }
+ }
+ usleep(kWaitTimeMicroseconds);
+ }
+}
diff --git a/keymaster/wait_for_strongbox.rc b/keymaster/wait_for_strongbox.rc
new file mode 100644
index 0000000..c02fc46
--- /dev/null
+++ b/keymaster/wait_for_strongbox.rc
@@ -0,0 +1,9 @@
+# Wait for both Trusty and Strongbox HALs to be up
+service wait_for_strongbox /vendor/bin/hw/wait_for_strongbox
+ user root
+ group root system
+ priority -20
+ ioprio rt 0
+
+on late-fs
+ exec_start wait_for_strongbox