Support HMAC_SHA1, and update supported* API.
Also add some more tests.
Change-Id: I11d02b5e0d207d5afc550adc5df45fd238e64a00
diff --git a/google_keymaster_test.cpp b/google_keymaster_test.cpp
index c832235..2b055c8 100644
--- a/google_keymaster_test.cpp
+++ b/google_keymaster_test.cpp
@@ -491,6 +491,12 @@
KM_DIGEST_SHA_2_512, KM_DIGEST_SHA1},
digests, len));
free(digests);
+
+ EXPECT_EQ(KM_ERROR_OK, device()->get_supported_digests(device(), KM_ALGORITHM_HMAC,
+ KM_PURPOSE_SIGN, &digests, &len));
+ EXPECT_TRUE(ResponseContains({KM_DIGEST_SHA_2_224, KM_DIGEST_SHA_2_256, KM_DIGEST_SHA_2_384,
+ KM_DIGEST_SHA_2_512, KM_DIGEST_SHA1}, digests, len));
+ free(digests);
}
TEST_F(CheckSupported, SupportedImportFormats) {
@@ -693,6 +699,14 @@
ASSERT_EQ(KM_ERROR_UNSUPPORTED_PADDING_MODE, BeginOperation(KM_PURPOSE_SIGN));
}
+TEST_F(SigningOperationsTest, HmacSha1Success) {
+ GenerateKey(ParamBuilder().HmacKey(128, KM_DIGEST_SHA1, 20));
+ string message = "12345678901234567890123456789012";
+ string signature;
+ SignMessage(message, &signature);
+ ASSERT_EQ(20, signature.size());
+}
+
TEST_F(SigningOperationsTest, HmacSha224Success) {
ASSERT_EQ(KM_ERROR_OK, GenerateKey(ParamBuilder().HmacKey(128, KM_DIGEST_SHA_2_224, 28)));
string message = "12345678901234567890123456789012";
@@ -776,6 +790,22 @@
VerifyMessage(message, signature);
}
+TEST_F(VerificationOperationsTest, HmacSha1Success) {
+ GenerateKey(ParamBuilder().HmacKey(128, KM_DIGEST_SHA1, 16));
+ string message = "123456789012345678901234567890123456789012345678";
+ string signature;
+ SignMessage(message, &signature);
+ VerifyMessage(message, signature);
+}
+
+TEST_F(VerificationOperationsTest, HmacSha224Success) {
+ GenerateKey(ParamBuilder().HmacKey(128, KM_DIGEST_SHA_2_224, 16));
+ string message = "123456789012345678901234567890123456789012345678";
+ string signature;
+ SignMessage(message, &signature);
+ VerifyMessage(message, signature);
+}
+
TEST_F(VerificationOperationsTest, HmacSha256Success) {
ASSERT_EQ(KM_ERROR_OK, GenerateKey(ParamBuilder().HmacKey(128, KM_DIGEST_SHA_2_256, 16)));
string message = "123456789012345678901234567890123456789012345678";
@@ -784,6 +814,22 @@
VerifyMessage(message, signature);
}
+TEST_F(VerificationOperationsTest, HmacSha384Success) {
+ GenerateKey(ParamBuilder().HmacKey(128, KM_DIGEST_SHA_2_384, 16));
+ string message = "123456789012345678901234567890123456789012345678";
+ string signature;
+ SignMessage(message, &signature);
+ VerifyMessage(message, signature);
+}
+
+TEST_F(VerificationOperationsTest, HmacSha512Success) {
+ GenerateKey(ParamBuilder().HmacKey(128, KM_DIGEST_SHA_2_512, 16));
+ string message = "123456789012345678901234567890123456789012345678";
+ string signature;
+ SignMessage(message, &signature);
+ VerifyMessage(message, signature);
+}
+
typedef VerificationOperationsTest ExportKeyTest;
TEST_F(ExportKeyTest, RsaSuccess) {
ASSERT_EQ(KM_ERROR_OK, GenerateKey(ParamBuilder().RsaSigningKey(256)));