diff --git a/Android.bp b/Android.bp index b18d7c4..a8934fc 100644 --- a/Android.bp +++ b/Android.bp @@ -163,6 +163,7 @@ cc_binary { required: [ "mke2fs", "vold_prepare_subdirs", + "wait_for_keymaster", ], } @@ -183,6 +184,28 @@ cc_binary { init_rc: ["vdc.rc"], } +cc_binary { + name: "wait_for_keymaster", + defaults: ["vold_default_flags"], + + srcs: [ + "wait_for_keymaster.cpp", + "Keymaster.cpp", + ], + shared_libs: [ + "libbase", + "libbinder", + + "android.hardware.keymaster@3.0", + "android.hardware.keymaster@4.0", + "libhardware", + "libhardware_legacy", + "libhidlbase", + "libhwbinder", + "libkeymaster4support", + ], +} + cc_binary { name: "secdiscard", defaults: ["vold_default_flags"], diff --git a/wait_for_keymaster.cpp b/wait_for_keymaster.cpp new file mode 100644 index 0000000..bf26518 --- /dev/null +++ b/wait_for_keymaster.cpp @@ -0,0 +1,33 @@ +/* + * 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. + */ + +#include + +#include "Keymaster.h" + +int main(int argc, char** argv) { + setenv("ANDROID_LOG_TAGS", "*:v", 1); + if (getppid() == 1) { + // If init is calling us then it's during boot and we should log to kmsg + android::base::InitLogging(argv, &android::base::KernelLogger); + } else { + android::base::InitLogging(argv, &android::base::StderrLogger); + } + LOG(INFO) << "Waiting for Keymaster device"; + android::vold::Keymaster keymaster; + LOG(INFO) << "Keymaster device ready"; + return 0; +}