summaryrefslogtreecommitdiff
path: root/android_keymaster_messages.cpp
diff options
context:
space:
mode:
authorShawn Willden <swillden@google.com>2016-01-27 12:49:09 -0700
committerShawn Willden <swillden@google.com>2016-01-28 16:24:17 -0700
commit4ed2d7ed2275735ddc4952f310badfa4dcbaf04e (patch)
treef369f87d6986ec11387b609da96397e87fb50760 /android_keymaster_messages.cpp
parente755a7186a41f5d7372daea842ddcf311908fe52 (diff)
downloadkeymaster-4ed2d7ed2275735ddc4952f310badfa4dcbaf04e.tar.gz
Add input to FinishOperationRequest message.
Change-Id: I30f4851399808c44f1af281e87acbe3e162ad3d0
Diffstat (limited to 'android_keymaster_messages.cpp')
-rw-r--r--android_keymaster_messages.cpp45
1 files changed, 35 insertions, 10 deletions
diff --git a/android_keymaster_messages.cpp b/android_keymaster_messages.cpp
index ddac3b6..1b8f36e 100644
--- a/android_keymaster_messages.cpp
+++ b/android_keymaster_messages.cpp
@@ -192,17 +192,24 @@ bool UpdateOperationRequest::Deserialize(const uint8_t** buf_ptr, const uint8_t*
}
size_t UpdateOperationResponse::NonErrorSerializedSize() const {
+ size_t size = 0;
switch (message_version) {
- case 0:
- return output.SerializedSize();
- case 1:
- return output.SerializedSize() + sizeof(uint32_t);
+ case 3:
case 2:
- return output.SerializedSize() + sizeof(uint32_t) + output_params.SerializedSize();
+ size += output_params.SerializedSize();
+ ; /* falls through */
+ case 1:
+ size += sizeof(uint32_t);
+ ; /* falls through */
+ case 0:
+ size += output.SerializedSize();
+ break;
+
default:
assert(false);
- return 0;
}
+
+ return size;
}
uint8_t* UpdateOperationResponse::NonErrorSerialize(uint8_t* buf, const uint8_t* end) const {
@@ -224,10 +231,24 @@ bool UpdateOperationResponse::NonErrorDeserialize(const uint8_t** buf_ptr, const
}
size_t FinishOperationRequest::SerializedSize() const {
- if (message_version == 0)
- return sizeof(op_handle) + signature.SerializedSize();
- else
- return sizeof(op_handle) + signature.SerializedSize() + additional_params.SerializedSize();
+ size_t size = 0;
+ switch (message_version) {
+ case 3:
+ size += input.SerializedSize();
+ ; /* falls through */
+ case 2:
+ case 1:
+ size += additional_params.SerializedSize();
+ ; /* falls through */
+ case 0:
+ size += sizeof(op_handle) + signature.SerializedSize();
+ break;
+
+ default:
+ assert(false); // Should never get here.
+ }
+
+ return size;
}
uint8_t* FinishOperationRequest::Serialize(uint8_t* buf, const uint8_t* end) const {
@@ -235,6 +256,8 @@ uint8_t* FinishOperationRequest::Serialize(uint8_t* buf, const uint8_t* end) con
buf = signature.Serialize(buf, end);
if (message_version > 0)
buf = additional_params.Serialize(buf, end);
+ if (message_version > 2)
+ buf = input.Serialize(buf, end);
return buf;
}
@@ -243,6 +266,8 @@ bool FinishOperationRequest::Deserialize(const uint8_t** buf_ptr, const uint8_t*
copy_uint64_from_buf(buf_ptr, end, &op_handle) && signature.Deserialize(buf_ptr, end);
if (retval && message_version > 0)
retval = additional_params.Deserialize(buf_ptr, end);
+ if (retval && message_version > 2)
+ retval = input.Deserialize(buf_ptr, end);
return retval;
}