/* * Copyright (C) 2015 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.security.keymaster; import android.os.IBinder; import android.os.Parcel; import android.os.Parcelable; /** * Class for handling the parceling of return values from keymaster crypto operations * (begin/update/finish). * @hide */ public class OperationResult implements Parcelable { public final int resultCode; public final IBinder token; public final long operationHandle; public final int inputConsumed; public final byte[] output; public final KeymasterArguments outParams; public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { @Override public OperationResult createFromParcel(Parcel in) { return new OperationResult(in); } @Override public OperationResult[] newArray(int length) { return new OperationResult[length]; } }; public OperationResult( int resultCode, IBinder token, long operationHandle, int inputConsumed, byte[] output, KeymasterArguments outParams) { this.resultCode = resultCode; this.token = token; this.operationHandle = operationHandle; this.inputConsumed = inputConsumed; this.output = output; this.outParams = outParams; } protected OperationResult(Parcel in) { resultCode = in.readInt(); token = in.readStrongBinder(); operationHandle = in.readLong(); inputConsumed = in.readInt(); output = in.createByteArray(); outParams = KeymasterArguments.CREATOR.createFromParcel(in); } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel out, int flags) { out.writeInt(resultCode); out.writeStrongBinder(token); out.writeLong(operationHandle); out.writeInt(inputConsumed); out.writeByteArray(output); outParams.writeToParcel(out, flags); } }