summaryrefslogtreecommitdiff
path: root/keymaster/4.0/vts/functional/KeymasterHidlTest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'keymaster/4.0/vts/functional/KeymasterHidlTest.cpp')
-rw-r--r--keymaster/4.0/vts/functional/KeymasterHidlTest.cpp42
1 files changed, 42 insertions, 0 deletions
diff --git a/keymaster/4.0/vts/functional/KeymasterHidlTest.cpp b/keymaster/4.0/vts/functional/KeymasterHidlTest.cpp
index 995ae4f45c..3af1df32d3 100644
--- a/keymaster/4.0/vts/functional/KeymasterHidlTest.cpp
+++ b/keymaster/4.0/vts/functional/KeymasterHidlTest.cpp
@@ -16,6 +16,7 @@
#include "KeymasterHidlTest.h"
+#include <chrono>
#include <vector>
#include <android-base/logging.h>
@@ -206,6 +207,47 @@ void KeymasterHidlTest::CheckedDeleteKey() {
CheckedDeleteKey(&key_blob_);
}
+void KeymasterHidlTest::CheckCreationDateTime(
+ const AuthorizationSet& sw_enforced,
+ std::chrono::time_point<std::chrono::system_clock> creation) {
+ for (int i = 0; i < sw_enforced.size(); i++) {
+ if (sw_enforced[i].tag == TAG_CREATION_DATETIME) {
+ std::chrono::time_point<std::chrono::system_clock> now =
+ std::chrono::system_clock::now();
+ std::chrono::time_point<std::chrono::system_clock> reported_time{
+ std::chrono::milliseconds(sw_enforced[i].f.dateTime)};
+ // The test is flaky for EC keys, so a buffer time of 120 seconds will be added.
+ EXPECT_LE(creation - 120s, reported_time);
+ EXPECT_LE(reported_time, now + 1s);
+ }
+ }
+}
+
+void KeymasterHidlTest::CheckGetCharacteristics(const HidlBuf& key_blob, const HidlBuf& client_id,
+ const HidlBuf& app_data,
+ KeyCharacteristics* key_characteristics) {
+ HidlBuf empty_buf = {};
+ EXPECT_EQ(ErrorCode::OK,
+ GetCharacteristics(key_blob, client_id, app_data, key_characteristics));
+ EXPECT_GT(key_characteristics->hardwareEnforced.size(), 0);
+ EXPECT_GT(key_characteristics->softwareEnforced.size(), 0);
+
+ EXPECT_EQ(ErrorCode::INVALID_KEY_BLOB,
+ GetCharacteristics(key_blob, empty_buf, app_data, key_characteristics));
+ EXPECT_EQ(key_characteristics->hardwareEnforced.size(), 0);
+ EXPECT_EQ(key_characteristics->softwareEnforced.size(), 0);
+
+ EXPECT_EQ(ErrorCode::INVALID_KEY_BLOB,
+ GetCharacteristics(key_blob, client_id, empty_buf, key_characteristics));
+ EXPECT_EQ(key_characteristics->hardwareEnforced.size(), 0);
+ EXPECT_EQ(key_characteristics->softwareEnforced.size(), 0);
+
+ EXPECT_EQ(ErrorCode::INVALID_KEY_BLOB,
+ GetCharacteristics(key_blob, empty_buf, empty_buf, key_characteristics));
+ EXPECT_EQ(key_characteristics->hardwareEnforced.size(), 0);
+ EXPECT_EQ(key_characteristics->softwareEnforced.size(), 0);
+}
+
ErrorCode KeymasterHidlTest::GetCharacteristics(const HidlBuf& key_blob, const HidlBuf& client_id,
const HidlBuf& app_data,
KeyCharacteristics* key_characteristics) {