Merge "trusty: keymaster3: Modify TrustyKeymaster3Device::update method"

am: bd9751a387

Change-Id: Idc19ec446ac917d9ade0fa663b53c0cb8aaf70ec
This commit is contained in:
Michael Ryleev 2018-09-28 11:38:49 -07:00 committed by android-build-merger
commit 512f751fd5

View file

@ -21,6 +21,7 @@
#include <cutils/log.h>
#include <keymaster/android_keymaster_messages.h>
#include <trusty_keymaster/TrustyKeymaster3Device.h>
#include <trusty_keymaster/ipc/trusty_keymaster_ipc.h>
using ::keymaster::AbortOperationRequest;
using ::keymaster::AbortOperationResponse;
@ -393,20 +394,32 @@ Return<void> TrustyKeymaster3Device::update(uint64_t operationHandle,
const hidl_vec<KeyParameter>& inParams,
const hidl_vec<uint8_t>& input, update_cb _hidl_cb) {
UpdateOperationRequest request;
request.op_handle = operationHandle;
request.input.Reinitialize(input.data(), input.size());
request.additional_params.Reinitialize(KmParamSet(inParams));
UpdateOperationResponse response;
impl_->UpdateOperation(request, &response);
uint32_t resultConsumed = 0;
hidl_vec<KeyParameter> resultParams;
hidl_vec<uint8_t> resultBlob;
if (response.error == KM_ERROR_OK) {
resultConsumed = response.input_consumed;
resultParams = kmParamSet2Hidl(response.output_params);
resultBlob = kmBuffer2hidlVec(response.output);
uint32_t resultConsumed = 0;
request.op_handle = operationHandle;
request.additional_params.Reinitialize(KmParamSet(inParams));
size_t inp_size = input.size();
size_t ser_size = request.SerializedSize();
if (ser_size > TRUSTY_KEYMASTER_SEND_BUF_SIZE) {
response.error = KM_ERROR_INVALID_INPUT_LENGTH;
} else {
if (ser_size + inp_size > TRUSTY_KEYMASTER_SEND_BUF_SIZE) {
inp_size = TRUSTY_KEYMASTER_SEND_BUF_SIZE - ser_size;
}
request.input.Reinitialize(input.data(), inp_size);
impl_->UpdateOperation(request, &response);
if (response.error == KM_ERROR_OK) {
resultConsumed = response.input_consumed;
resultParams = kmParamSet2Hidl(response.output_params);
resultBlob = kmBuffer2hidlVec(response.output);
}
}
_hidl_cb(legacy_enum_conversion(response.error), resultConsumed, resultParams, resultBlob);
return Void();