summaryrefslogtreecommitdiff
path: root/ng/AndroidKeyMintOperation.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'ng/AndroidKeyMintOperation.cpp')
-rw-r--r--ng/AndroidKeyMintOperation.cpp21
1 files changed, 18 insertions, 3 deletions
diff --git a/ng/AndroidKeyMintOperation.cpp b/ng/AndroidKeyMintOperation.cpp
index 17f6b33..b886bd7 100644
--- a/ng/AndroidKeyMintOperation.cpp
+++ b/ng/AndroidKeyMintOperation.cpp
@@ -50,11 +50,16 @@ AndroidKeyMintOperation::~AndroidKeyMintOperation() {
ScopedAStatus
AndroidKeyMintOperation::updateAad(const vector<uint8_t>& input,
- const optional<HardwareAuthToken>& /* authToken */,
+ const optional<HardwareAuthToken>& authToken,
const optional<TimeStampToken>& /* timestampToken */) {
UpdateOperationRequest request(impl_->message_version());
request.op_handle = opHandle_;
request.additional_params.push_back(TAG_ASSOCIATED_DATA, input.data(), input.size());
+ if (authToken) {
+ auto tokenAsVec(authToken2AidlVec(*authToken));
+ request.additional_params.push_back(keymaster::TAG_AUTH_TOKEN, tokenAsVec.data(),
+ tokenAsVec.size());
+ }
UpdateOperationResponse response(impl_->message_version());
impl_->UpdateOperation(request, &response);
@@ -63,7 +68,7 @@ AndroidKeyMintOperation::updateAad(const vector<uint8_t>& input,
}
ScopedAStatus AndroidKeyMintOperation::update(const vector<uint8_t>& input,
- const optional<HardwareAuthToken>& /* authToken */,
+ const optional<HardwareAuthToken>& authToken,
const optional<TimeStampToken>&
/* timestampToken */,
vector<uint8_t>* output) {
@@ -72,6 +77,11 @@ ScopedAStatus AndroidKeyMintOperation::update(const vector<uint8_t>& input,
UpdateOperationRequest request(impl_->message_version());
request.op_handle = opHandle_;
request.input.Reinitialize(input.data(), input.size());
+ if (authToken) {
+ auto tokenAsVec(authToken2AidlVec(*authToken));
+ request.additional_params.push_back(keymaster::TAG_AUTH_TOKEN, tokenAsVec.data(),
+ tokenAsVec.size());
+ }
UpdateOperationResponse response(impl_->message_version());
impl_->UpdateOperation(request, &response);
@@ -88,7 +98,7 @@ ScopedAStatus AndroidKeyMintOperation::update(const vector<uint8_t>& input,
ScopedAStatus
AndroidKeyMintOperation::finish(const optional<vector<uint8_t>>& input, //
const optional<vector<uint8_t>>& signature, //
- const optional<HardwareAuthToken>& /* authToken */,
+ const optional<HardwareAuthToken>& authToken,
const optional<TimeStampToken>& /* timestampToken */,
const optional<vector<uint8_t>>& /* confirmationToken */,
vector<uint8_t>* output) {
@@ -102,6 +112,11 @@ AndroidKeyMintOperation::finish(const optional<vector<uint8_t>>& input, //
request.op_handle = opHandle_;
if (input) request.input.Reinitialize(input->data(), input->size());
if (signature) request.signature.Reinitialize(signature->data(), signature->size());
+ if (authToken) {
+ auto tokenAsVec(authToken2AidlVec(*authToken));
+ request.additional_params.push_back(keymaster::TAG_AUTH_TOKEN, tokenAsVec.data(),
+ tokenAsVec.size());
+ }
FinishOperationResponse response(impl_->message_version());
impl_->FinishOperation(request, &response);