diff options
author | Shawn Willden <swillden@google.com> | 2015-06-01 14:40:19 -0600 |
---|---|---|
committer | Shawn Willden <swillden@google.com> | 2015-06-02 22:35:51 -0600 |
commit | ac69d9559e96cf57d7705848a9f3d6e09eac9fe1 (patch) | |
tree | cb6f4bd61002bf669ec5273bbd5b622299289265 /android_keymaster_messages.cpp | |
parent | bf0679a97499f92abc664179ddb8c1e3974f5c85 (diff) | |
download | keymaster-ac69d9559e96cf57d7705848a9f3d6e09eac9fe1.tar.gz |
Add output params to Update & Finish messages.
Change-Id: I5f6ee245259788cb8c873d814e167f5d5bcdc08b
Diffstat (limited to 'android_keymaster_messages.cpp')
-rw-r--r-- | android_keymaster_messages.cpp | 30 |
1 files changed, 25 insertions, 5 deletions
diff --git a/android_keymaster_messages.cpp b/android_keymaster_messages.cpp index e402005..709b8dc 100644 --- a/android_keymaster_messages.cpp +++ b/android_keymaster_messages.cpp @@ -210,16 +210,25 @@ bool UpdateOperationRequest::Deserialize(const uint8_t** buf_ptr, const uint8_t* } size_t UpdateOperationResponse::NonErrorSerializedSize() const { - if (message_version == 0) + switch (message_version) { + case 0: return output.SerializedSize(); - else + case 1: return output.SerializedSize() + sizeof(uint32_t); + case 2: + return output.SerializedSize() + sizeof(uint32_t) + output_params.SerializedSize(); + default: + assert(false); + return 0; + } } uint8_t* UpdateOperationResponse::NonErrorSerialize(uint8_t* buf, const uint8_t* end) const { buf = output.Serialize(buf, end); if (message_version > 0) buf = append_uint32_to_buf(buf, end, input_consumed); + if (message_version > 1) + buf = output_params.Serialize(buf, end); return buf; } @@ -227,6 +236,8 @@ bool UpdateOperationResponse::NonErrorDeserialize(const uint8_t** buf_ptr, const bool retval = output.Deserialize(buf_ptr, end); if (retval && message_version > 0) retval = copy_uint32_from_buf(buf_ptr, end, &input_consumed); + if (retval && message_version > 1) + retval = output_params.Deserialize(buf_ptr, end); return retval; } @@ -254,15 +265,24 @@ bool FinishOperationRequest::Deserialize(const uint8_t** buf_ptr, const uint8_t* } size_t FinishOperationResponse::NonErrorSerializedSize() const { - return output.SerializedSize(); + if (message_version < 2) + return output.SerializedSize(); + else + return output.SerializedSize() + output_params.SerializedSize(); } uint8_t* FinishOperationResponse::NonErrorSerialize(uint8_t* buf, const uint8_t* end) const { - return output.Serialize(buf, end); + buf = output.Serialize(buf, end); + if (message_version > 1) + buf = output_params.Serialize(buf, end); + return buf; } bool FinishOperationResponse::NonErrorDeserialize(const uint8_t** buf_ptr, const uint8_t* end) { - return output.Deserialize(buf_ptr, end); + bool retval = output.Deserialize(buf_ptr, end); + if (retval && message_version > 1) + retval = output_params.Deserialize(buf_ptr, end); + return retval; } size_t AddEntropyRequest::SerializedSize() const { |