Use pointers not references for out arguments

Google/Android C++ style requires that arguments passed in for writing
should be pointers, not references, so that it's visible in the caller
that they'll be written to.

Bug: 27566014
Change-Id: I5cd55906cc4b2f61c8b97b223786be0b3ce28862
diff --git a/Keymaster.cpp b/Keymaster.cpp
index b3ece19..849ccf7 100644
--- a/Keymaster.cpp
+++ b/Keymaster.cpp
@@ -23,8 +23,8 @@
 
 bool KeymasterOperation::updateCompletely(
         const std::string &input,
-        std::string &output) {
-    output.clear();
+        std::string *output) {
+    output->clear();
     auto it = input.begin();
     while (it != input.end()) {
         size_t toRead = static_cast<size_t>(input.end() - it);
@@ -38,7 +38,7 @@
             mDevice = nullptr;
             return false;
         }
-        output.append(reinterpret_cast<const char *>(outputBlob.data), outputBlob.data_length);
+        output->append(reinterpret_cast<const char *>(outputBlob.data), outputBlob.data_length);
         free(const_cast<uint8_t *>(outputBlob.data));
         if (inputConsumed > toRead) {
             LOG(ERROR) << "update reported too much input consumed";
@@ -61,7 +61,7 @@
     return true;
 }
 
-bool KeymasterOperation::finishWithOutput(std::string &output) {
+bool KeymasterOperation::finishWithOutput(std::string *output) {
     keymaster_blob_t outputBlob;
     auto error = mDevice->finish(mDevice, mOpHandle,
         nullptr, nullptr, nullptr, &outputBlob);
@@ -70,7 +70,7 @@
         LOG(ERROR) << "finish failed, code " << error;
         return false;
     }
-    output.assign(reinterpret_cast<const char *>(outputBlob.data), outputBlob.data_length);
+    output->assign(reinterpret_cast<const char *>(outputBlob.data), outputBlob.data_length);
     free(const_cast<uint8_t *>(outputBlob.data));
     return true;
 }
@@ -98,14 +98,14 @@
 
 bool Keymaster::generateKey(
         const keymaster::AuthorizationSet &inParams,
-        std::string &key) {
+        std::string *key) {
     keymaster_key_blob_t keyBlob;
     auto error = mDevice->generate_key(mDevice, &inParams, &keyBlob, nullptr);
     if (error != KM_ERROR_OK) {
         LOG(ERROR) << "generate_key failed, code " << error;
         return false;
     }
-    key.assign(reinterpret_cast<const char *>(keyBlob.key_material), keyBlob.key_material_size);
+    key->assign(reinterpret_cast<const char *>(keyBlob.key_material), keyBlob.key_material_size);
     free(const_cast<uint8_t *>(keyBlob.key_material));
     return true;
 }
@@ -125,7 +125,7 @@
         keymaster_purpose_t purpose,
         const std::string &key,
         const keymaster::AuthorizationSet &inParams,
-        keymaster::AuthorizationSet &outParams) {
+        keymaster::AuthorizationSet *outParams) {
     keymaster_key_blob_t keyBlob { reinterpret_cast<const uint8_t *>(key.data()), key.size() };
     keymaster_operation_handle_t mOpHandle;
     keymaster_key_param_set_t outParams_set;
@@ -135,8 +135,8 @@
         LOG(ERROR) << "begin failed, code " << error;
         return KeymasterOperation(nullptr, mOpHandle);
     }
-    outParams.Clear();
-    outParams.push_back(outParams_set);
+    outParams->Clear();
+    outParams->push_back(outParams_set);
     keymaster_free_param_set(&outParams_set);
     return KeymasterOperation(mDevice, mOpHandle);
 }