Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5b5f8c6a authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Forward HAT and ConfirmationToken to TA on finish." into sc-dev am:...

Merge "Forward HAT and ConfirmationToken to TA on finish." into sc-dev am: a21c4c1a am: 7d67dff4

Original change: https://googleplex-android-review.googlesource.com/c/platform/system/core/+/15179282

Change-Id: I837107063fff02ed289720fe3165cb165fa3c35c
parents a38799cb 7d67dff4
Loading
Loading
Loading
Loading
+17 −6
Original line number Diff line number Diff line
@@ -34,6 +34,7 @@ using ::keymaster::FinishOperationRequest;
using ::keymaster::FinishOperationResponse;
using ::keymaster::TAG_ASSOCIATED_DATA;
using ::keymaster::TAG_AUTH_TOKEN;
using ::keymaster::TAG_CONFIRMATION_TOKEN;
using ::keymaster::UpdateOperationRequest;
using ::keymaster::UpdateOperationResponse;
using km_utils::authToken2AidlVec;
@@ -106,12 +107,12 @@ ScopedAStatus TrustyKeyMintOperation::update(const vector<uint8_t>& input,
    return ScopedAStatus::ok();
}

ScopedAStatus TrustyKeyMintOperation::finish(
        const optional<vector<uint8_t>>& input,      //
ScopedAStatus TrustyKeyMintOperation::finish(const optional<vector<uint8_t>>& input,      //
                                             const optional<vector<uint8_t>>& signature,  //
                                             const optional<HardwareAuthToken>& authToken,
                                             const optional<TimeStampToken>& /* timestampToken */,
        const optional<vector<uint8_t>>& /* confirmationToken */, vector<uint8_t>* output) {
                                             const optional<vector<uint8_t>>& confirmationToken,
                                             vector<uint8_t>* output) {
    if (!output) {
        return ScopedAStatus(AStatus_fromServiceSpecificError(
                static_cast<int32_t>(ErrorCode::OUTPUT_PARAMETER_NULL)));
@@ -119,6 +120,16 @@ ScopedAStatus TrustyKeyMintOperation::finish(
    output->clear();

    FinishOperationRequest request(impl_->message_version());

    if (authToken) {
        auto tokenAsVec(authToken2AidlVec(*authToken));
        request.additional_params.push_back(TAG_AUTH_TOKEN, tokenAsVec.data(), tokenAsVec.size());
    }
    if (confirmationToken) {
        request.additional_params.push_back(TAG_CONFIRMATION_TOKEN, confirmationToken->data(),
                                            confirmationToken->size());
    }

    request.op_handle = opHandle_;
    if (signature) request.signature.Reinitialize(signature->data(), signature->size());
    size_t serialized_size = request.SerializedSize();