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)));