diff options
| author | Jocelyn Bohr <bohr@google.com> | 2017-02-09 17:40:47 -0800 |
|---|---|---|
| committer | Jocelyn Bohr <bohr@google.com> | 2017-04-10 17:33:49 -0700 |
| commit | d7da42c0fa19114da51fc0d80c74b3d522687b9a (patch) | |
| tree | 6baa420eca7e7c35cd117693cddc5ec0a9a00466 /trusty | |
| parent | 22812e9a30e6b8b7c17acb12f2951cf7b05db7a9 (diff) | |
| download | system_core-d7da42c0fa19114da51fc0d80c74b3d522687b9a.tar.gz system_core-d7da42c0fa19114da51fc0d80c74b3d522687b9a.tar.bz2 system_core-d7da42c0fa19114da51fc0d80c74b3d522687b9a.zip | |
trusty: keymaster: Implement begin
Test: builds
Change-Id: Icb5470a8c95131ee3d68ab2ce41423302b9ed531
Diffstat (limited to 'trusty')
| -rw-r--r-- | trusty/keymaster/trusty_keymaster_device.cpp | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/trusty/keymaster/trusty_keymaster_device.cpp b/trusty/keymaster/trusty_keymaster_device.cpp index 2132ae176..6be07190f 100644 --- a/trusty/keymaster/trusty_keymaster_device.cpp +++ b/trusty/keymaster/trusty_keymaster_device.cpp @@ -463,6 +463,41 @@ keymaster_error_t TrustyKeymasterDevice::begin(keymaster_purpose_t purpose, keymaster_key_param_set_t* out_params, keymaster_operation_handle_t* operation_handle) { ALOGD("Device received begin"); + + if (error_ != KM_ERROR_OK) { + return error_; + } + if (!key || !key->key_material) { + return KM_ERROR_UNEXPECTED_NULL_POINTER; + } + if (!operation_handle) { + return KM_ERROR_OUTPUT_PARAMETER_NULL; + } + + if (out_params) { + *out_params = {}; + } + + BeginOperationRequest request; + request.purpose = purpose; + request.SetKeyMaterial(*key); + request.additional_params.Reinitialize(*in_params); + + BeginOperationResponse response; + keymaster_error_t err = Send(KM_BEGIN_OPERATION, request, &response); + if (err != KM_ERROR_OK) { + return err; + } + + if (response.output_params.size() > 0) { + if (out_params) { + response.output_params.CopyToParamSet(out_params); + } else { + return KM_ERROR_OUTPUT_PARAMETER_NULL; + } + } + *operation_handle = response.op_handle; + return KM_ERROR_OK; } |
