Enforce digest specifications.

Bug: 20917242, 19509156
Change-Id: I5b3509bea78754192f0d5e2a76de24621fc43621
diff --git a/google_keymaster_test_utils.cpp b/google_keymaster_test_utils.cpp
index f63f130..289d6a7 100644
--- a/google_keymaster_test_utils.cpp
+++ b/google_keymaster_test_utils.cpp
@@ -297,12 +297,8 @@
     return device()->abort(device(), op_handle_);
 }
 
-string Keymaster1Test::ProcessMessage(keymaster_purpose_t purpose, const string& message,
-                                      bool use_client_params) {
-    AuthorizationSet input_params;
-    if (use_client_params)
-        input_params.push_back(AuthorizationSet(client_params_, array_length(client_params_)));
-    EXPECT_EQ(KM_ERROR_OK, BeginOperation(purpose, input_params, NULL /* output_params */));
+string Keymaster1Test::ProcessMessage(keymaster_purpose_t purpose, const string& message) {
+    EXPECT_EQ(KM_ERROR_OK, BeginOperation(purpose, client_params(), NULL /* output_params */));
 
     string result;
     size_t input_consumed;
@@ -327,11 +323,22 @@
 }
 
 string Keymaster1Test::ProcessMessage(keymaster_purpose_t purpose, const string& message,
-                                      const string& signature, bool use_client_params) {
-    AuthorizationSet input_params;
-    if (use_client_params)
-        input_params.push_back(AuthorizationSet(client_params_, array_length(client_params_)));
-    EXPECT_EQ(KM_ERROR_OK, BeginOperation(purpose, input_params, NULL /* output_params */));
+                                      const string& signature, const AuthorizationSet& begin_params,
+                                      const AuthorizationSet& update_params,
+                                      AuthorizationSet* output_params) {
+    EXPECT_EQ(KM_ERROR_OK, BeginOperation(purpose, begin_params, output_params));
+
+    string result;
+    size_t input_consumed;
+    EXPECT_EQ(KM_ERROR_OK, UpdateOperation(update_params, message, &result, &input_consumed));
+    EXPECT_EQ(message.size(), input_consumed);
+    EXPECT_EQ(KM_ERROR_OK, FinishOperation(update_params, signature, &result));
+    return result;
+}
+
+string Keymaster1Test::ProcessMessage(keymaster_purpose_t purpose, const string& message,
+                                      const string& signature) {
+    EXPECT_EQ(KM_ERROR_OK, BeginOperation(purpose, client_params(), NULL /* output_params */));
 
     string result;
     size_t input_consumed;
@@ -341,16 +348,24 @@
     return result;
 }
 
-void Keymaster1Test::SignMessage(const string& message, string* signature, bool use_client_params) {
+void Keymaster1Test::SignMessage(const string& message, string* signature,
+                                 keymaster_digest_t digest) {
     SCOPED_TRACE("SignMessage");
-    *signature = ProcessMessage(KM_PURPOSE_SIGN, message, use_client_params);
+    AuthorizationSet input_params(AuthorizationSet(client_params_, array_length(client_params_)));
+    input_params.push_back(TAG_DIGEST, digest);
+    AuthorizationSet update_params;
+    AuthorizationSet output_params;
+    *signature =
+        ProcessMessage(KM_PURPOSE_SIGN, message, input_params, update_params, &output_params);
     EXPECT_GT(signature->size(), 0U);
 }
 
-void Keymaster1Test::MacMessage(const string& message, string* signature, size_t mac_length) {
+void Keymaster1Test::MacMessage(const string& message, string* signature, keymaster_digest_t digest,
+                                size_t mac_length) {
     SCOPED_TRACE("SignMessage");
     AuthorizationSet input_params(AuthorizationSet(client_params_, array_length(client_params_)));
     input_params.push_back(TAG_MAC_LENGTH, mac_length);
+    input_params.push_back(TAG_DIGEST, digest);
     AuthorizationSet update_params;
     AuthorizationSet output_params;
     *signature =
@@ -359,9 +374,14 @@
 }
 
 void Keymaster1Test::VerifyMessage(const string& message, const string& signature,
-                                   bool use_client_params) {
+                                   keymaster_digest_t digest) {
     SCOPED_TRACE("VerifyMessage");
-    ProcessMessage(KM_PURPOSE_VERIFY, message, signature, use_client_params);
+    AuthorizationSet input_params(client_params());
+    input_params.push_back(TAG_DIGEST, digest);
+    AuthorizationSet update_params;
+    AuthorizationSet output_params;
+    ProcessMessage(KM_PURPOSE_VERIFY, message, signature, input_params, update_params,
+                   &output_params);
 }
 
 string Keymaster1Test::EncryptMessage(const string& message, string* generated_nonce) {
@@ -447,7 +467,7 @@
               ImportKey(AuthorizationSetBuilder().HmacKey(key.size() * 8).Digest(digest),
                         KM_KEY_FORMAT_RAW, key));
     string signature;
-    MacMessage(message, &signature, expected_mac.size() * 8);
+    MacMessage(message, &signature, digest, expected_mac.size() * 8);
     EXPECT_EQ(expected_mac, signature) << "Test vector didn't match for digest " << (int)digest;
 }