Enforce padding specifications.

Bug: 20917242, 19509156
Change-Id: Ib67076f89ef3d675b5e2e926cc3702fa208dbbb6
diff --git a/google_keymaster_test_utils.cpp b/google_keymaster_test_utils.cpp
index 289d6a7..5a3d4ae 100644
--- a/google_keymaster_test_utils.cpp
+++ b/google_keymaster_test_utils.cpp
@@ -360,6 +360,19 @@
     EXPECT_GT(signature->size(), 0U);
 }
 
+void Keymaster1Test::SignMessage(const string& message, string* signature,
+                                 keymaster_digest_t digest, keymaster_padding_t padding) {
+    SCOPED_TRACE("SignMessage");
+    AuthorizationSet input_params(AuthorizationSet(client_params_, array_length(client_params_)));
+    input_params.push_back(TAG_DIGEST, digest);
+    input_params.push_back(TAG_PADDING, padding);
+    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, keymaster_digest_t digest,
                                 size_t mac_length) {
     SCOPED_TRACE("SignMessage");
@@ -384,15 +397,29 @@
                    &output_params);
 }
 
-string Keymaster1Test::EncryptMessage(const string& message, string* generated_nonce) {
+void Keymaster1Test::VerifyMessage(const string& message, const string& signature,
+                                   keymaster_digest_t digest, keymaster_padding_t padding) {
+    SCOPED_TRACE("VerifyMessage");
+    AuthorizationSet input_params(client_params());
+    input_params.push_back(TAG_DIGEST, digest);
+    input_params.push_back(TAG_PADDING, padding);
     AuthorizationSet update_params;
-    return EncryptMessage(update_params, message, generated_nonce);
+    AuthorizationSet output_params;
+    ProcessMessage(KM_PURPOSE_VERIFY, message, signature, input_params, update_params,
+                   &output_params);
+}
+
+string Keymaster1Test::EncryptMessage(const string& message, keymaster_padding_t padding,
+                                      string* generated_nonce) {
+    AuthorizationSet update_params;
+    return EncryptMessage(update_params, message, padding, generated_nonce);
 }
 
 string Keymaster1Test::EncryptMessage(const AuthorizationSet& update_params, const string& message,
-                                      string* generated_nonce) {
+                                      keymaster_padding_t padding, string* generated_nonce) {
     SCOPED_TRACE("EncryptMessage");
     AuthorizationSet begin_params(client_params()), output_params;
+    begin_params.push_back(TAG_PADDING, padding);
     string ciphertext =
         ProcessMessage(KM_PURPOSE_ENCRYPT, message, begin_params, update_params, &output_params);
     if (generated_nonce) {
@@ -413,21 +440,30 @@
     return ProcessMessage(KM_PURPOSE_ENCRYPT, message, begin_params, update_params, output_params);
 }
 
-string Keymaster1Test::DecryptMessage(const string& ciphertext) {
+string Keymaster1Test::DecryptMessage(const string& ciphertext, keymaster_padding_t padding) {
     SCOPED_TRACE("DecryptMessage");
-    return ProcessMessage(KM_PURPOSE_DECRYPT, ciphertext);
+    AuthorizationSet begin_params(client_params());
+    begin_params.push_back(TAG_PADDING, padding);
+    AuthorizationSet update_params;
+    return ProcessMessage(KM_PURPOSE_DECRYPT, ciphertext, begin_params, update_params);
 }
 
-string Keymaster1Test::DecryptMessage(const string& ciphertext, const string& nonce) {
+string Keymaster1Test::DecryptMessage(const string& ciphertext, keymaster_padding_t padding,
+                                      const string& nonce) {
     SCOPED_TRACE("DecryptMessage");
+    AuthorizationSet begin_params(client_params());
+    begin_params.push_back(TAG_PADDING, padding);
+    begin_params.push_back(TAG_NONCE, nonce.data(), nonce.size());
     AuthorizationSet update_params;
-    return DecryptMessage(update_params, ciphertext, nonce);
+    return ProcessMessage(KM_PURPOSE_DECRYPT, ciphertext, begin_params, update_params);
 }
 
 string Keymaster1Test::DecryptMessage(const AuthorizationSet& update_params,
-                                      const string& ciphertext, const string& nonce) {
+                                      const string& ciphertext, keymaster_padding_t padding,
+                                      const string& nonce) {
     SCOPED_TRACE("DecryptMessage");
     AuthorizationSet begin_params(client_params());
+    begin_params.push_back(TAG_PADDING, padding);
     begin_params.push_back(TAG_NONCE, nonce.data(), nonce.size());
     return ProcessMessage(KM_PURPOSE_DECRYPT, ciphertext, begin_params, update_params);
 }
@@ -477,7 +513,8 @@
     ASSERT_EQ(KM_ERROR_OK, ImportKey(AuthorizationSetBuilder()
                                          .AesEncryptionKey(key.size() * 8)
                                          .Authorization(TAG_BLOCK_MODE, KM_MODE_CTR)
-                                         .Authorization(TAG_CALLER_NONCE),
+                                         .Authorization(TAG_CALLER_NONCE)
+                                         .Padding(KM_PAD_NONE),
                                      KM_KEY_FORMAT_RAW, key));
 
     AuthorizationSet begin_params(client_params()), update_params, output_params;