Eliminate in-place serialization.

Not doing in-place serialization will result in greater heap
consumption, but eliminates many alignment-related issues.  Given more
time, I'd prefer to solve the alignment issues by computing and
inserting appropriate padding, but we don't have the time.

Change-Id: I86e4bdf57263db26c73372ae2963f21c5f5f00aa
diff --git a/google_keymaster_messages.cpp b/google_keymaster_messages.cpp
index a8730b6..403f87a 100644
--- a/google_keymaster_messages.cpp
+++ b/google_keymaster_messages.cpp
@@ -31,19 +31,20 @@
     }
 }
 
-uint8_t* GenerateKeyResponse::Serialize(uint8_t* buf) const {
-    buf = append_to_buf(buf, static_cast<int32_t>(error));
+uint8_t* GenerateKeyResponse::Serialize(uint8_t* buf, const uint8_t* end) const {
+    buf = append_to_buf(buf, end, static_cast<int32_t>(error));
     if (error == KM_ERROR_OK) {
-        buf = append_size_and_data_to_buf(buf, key_blob.key_material, key_blob.key_material_size);
-        buf = append_to_buf(buf, static_cast<uint32_t>(enforced.SerializedSize()));
-        buf = enforced.Serialize(buf);
-        buf = append_to_buf(buf, static_cast<uint32_t>(unenforced.SerializedSize()));
-        buf = unenforced.Serialize(buf);
+        buf = append_size_and_data_to_buf(buf, end, key_blob.key_material,
+                                          key_blob.key_material_size);
+        buf = append_to_buf(buf, end, static_cast<uint32_t>(enforced.SerializedSize()));
+        buf = enforced.Serialize(buf, end);
+        buf = append_to_buf(buf, end, static_cast<uint32_t>(unenforced.SerializedSize()));
+        buf = unenforced.Serialize(buf, end);
     };
     return buf;
 }
 
-bool GenerateKeyResponse::DeserializeToCopy(const uint8_t** buf, const uint8_t* end) {
+bool GenerateKeyResponse::Deserialize(const uint8_t** buf, const uint8_t* end) {
     delete[] key_blob.key_material;
 
     if (!copy_from_buf(buf, end, &error))
@@ -66,12 +67,12 @@
 
     uint32_t enforced_size;
     if (!copy_from_buf(buf, end, &enforced_size) || end - *buf < enforced_size ||
-        !enforced.DeserializeToCopy(buf, *buf + enforced_size))
+        !enforced.Deserialize(buf, *buf + enforced_size))
         return false;
 
     uint32_t unenforced_size;
     if (!copy_from_buf(buf, end, &unenforced_size) || end - *buf < unenforced_size ||
-        !unenforced.DeserializeToCopy(buf, *buf + unenforced_size))
+        !unenforced.Deserialize(buf, *buf + unenforced_size))
         return false;
 
     return true;