From 4c66b8a35c059663e48485b272ffbcfd17506543 Mon Sep 17 00:00:00 2001 From: Louis Chang Date: Mon, 18 Jan 2021 10:01:12 +0000 Subject: [PATCH] Revert "Integrate IKeystoreAuthorization aidl's addAuthToken wit..." Revert "Implement addAuthToken method of IKeystoreAuthorization ..." Revert "Integrate IKeystoreAuthorization aidl's addAuthToken wit..." Revert submission 1519257-rename_auth_service Reason for revert: breaking WM presubmit, b/177787180 Reverted Changes: Ib847b68d4:Integrate IKeystoreAuthorization aidl's addAuthTok... I7893ab452:Integrate IKeystoreAuthorization aidl's addAuthTok... I4a092119c:Implement addAuthToken method of IKeystoreAuthoriz... Change-Id: Icc48050a127fa3a931cb0b591db8165384e2fe25 --- gatekeeperd/Android.bp | 3 -- gatekeeperd/gatekeeperd.cpp | 73 +++++++++++-------------------------- 2 files changed, 21 insertions(+), 55 deletions(-) diff --git a/gatekeeperd/Android.bp b/gatekeeperd/Android.bp index 2d9a82025..27a645288 100644 --- a/gatekeeperd/Android.bp +++ b/gatekeeperd/Android.bp @@ -28,7 +28,6 @@ cc_binary { shared_libs: [ "libbinder", - "libbinder_ndk", "libgatekeeper", "libgsi", "liblog", @@ -41,8 +40,6 @@ cc_binary { "libhidlbase", "android.hardware.gatekeeper@1.0", "libgatekeeper_aidl", - "android.hardware.security.keymint-unstable-ndk_platform", - "android.security.authorization-ndk_platform", ], static_libs: ["libscrypt_static"], diff --git a/gatekeeperd/gatekeeperd.cpp b/gatekeeperd/gatekeeperd.cpp index ced757345..b982dbcf6 100644 --- a/gatekeeperd/gatekeeperd.cpp +++ b/gatekeeperd/gatekeeperd.cpp @@ -19,44 +19,42 @@ #include #include -#include #include #include +#include +#include #include #include +#include #include #include -#include -#include #include #include #include -#include // for password_handle_t +#include // for password_handle_t +#include #include +#include // For error code #include #include #include +#include #include -#include -#include -#include #include +#include using android::sp; -using android::hardware::Return; -using android::hardware::gatekeeper::V1_0::GatekeeperResponse; -using android::hardware::gatekeeper::V1_0::GatekeeperStatusCode; using android::hardware::gatekeeper::V1_0::IGatekeeper; +using android::hardware::gatekeeper::V1_0::GatekeeperStatusCode; +using android::hardware::gatekeeper::V1_0::GatekeeperResponse; +using android::hardware::Return; using ::android::binder::Status; using ::android::service::gatekeeper::BnGateKeeperService; using GKResponse = ::android::service::gatekeeper::GateKeeperResponse; using GKResponseCode = ::android::service::gatekeeper::ResponseCode; -using ::aidl::android::hardware::security::keymint::HardwareAuthenticatorType; -using ::aidl::android::hardware::security::keymint::HardwareAuthToken; -using ::aidl::android::security::authorization::IKeystoreAuthorization; namespace android { @@ -64,7 +62,7 @@ static const String16 KEYGUARD_PERMISSION("android.permission.ACCESS_KEYGUARD_SE static const String16 DUMP_PERMISSION("android.permission.DUMP"); class GateKeeperProxy : public BnGateKeeperService { - public: +public: GateKeeperProxy() { clear_state_if_needed_done = false; hw_device = IGatekeeper::getService(); @@ -75,7 +73,8 @@ class GateKeeperProxy : public BnGateKeeperService { } } - virtual ~GateKeeperProxy() {} + virtual ~GateKeeperProxy() { + } void store_sid(uint32_t userId, uint64_t sid) { char filename[21]; @@ -97,7 +96,7 @@ class GateKeeperProxy : public BnGateKeeperService { if (mark_cold_boot() && !is_running_gsi) { ALOGI("cold boot: clearing state"); if (hw_device) { - hw_device->deleteAllUsers([](const GatekeeperResponse&) {}); + hw_device->deleteAllUsers([](const GatekeeperResponse &){}); } } @@ -105,7 +104,7 @@ class GateKeeperProxy : public BnGateKeeperService { } bool mark_cold_boot() { - const char* filename = ".coldboot"; + const char *filename = ".coldboot"; if (access(filename, F_OK) == -1) { int fd = open(filename, O_WRONLY | O_TRUNC | O_CREAT, S_IRUSR | S_IWUSR); if (fd < 0) { @@ -300,34 +299,7 @@ class GateKeeperProxy : public BnGateKeeperService { if (gkResponse->response_code() == GKResponseCode::OK) { if (gkResponse->payload().size() != 0) { - // try to connect to IKeystoreAuthorization AIDL service first. - ::ndk::SpAIBinder authzBinder( - AServiceManager_getService("android.security.authorization")); - auto authzService = IKeystoreAuthorization::fromBinder(authzBinder); - if (authzService) { - if (gkResponse->payload().size() != sizeof(hw_auth_token_t)) { - LOG(ERROR) << "Incorrect size of AuthToken payload."; - return GK_ERROR; - } - - const hw_auth_token_t* hwAuthToken = - reinterpret_cast(gkResponse->payload().data()); - HardwareAuthToken authToken; - - authToken.timestamp.milliSeconds = betoh64(hwAuthToken->timestamp); - authToken.challenge = hwAuthToken->challenge; - authToken.authenticatorId = hwAuthToken->authenticator_id; - authToken.authenticatorType = static_cast( - betoh32(hwAuthToken->authenticator_type)); - authToken.mac.assign(&hwAuthToken->hmac[0], &hwAuthToken->hmac[32]); - auto result = authzService->addAuthToken(authToken); - if (!result.isOk()) { - LOG(ERROR) << "Failure in sending AuthToken to AuthorizationService."; - return GK_ERROR; - } - } sp sm = defaultServiceManager(); - sp binder = sm->getService(String16("android.security.keystore")); sp service = interface_cast(binder); @@ -338,12 +310,9 @@ class GateKeeperProxy : public BnGateKeeperService { if (!binder_result.isOk() || !keystore::KeyStoreServiceReturnCode(result).isOk()) { LOG(ERROR) << "Failure sending auth token to KeyStore: " << result; - return GK_ERROR; } } else { - LOG(ERROR) << "Cannot deliver auth token. Unable to communicate with " - "Keystore."; - return GK_ERROR; + LOG(ERROR) << "Cannot deliver auth token. Unable to communicate with Keystore."; } } @@ -397,23 +366,23 @@ class GateKeeperProxy : public BnGateKeeperService { } if (hw_device == NULL) { - const char* result = "Device not available"; + const char *result = "Device not available"; write(fd, result, strlen(result) + 1); } else { - const char* result = "OK"; + const char *result = "OK"; write(fd, result, strlen(result) + 1); } return OK; } - private: +private: sp hw_device; bool clear_state_if_needed_done; bool is_running_gsi; }; -} // namespace android +}// namespace android int main(int argc, char* argv[]) { ALOGI("Starting gatekeeperd...");