Log keystore key creation events using statsd.
This is the first CL on migrating keystore logging to use statsd.
This migrates the logging for key creation events
(generation/import).
A work-around is implemented to handle repeated fields via bitmaps
because statsd does not support repeated fields as of now.
Test: Adding tests for logging is yet to be decided.
Bug: 157664923
Change-Id: I76900eb2abec627afb80573cda25340186e9f244
Change-Id: Id23724cfbd21dca8ef5fd77e5712c0bc2e727f4b
diff --git a/keystore/keymaster_worker.cpp b/keystore/keymaster_worker.cpp
index 911815e..e7fcf96 100644
--- a/keystore/keymaster_worker.cpp
+++ b/keystore/keymaster_worker.cpp
@@ -29,7 +29,7 @@
#include "KeyStore.h"
#include "keymaster_enforcement.h"
-#include "key_proto_handler.h"
+#include "key_creation_log_handler.h"
#include "keystore_utils.h"
#include <chrono>
@@ -800,8 +800,10 @@
// by KeyStore::getFallbackDevice()
bool consider_fallback = securityLevel == SecurityLevel::TRUSTED_ENVIRONMENT;
- Finalize logOnFail(
- [&] { uploadKeyCharacteristicsAsProto(keyParams, false /* wasCreationSuccessful */); });
+ Finalize logOnFail([&] {
+ logKeystoreKeyCreationEvent(keyParams, false /*wasCreationSuccessful*/,
+ rc.getErrorCode());
+ });
KeyCharacteristics outCharacteristics;
KeyStoreServiceReturnCode error;
@@ -870,7 +872,8 @@
// log on success
logOnFail.release();
- uploadKeyCharacteristicsAsProto(keyParams, true /* wasCreationSuccessful */);
+ logKeystoreKeyCreationEvent(keyParams, true /*wasCreationSuccessful*/,
+ error.getErrorCode());
return worker_cb(error, std::move(outCharacteristics));
});
@@ -904,11 +907,13 @@
// by KeyStore::getFallbackDevice()
bool consider_fallback = securityLevel == SecurityLevel::TRUSTED_ENVIRONMENT;
- Finalize logOnFail(
- [&] { uploadKeyCharacteristicsAsProto(keyParams, false /* wasCreationSuccessful */); });
+ KeyStoreServiceReturnCode error;
+ Finalize logOnFail([&] {
+ logKeystoreKeyCreationEvent(keyParams, false /*wasCreationSuccessful*/,
+ error.getErrorCode());
+ });
KeyCharacteristics outCharacteristics;
- KeyStoreServiceReturnCode error;
auto hidl_cb = [&](ErrorCode ret, const hidl_vec<uint8_t>& hidlKeyBlob,
const KeyCharacteristics& keyCharacteristics) {
keymasterDevice_->logIfKeymasterVendorError(ret);
@@ -975,7 +980,8 @@
// log on success
logOnFail.release();
- uploadKeyCharacteristicsAsProto(keyParams, true /* wasCreationSuccessful */);
+ logKeystoreKeyCreationEvent(keyParams, true /*wasCreationSuccessful*/,
+ error.getErrorCode());
return worker_cb(error, std::move(outCharacteristics));
});