Update SoftKeymasterDevice to track keymaster1 API changes.

Change-Id: I8472a75ea60c73794ce31cacab9bcaad8482358f
diff --git a/android_keymaster_test_utils.cpp b/android_keymaster_test_utils.cpp
index c40c889..80f6822 100644
--- a/android_keymaster_test_utils.cpp
+++ b/android_keymaster_test_utils.cpp
@@ -175,8 +175,7 @@
 
     FreeKeyBlob();
     FreeCharacteristics();
-    return device()->generate_key(device(), params.data(), params.size(), &blob_,
-                                  &characteristics_);
+    return device()->generate_key(device(), &params, &blob_, &characteristics_);
 }
 
 keymaster_error_t Keymaster1Test::ImportKey(const AuthorizationSetBuilder& builder,
@@ -188,9 +187,9 @@
 
     FreeKeyBlob();
     FreeCharacteristics();
-    return device()->import_key(device(), params.data(), params.size(), format,
-                                reinterpret_cast<const uint8_t*>(key_material.c_str()),
-                                key_material.length(), &blob_, &characteristics_);
+    keymaster_blob_t key = {reinterpret_cast<const uint8_t*>(key_material.c_str()),
+                            key_material.length()};
+    return device()->import_key(device(), &params, format, &key, &blob_, &characteristics_);
 }
 
 AuthorizationSet Keymaster1Test::UserAuthParams() {
@@ -208,65 +207,59 @@
 }
 
 keymaster_error_t Keymaster1Test::BeginOperation(keymaster_purpose_t purpose) {
-    keymaster_key_param_t* out_params = NULL;
-    size_t out_params_count = 0;
+    AuthorizationSet in_params(client_params());
+    keymaster_key_param_set_t out_params;
     keymaster_error_t error =
-        device()->begin(device(), purpose, &blob_, client_params_, array_length(client_params_),
-                        &out_params, &out_params_count, &op_handle_);
-    EXPECT_EQ(0U, out_params_count);
-    EXPECT_TRUE(out_params == NULL);
+        device()->begin(device(), purpose, &blob_, &in_params, &out_params, &op_handle_);
+    EXPECT_EQ(0U, out_params.length);
+    EXPECT_TRUE(out_params.params == nullptr);
     return error;
 }
 
 keymaster_error_t Keymaster1Test::BeginOperation(keymaster_purpose_t purpose,
                                                  const AuthorizationSet& input_set,
                                                  AuthorizationSet* output_set) {
-    keymaster_key_param_t* out_params;
-    size_t out_params_count;
+    keymaster_key_param_set_t out_params;
     keymaster_error_t error =
-        device()->begin(device(), purpose, &blob_, input_set.data(), input_set.size(), &out_params,
-                        &out_params_count, &op_handle_);
+        device()->begin(device(), purpose, &blob_, &input_set, &out_params, &op_handle_);
     if (error == KM_ERROR_OK) {
         if (output_set) {
-            output_set->Reinitialize(out_params, out_params_count);
+            output_set->Reinitialize(out_params);
         } else {
-            EXPECT_EQ(0U, out_params_count);
-            EXPECT_TRUE(out_params == NULL);
+            EXPECT_EQ(0U, out_params.length);
+            EXPECT_TRUE(out_params.params == nullptr);
         }
-        keymaster_free_param_values(out_params, out_params_count);
-        free(out_params);
+        keymaster_free_param_set(&out_params);
     }
     return error;
 }
 
 keymaster_error_t Keymaster1Test::UpdateOperation(const string& message, string* output,
                                                   size_t* input_consumed) {
-    uint8_t* out_tmp = NULL;
-    size_t out_length;
     EXPECT_NE(op_handle_, OP_HANDLE_SENTINEL);
-    keymaster_error_t error =
-        device()->update(device(), op_handle_, NULL /* params */, 0 /* params_count */,
-                         reinterpret_cast<const uint8_t*>(message.c_str()), message.length(),
-                         input_consumed, &out_tmp, &out_length);
-    if (error == KM_ERROR_OK && out_tmp)
-        output->append(reinterpret_cast<char*>(out_tmp), out_length);
-    free(out_tmp);
+    keymaster_blob_t input = {reinterpret_cast<const uint8_t*>(message.c_str()), message.length()};
+    keymaster_blob_t out_tmp;
+    keymaster_key_param_set_t out_params;
+    keymaster_error_t error = device()->update(device(), op_handle_, nullptr /* params */, &input,
+                                               input_consumed, &out_params, &out_tmp);
+    if (error == KM_ERROR_OK && out_tmp.data)
+        output->append(reinterpret_cast<const char*>(out_tmp.data), out_tmp.data_length);
+    free(const_cast<uint8_t*>(out_tmp.data));
     return error;
 }
 
 keymaster_error_t Keymaster1Test::UpdateOperation(const AuthorizationSet& additional_params,
                                                   const string& message, string* output,
                                                   size_t* input_consumed) {
-    uint8_t* out_tmp = NULL;
-    size_t out_length;
     EXPECT_NE(op_handle_, OP_HANDLE_SENTINEL);
-    keymaster_error_t error =
-        device()->update(device(), op_handle_, additional_params.data(), additional_params.size(),
-                         reinterpret_cast<const uint8_t*>(message.c_str()), message.length(),
-                         input_consumed, &out_tmp, &out_length);
-    if (error == KM_ERROR_OK && out_tmp)
-        output->append(reinterpret_cast<char*>(out_tmp), out_length);
-    free(out_tmp);
+    keymaster_blob_t input = {reinterpret_cast<const uint8_t*>(message.c_str()), message.length()};
+    keymaster_blob_t out_tmp;
+    keymaster_key_param_set_t out_params;
+    keymaster_error_t error = device()->update(device(), op_handle_, &additional_params, &input,
+                                               input_consumed, &out_params, &out_tmp);
+    if (error == KM_ERROR_OK && out_tmp.data)
+        output->append(reinterpret_cast<const char*>(out_tmp.data), out_tmp.data_length);
+    free((void*)out_tmp.data);
     return error;
 }
 
@@ -281,15 +274,21 @@
 
 keymaster_error_t Keymaster1Test::FinishOperation(const AuthorizationSet& additional_params,
                                                   const string& signature, string* output) {
-    uint8_t* out_tmp = NULL;
-    size_t out_length;
+    keymaster_blob_t sig = {reinterpret_cast<const uint8_t*>(signature.c_str()),
+                            signature.length()};
+    keymaster_blob_t out_tmp;
+    keymaster_key_param_set_t out_params;
     keymaster_error_t error =
-        device()->finish(device(), op_handle_, additional_params.data(), additional_params.size(),
-                         reinterpret_cast<const uint8_t*>(signature.c_str()), signature.length(),
-                         &out_tmp, &out_length);
-    if (out_tmp)
-        output->append(reinterpret_cast<char*>(out_tmp), out_length);
-    free(out_tmp);
+        device()->finish(device(), op_handle_, &additional_params, &sig, &out_params, &out_tmp);
+    if (error != KM_ERROR_OK) {
+        EXPECT_TRUE(out_tmp.data == nullptr);
+        EXPECT_TRUE(out_params.params == nullptr);
+        return error;
+    }
+
+    if (out_tmp.data)
+        output->append(reinterpret_cast<const char*>(out_tmp.data), out_tmp.data_length);
+    free((void*)out_tmp.data);
     return error;
 }
 
@@ -521,18 +520,15 @@
 }
 
 keymaster_error_t Keymaster1Test::ExportKey(keymaster_key_format_t format, string* export_data) {
-    uint8_t* export_data_tmp;
-    size_t export_data_length;
-
-    keymaster_error_t error =
-        device()->export_key(device(), format, &blob_, &client_id_, NULL /* app_data */,
-                             &export_data_tmp, &export_data_length);
+    keymaster_blob_t export_tmp;
+    keymaster_error_t error = device()->export_key(device(), format, &blob_, &client_id_,
+                                                   NULL /* app_data */, &export_tmp);
 
     if (error != KM_ERROR_OK)
         return error;
 
-    *export_data = string(reinterpret_cast<char*>(export_data_tmp), export_data_length);
-    free(export_data_tmp);
+    *export_data = string(reinterpret_cast<const char*>(export_tmp.data), export_tmp.data_length);
+    free((void*)export_tmp.data);
     return error;
 }