/* * This file is auto-generated. DO NOT MODIFY. * Using: out/host/linux-x86/bin/aidl --lang=java --structured --version 3 --hash 74a538630d5d90f732f361a2313cbb69b09eb047 -t --stability vintf --min_sdk_version platform_apis -pout/soong/.intermediates/hardware/interfaces/security/secureclock/aidl/android.hardware.security.secureclock_interface/1/preprocessed.aidl --ninja -d out/soong/.intermediates/hardware/interfaces/security/keymint/aidl/android.hardware.security.keymint-V3-java-source/gen/android/hardware/security/keymint/IKeyMintDevice.java.d -o out/soong/.intermediates/hardware/interfaces/security/keymint/aidl/android.hardware.security.keymint-V3-java-source/gen -Nhardware/interfaces/security/keymint/aidl/aidl_api/android.hardware.security.keymint/3 hardware/interfaces/security/keymint/aidl/aidl_api/android.hardware.security.keymint/3/android/hardware/security/keymint/IKeyMintDevice.aidl */ package android.hardware.security.keymint; /** @hide */ public interface IKeyMintDevice extends android.os.IInterface { /** * The version of this interface that the caller is built against. * This might be different from what {@link #getInterfaceVersion() * getInterfaceVersion} returns as that is the version of the interface * that the remote object is implementing. */ public static final int VERSION = 3; public static final String HASH = "74a538630d5d90f732f361a2313cbb69b09eb047"; /** Default implementation for IKeyMintDevice. */ public static class Default implements android.hardware.security.keymint.IKeyMintDevice { @Override public android.hardware.security.keymint.KeyMintHardwareInfo getHardwareInfo() throws android.os.RemoteException { return null; } @Override public void addRngEntropy(byte[] data) throws android.os.RemoteException { } @Override public android.hardware.security.keymint.KeyCreationResult generateKey(android.hardware.security.keymint.KeyParameter[] keyParams, android.hardware.security.keymint.AttestationKey attestationKey) throws android.os.RemoteException { return null; } @Override public android.hardware.security.keymint.KeyCreationResult importKey(android.hardware.security.keymint.KeyParameter[] keyParams, int keyFormat, byte[] keyData, android.hardware.security.keymint.AttestationKey attestationKey) throws android.os.RemoteException { return null; } @Override public android.hardware.security.keymint.KeyCreationResult importWrappedKey(byte[] wrappedKeyData, byte[] wrappingKeyBlob, byte[] maskingKey, android.hardware.security.keymint.KeyParameter[] unwrappingParams, long passwordSid, long biometricSid) throws android.os.RemoteException { return null; } @Override public byte[] upgradeKey(byte[] keyBlobToUpgrade, android.hardware.security.keymint.KeyParameter[] upgradeParams) throws android.os.RemoteException { return null; } @Override public void deleteKey(byte[] keyBlob) throws android.os.RemoteException { } @Override public void deleteAllKeys() throws android.os.RemoteException { } @Override public void destroyAttestationIds() throws android.os.RemoteException { } @Override public android.hardware.security.keymint.BeginResult begin(int purpose, byte[] keyBlob, android.hardware.security.keymint.KeyParameter[] params, android.hardware.security.keymint.HardwareAuthToken authToken) throws android.os.RemoteException { return null; } @Override public void deviceLocked(boolean passwordOnly, android.hardware.security.secureclock.TimeStampToken timestampToken) throws android.os.RemoteException { } @Override public void earlyBootEnded() throws android.os.RemoteException { } @Override public byte[] convertStorageKeyToEphemeral(byte[] storageKeyBlob) throws android.os.RemoteException { return null; } @Override public android.hardware.security.keymint.KeyCharacteristics[] getKeyCharacteristics(byte[] keyBlob, byte[] appId, byte[] appData) throws android.os.RemoteException { return null; } @Override public byte[] getRootOfTrustChallenge() throws android.os.RemoteException { return null; } @Override public byte[] getRootOfTrust(byte[] challenge) throws android.os.RemoteException { return null; } @Override public void sendRootOfTrust(byte[] rootOfTrust) throws android.os.RemoteException { } @Override public int getInterfaceVersion() { return 0; } @Override public String getInterfaceHash() { return ""; } @Override public android.os.IBinder asBinder() { return null; } } /** Local-side IPC implementation stub class. */ public static abstract class Stub extends android.os.Binder implements android.hardware.security.keymint.IKeyMintDevice { /** Construct the stub at attach it to the interface. */ @SuppressWarnings("this-escape") public Stub() { this.markVintfStability(); this.attachInterface(this, DESCRIPTOR); } /** * Cast an IBinder object into an android.hardware.security.keymint.IKeyMintDevice interface, * generating a proxy if needed. */ public static android.hardware.security.keymint.IKeyMintDevice asInterface(android.os.IBinder obj) { if ((obj==null)) { return null; } android.os.IInterface iin = obj.queryLocalInterface(DESCRIPTOR); if (((iin!=null)&&(iin instanceof android.hardware.security.keymint.IKeyMintDevice))) { return ((android.hardware.security.keymint.IKeyMintDevice)iin); } return new android.hardware.security.keymint.IKeyMintDevice.Stub.Proxy(obj); } @Override public android.os.IBinder asBinder() { return this; } /** @hide */ public static java.lang.String getDefaultTransactionName(int transactionCode) { switch (transactionCode) { case TRANSACTION_getHardwareInfo: { return "getHardwareInfo"; } case TRANSACTION_addRngEntropy: { return "addRngEntropy"; } case TRANSACTION_generateKey: { return "generateKey"; } case TRANSACTION_importKey: { return "importKey"; } case TRANSACTION_importWrappedKey: { return "importWrappedKey"; } case TRANSACTION_upgradeKey: { return "upgradeKey"; } case TRANSACTION_deleteKey: { return "deleteKey"; } case TRANSACTION_deleteAllKeys: { return "deleteAllKeys"; } case TRANSACTION_destroyAttestationIds: { return "destroyAttestationIds"; } case TRANSACTION_begin: { return "begin"; } case TRANSACTION_deviceLocked: { return "deviceLocked"; } case TRANSACTION_earlyBootEnded: { return "earlyBootEnded"; } case TRANSACTION_convertStorageKeyToEphemeral: { return "convertStorageKeyToEphemeral"; } case TRANSACTION_getKeyCharacteristics: { return "getKeyCharacteristics"; } case TRANSACTION_getRootOfTrustChallenge: { return "getRootOfTrustChallenge"; } case TRANSACTION_getRootOfTrust: { return "getRootOfTrust"; } case TRANSACTION_sendRootOfTrust: { return "sendRootOfTrust"; } case TRANSACTION_getInterfaceVersion: { return "getInterfaceVersion"; } case TRANSACTION_getInterfaceHash: { return "getInterfaceHash"; } default: { return null; } } } /** @hide */ public java.lang.String getTransactionName(int transactionCode) { return this.getDefaultTransactionName(transactionCode); } @Override public boolean onTransact(int code, android.os.Parcel data, android.os.Parcel reply, int flags) throws android.os.RemoteException { java.lang.String descriptor = DESCRIPTOR; if (code >= android.os.IBinder.FIRST_CALL_TRANSACTION && code <= android.os.IBinder.LAST_CALL_TRANSACTION) { data.enforceInterface(descriptor); } if (code == INTERFACE_TRANSACTION) { reply.writeString(descriptor); return true; } else if (code == TRANSACTION_getInterfaceVersion) { reply.writeNoException(); reply.writeInt(getInterfaceVersion()); return true; } else if (code == TRANSACTION_getInterfaceHash) { reply.writeNoException(); reply.writeString(getInterfaceHash()); return true; } switch (code) { case TRANSACTION_getHardwareInfo: { android.hardware.security.keymint.KeyMintHardwareInfo _result = this.getHardwareInfo(); reply.writeNoException(); reply.writeTypedObject(_result, android.os.Parcelable.PARCELABLE_WRITE_RETURN_VALUE); break; } case TRANSACTION_addRngEntropy: { byte[] _arg0; _arg0 = data.createByteArray(); data.enforceNoDataAvail(); this.addRngEntropy(_arg0); reply.writeNoException(); break; } case TRANSACTION_generateKey: { android.hardware.security.keymint.KeyParameter[] _arg0; _arg0 = data.createTypedArray(android.hardware.security.keymint.KeyParameter.CREATOR); android.hardware.security.keymint.AttestationKey _arg1; _arg1 = data.readTypedObject(android.hardware.security.keymint.AttestationKey.CREATOR); data.enforceNoDataAvail(); android.hardware.security.keymint.KeyCreationResult _result = this.generateKey(_arg0, _arg1); reply.writeNoException(); reply.writeTypedObject(_result, android.os.Parcelable.PARCELABLE_WRITE_RETURN_VALUE); break; } case TRANSACTION_importKey: { android.hardware.security.keymint.KeyParameter[] _arg0; _arg0 = data.createTypedArray(android.hardware.security.keymint.KeyParameter.CREATOR); int _arg1; _arg1 = data.readInt(); byte[] _arg2; _arg2 = data.createByteArray(); android.hardware.security.keymint.AttestationKey _arg3; _arg3 = data.readTypedObject(android.hardware.security.keymint.AttestationKey.CREATOR); data.enforceNoDataAvail(); android.hardware.security.keymint.KeyCreationResult _result = this.importKey(_arg0, _arg1, _arg2, _arg3); reply.writeNoException(); reply.writeTypedObject(_result, android.os.Parcelable.PARCELABLE_WRITE_RETURN_VALUE); break; } case TRANSACTION_importWrappedKey: { byte[] _arg0; _arg0 = data.createByteArray(); byte[] _arg1; _arg1 = data.createByteArray(); byte[] _arg2; _arg2 = data.createByteArray(); android.hardware.security.keymint.KeyParameter[] _arg3; _arg3 = data.createTypedArray(android.hardware.security.keymint.KeyParameter.CREATOR); long _arg4; _arg4 = data.readLong(); long _arg5; _arg5 = data.readLong(); data.enforceNoDataAvail(); android.hardware.security.keymint.KeyCreationResult _result = this.importWrappedKey(_arg0, _arg1, _arg2, _arg3, _arg4, _arg5); reply.writeNoException(); reply.writeTypedObject(_result, android.os.Parcelable.PARCELABLE_WRITE_RETURN_VALUE); break; } case TRANSACTION_upgradeKey: { byte[] _arg0; _arg0 = data.createByteArray(); android.hardware.security.keymint.KeyParameter[] _arg1; _arg1 = data.createTypedArray(android.hardware.security.keymint.KeyParameter.CREATOR); data.enforceNoDataAvail(); byte[] _result = this.upgradeKey(_arg0, _arg1); reply.writeNoException(); reply.writeByteArray(_result); break; } case TRANSACTION_deleteKey: { byte[] _arg0; _arg0 = data.createByteArray(); data.enforceNoDataAvail(); this.deleteKey(_arg0); reply.writeNoException(); break; } case TRANSACTION_deleteAllKeys: { this.deleteAllKeys(); reply.writeNoException(); break; } case TRANSACTION_destroyAttestationIds: { this.destroyAttestationIds(); reply.writeNoException(); break; } case TRANSACTION_begin: { int _arg0; _arg0 = data.readInt(); byte[] _arg1; _arg1 = data.createByteArray(); android.hardware.security.keymint.KeyParameter[] _arg2; _arg2 = data.createTypedArray(android.hardware.security.keymint.KeyParameter.CREATOR); android.hardware.security.keymint.HardwareAuthToken _arg3; _arg3 = data.readTypedObject(android.hardware.security.keymint.HardwareAuthToken.CREATOR); data.enforceNoDataAvail(); android.hardware.security.keymint.BeginResult _result = this.begin(_arg0, _arg1, _arg2, _arg3); reply.writeNoException(); reply.writeTypedObject(_result, android.os.Parcelable.PARCELABLE_WRITE_RETURN_VALUE); break; } case TRANSACTION_deviceLocked: { boolean _arg0; _arg0 = data.readBoolean(); android.hardware.security.secureclock.TimeStampToken _arg1; _arg1 = data.readTypedObject(android.hardware.security.secureclock.TimeStampToken.CREATOR); data.enforceNoDataAvail(); this.deviceLocked(_arg0, _arg1); reply.writeNoException(); break; } case TRANSACTION_earlyBootEnded: { this.earlyBootEnded(); reply.writeNoException(); break; } case TRANSACTION_convertStorageKeyToEphemeral: { byte[] _arg0; _arg0 = data.createByteArray(); data.enforceNoDataAvail(); byte[] _result = this.convertStorageKeyToEphemeral(_arg0); reply.writeNoException(); reply.writeByteArray(_result); break; } case TRANSACTION_getKeyCharacteristics: { byte[] _arg0; _arg0 = data.createByteArray(); byte[] _arg1; _arg1 = data.createByteArray(); byte[] _arg2; _arg2 = data.createByteArray(); data.enforceNoDataAvail(); android.hardware.security.keymint.KeyCharacteristics[] _result = this.getKeyCharacteristics(_arg0, _arg1, _arg2); reply.writeNoException(); reply.writeTypedArray(_result, android.os.Parcelable.PARCELABLE_WRITE_RETURN_VALUE); break; } case TRANSACTION_getRootOfTrustChallenge: { byte[] _result = this.getRootOfTrustChallenge(); reply.writeNoException(); reply.writeFixedArray(_result, android.os.Parcelable.PARCELABLE_WRITE_RETURN_VALUE, 16); break; } case TRANSACTION_getRootOfTrust: { byte[] _arg0; _arg0 = data.createFixedArray(byte[].class, 16); data.enforceNoDataAvail(); byte[] _result = this.getRootOfTrust(_arg0); reply.writeNoException(); reply.writeByteArray(_result); break; } case TRANSACTION_sendRootOfTrust: { byte[] _arg0; _arg0 = data.createByteArray(); data.enforceNoDataAvail(); this.sendRootOfTrust(_arg0); reply.writeNoException(); break; } default: { return super.onTransact(code, data, reply, flags); } } return true; } private static class Proxy implements android.hardware.security.keymint.IKeyMintDevice { private android.os.IBinder mRemote; Proxy(android.os.IBinder remote) { mRemote = remote; } private int mCachedVersion = -1; private String mCachedHash = "-1"; @Override public android.os.IBinder asBinder() { return mRemote; } public java.lang.String getInterfaceDescriptor() { return DESCRIPTOR; } @Override public android.hardware.security.keymint.KeyMintHardwareInfo getHardwareInfo() throws android.os.RemoteException { android.os.Parcel _data = android.os.Parcel.obtain(asBinder()); _data.markSensitive(); android.os.Parcel _reply = android.os.Parcel.obtain(); android.hardware.security.keymint.KeyMintHardwareInfo _result; try { _data.writeInterfaceToken(DESCRIPTOR); boolean _status = mRemote.transact(Stub.TRANSACTION_getHardwareInfo, _data, _reply, android.os.IBinder.FLAG_CLEAR_BUF); if (!_status) { throw new android.os.RemoteException("Method getHardwareInfo is unimplemented."); } _reply.readException(); _result = _reply.readTypedObject(android.hardware.security.keymint.KeyMintHardwareInfo.CREATOR); } finally { _reply.recycle(); _data.recycle(); } return _result; } @Override public void addRngEntropy(byte[] data) throws android.os.RemoteException { android.os.Parcel _data = android.os.Parcel.obtain(asBinder()); _data.markSensitive(); android.os.Parcel _reply = android.os.Parcel.obtain(); try { _data.writeInterfaceToken(DESCRIPTOR); _data.writeByteArray(data); boolean _status = mRemote.transact(Stub.TRANSACTION_addRngEntropy, _data, _reply, android.os.IBinder.FLAG_CLEAR_BUF); if (!_status) { throw new android.os.RemoteException("Method addRngEntropy is unimplemented."); } _reply.readException(); } finally { _reply.recycle(); _data.recycle(); } } @Override public android.hardware.security.keymint.KeyCreationResult generateKey(android.hardware.security.keymint.KeyParameter[] keyParams, android.hardware.security.keymint.AttestationKey attestationKey) throws android.os.RemoteException { android.os.Parcel _data = android.os.Parcel.obtain(asBinder()); _data.markSensitive(); android.os.Parcel _reply = android.os.Parcel.obtain(); android.hardware.security.keymint.KeyCreationResult _result; try { _data.writeInterfaceToken(DESCRIPTOR); _data.writeTypedArray(keyParams, 0); _data.writeTypedObject(attestationKey, 0); boolean _status = mRemote.transact(Stub.TRANSACTION_generateKey, _data, _reply, android.os.IBinder.FLAG_CLEAR_BUF); if (!_status) { throw new android.os.RemoteException("Method generateKey is unimplemented."); } _reply.readException(); _result = _reply.readTypedObject(android.hardware.security.keymint.KeyCreationResult.CREATOR); } finally { _reply.recycle(); _data.recycle(); } return _result; } @Override public android.hardware.security.keymint.KeyCreationResult importKey(android.hardware.security.keymint.KeyParameter[] keyParams, int keyFormat, byte[] keyData, android.hardware.security.keymint.AttestationKey attestationKey) throws android.os.RemoteException { android.os.Parcel _data = android.os.Parcel.obtain(asBinder()); _data.markSensitive(); android.os.Parcel _reply = android.os.Parcel.obtain(); android.hardware.security.keymint.KeyCreationResult _result; try { _data.writeInterfaceToken(DESCRIPTOR); _data.writeTypedArray(keyParams, 0); _data.writeInt(keyFormat); _data.writeByteArray(keyData); _data.writeTypedObject(attestationKey, 0); boolean _status = mRemote.transact(Stub.TRANSACTION_importKey, _data, _reply, android.os.IBinder.FLAG_CLEAR_BUF); if (!_status) { throw new android.os.RemoteException("Method importKey is unimplemented."); } _reply.readException(); _result = _reply.readTypedObject(android.hardware.security.keymint.KeyCreationResult.CREATOR); } finally { _reply.recycle(); _data.recycle(); } return _result; } @Override public android.hardware.security.keymint.KeyCreationResult importWrappedKey(byte[] wrappedKeyData, byte[] wrappingKeyBlob, byte[] maskingKey, android.hardware.security.keymint.KeyParameter[] unwrappingParams, long passwordSid, long biometricSid) throws android.os.RemoteException { android.os.Parcel _data = android.os.Parcel.obtain(asBinder()); _data.markSensitive(); android.os.Parcel _reply = android.os.Parcel.obtain(); android.hardware.security.keymint.KeyCreationResult _result; try { _data.writeInterfaceToken(DESCRIPTOR); _data.writeByteArray(wrappedKeyData); _data.writeByteArray(wrappingKeyBlob); _data.writeByteArray(maskingKey); _data.writeTypedArray(unwrappingParams, 0); _data.writeLong(passwordSid); _data.writeLong(biometricSid); boolean _status = mRemote.transact(Stub.TRANSACTION_importWrappedKey, _data, _reply, android.os.IBinder.FLAG_CLEAR_BUF); if (!_status) { throw new android.os.RemoteException("Method importWrappedKey is unimplemented."); } _reply.readException(); _result = _reply.readTypedObject(android.hardware.security.keymint.KeyCreationResult.CREATOR); } finally { _reply.recycle(); _data.recycle(); } return _result; } @Override public byte[] upgradeKey(byte[] keyBlobToUpgrade, android.hardware.security.keymint.KeyParameter[] upgradeParams) throws android.os.RemoteException { android.os.Parcel _data = android.os.Parcel.obtain(asBinder()); _data.markSensitive(); android.os.Parcel _reply = android.os.Parcel.obtain(); byte[] _result; try { _data.writeInterfaceToken(DESCRIPTOR); _data.writeByteArray(keyBlobToUpgrade); _data.writeTypedArray(upgradeParams, 0); boolean _status = mRemote.transact(Stub.TRANSACTION_upgradeKey, _data, _reply, android.os.IBinder.FLAG_CLEAR_BUF); if (!_status) { throw new android.os.RemoteException("Method upgradeKey is unimplemented."); } _reply.readException(); _result = _reply.createByteArray(); } finally { _reply.recycle(); _data.recycle(); } return _result; } @Override public void deleteKey(byte[] keyBlob) throws android.os.RemoteException { android.os.Parcel _data = android.os.Parcel.obtain(asBinder()); _data.markSensitive(); android.os.Parcel _reply = android.os.Parcel.obtain(); try { _data.writeInterfaceToken(DESCRIPTOR); _data.writeByteArray(keyBlob); boolean _status = mRemote.transact(Stub.TRANSACTION_deleteKey, _data, _reply, android.os.IBinder.FLAG_CLEAR_BUF); if (!_status) { throw new android.os.RemoteException("Method deleteKey is unimplemented."); } _reply.readException(); } finally { _reply.recycle(); _data.recycle(); } } @Override public void deleteAllKeys() throws android.os.RemoteException { android.os.Parcel _data = android.os.Parcel.obtain(asBinder()); _data.markSensitive(); android.os.Parcel _reply = android.os.Parcel.obtain(); try { _data.writeInterfaceToken(DESCRIPTOR); boolean _status = mRemote.transact(Stub.TRANSACTION_deleteAllKeys, _data, _reply, android.os.IBinder.FLAG_CLEAR_BUF); if (!_status) { throw new android.os.RemoteException("Method deleteAllKeys is unimplemented."); } _reply.readException(); } finally { _reply.recycle(); _data.recycle(); } } @Override public void destroyAttestationIds() throws android.os.RemoteException { android.os.Parcel _data = android.os.Parcel.obtain(asBinder()); _data.markSensitive(); android.os.Parcel _reply = android.os.Parcel.obtain(); try { _data.writeInterfaceToken(DESCRIPTOR); boolean _status = mRemote.transact(Stub.TRANSACTION_destroyAttestationIds, _data, _reply, android.os.IBinder.FLAG_CLEAR_BUF); if (!_status) { throw new android.os.RemoteException("Method destroyAttestationIds is unimplemented."); } _reply.readException(); } finally { _reply.recycle(); _data.recycle(); } } @Override public android.hardware.security.keymint.BeginResult begin(int purpose, byte[] keyBlob, android.hardware.security.keymint.KeyParameter[] params, android.hardware.security.keymint.HardwareAuthToken authToken) throws android.os.RemoteException { android.os.Parcel _data = android.os.Parcel.obtain(asBinder()); _data.markSensitive(); android.os.Parcel _reply = android.os.Parcel.obtain(); android.hardware.security.keymint.BeginResult _result; try { _data.writeInterfaceToken(DESCRIPTOR); _data.writeInt(purpose); _data.writeByteArray(keyBlob); _data.writeTypedArray(params, 0); _data.writeTypedObject(authToken, 0); boolean _status = mRemote.transact(Stub.TRANSACTION_begin, _data, _reply, android.os.IBinder.FLAG_CLEAR_BUF); if (!_status) { throw new android.os.RemoteException("Method begin is unimplemented."); } _reply.readException(); _result = _reply.readTypedObject(android.hardware.security.keymint.BeginResult.CREATOR); } finally { _reply.recycle(); _data.recycle(); } return _result; } @Override public void deviceLocked(boolean passwordOnly, android.hardware.security.secureclock.TimeStampToken timestampToken) throws android.os.RemoteException { android.os.Parcel _data = android.os.Parcel.obtain(asBinder()); _data.markSensitive(); android.os.Parcel _reply = android.os.Parcel.obtain(); try { _data.writeInterfaceToken(DESCRIPTOR); _data.writeBoolean(passwordOnly); _data.writeTypedObject(timestampToken, 0); boolean _status = mRemote.transact(Stub.TRANSACTION_deviceLocked, _data, _reply, android.os.IBinder.FLAG_CLEAR_BUF); if (!_status) { throw new android.os.RemoteException("Method deviceLocked is unimplemented."); } _reply.readException(); } finally { _reply.recycle(); _data.recycle(); } } @Override public void earlyBootEnded() throws android.os.RemoteException { android.os.Parcel _data = android.os.Parcel.obtain(asBinder()); _data.markSensitive(); android.os.Parcel _reply = android.os.Parcel.obtain(); try { _data.writeInterfaceToken(DESCRIPTOR); boolean _status = mRemote.transact(Stub.TRANSACTION_earlyBootEnded, _data, _reply, android.os.IBinder.FLAG_CLEAR_BUF); if (!_status) { throw new android.os.RemoteException("Method earlyBootEnded is unimplemented."); } _reply.readException(); } finally { _reply.recycle(); _data.recycle(); } } @Override public byte[] convertStorageKeyToEphemeral(byte[] storageKeyBlob) throws android.os.RemoteException { android.os.Parcel _data = android.os.Parcel.obtain(asBinder()); _data.markSensitive(); android.os.Parcel _reply = android.os.Parcel.obtain(); byte[] _result; try { _data.writeInterfaceToken(DESCRIPTOR); _data.writeByteArray(storageKeyBlob); boolean _status = mRemote.transact(Stub.TRANSACTION_convertStorageKeyToEphemeral, _data, _reply, android.os.IBinder.FLAG_CLEAR_BUF); if (!_status) { throw new android.os.RemoteException("Method convertStorageKeyToEphemeral is unimplemented."); } _reply.readException(); _result = _reply.createByteArray(); } finally { _reply.recycle(); _data.recycle(); } return _result; } @Override public android.hardware.security.keymint.KeyCharacteristics[] getKeyCharacteristics(byte[] keyBlob, byte[] appId, byte[] appData) throws android.os.RemoteException { android.os.Parcel _data = android.os.Parcel.obtain(asBinder()); _data.markSensitive(); android.os.Parcel _reply = android.os.Parcel.obtain(); android.hardware.security.keymint.KeyCharacteristics[] _result; try { _data.writeInterfaceToken(DESCRIPTOR); _data.writeByteArray(keyBlob); _data.writeByteArray(appId); _data.writeByteArray(appData); boolean _status = mRemote.transact(Stub.TRANSACTION_getKeyCharacteristics, _data, _reply, android.os.IBinder.FLAG_CLEAR_BUF); if (!_status) { throw new android.os.RemoteException("Method getKeyCharacteristics is unimplemented."); } _reply.readException(); _result = _reply.createTypedArray(android.hardware.security.keymint.KeyCharacteristics.CREATOR); } finally { _reply.recycle(); _data.recycle(); } return _result; } @Override public byte[] getRootOfTrustChallenge() throws android.os.RemoteException { android.os.Parcel _data = android.os.Parcel.obtain(asBinder()); _data.markSensitive(); android.os.Parcel _reply = android.os.Parcel.obtain(); byte[] _result; try { _data.writeInterfaceToken(DESCRIPTOR); boolean _status = mRemote.transact(Stub.TRANSACTION_getRootOfTrustChallenge, _data, _reply, android.os.IBinder.FLAG_CLEAR_BUF); if (!_status) { throw new android.os.RemoteException("Method getRootOfTrustChallenge is unimplemented."); } _reply.readException(); _result = _reply.createFixedArray(byte[].class, 16); } finally { _reply.recycle(); _data.recycle(); } return _result; } @Override public byte[] getRootOfTrust(byte[] challenge) throws android.os.RemoteException { android.os.Parcel _data = android.os.Parcel.obtain(asBinder()); _data.markSensitive(); android.os.Parcel _reply = android.os.Parcel.obtain(); byte[] _result; try { _data.writeInterfaceToken(DESCRIPTOR); _data.writeFixedArray(challenge, 0, 16); boolean _status = mRemote.transact(Stub.TRANSACTION_getRootOfTrust, _data, _reply, android.os.IBinder.FLAG_CLEAR_BUF); if (!_status) { throw new android.os.RemoteException("Method getRootOfTrust is unimplemented."); } _reply.readException(); _result = _reply.createByteArray(); } finally { _reply.recycle(); _data.recycle(); } return _result; } @Override public void sendRootOfTrust(byte[] rootOfTrust) throws android.os.RemoteException { android.os.Parcel _data = android.os.Parcel.obtain(asBinder()); _data.markSensitive(); android.os.Parcel _reply = android.os.Parcel.obtain(); try { _data.writeInterfaceToken(DESCRIPTOR); _data.writeByteArray(rootOfTrust); boolean _status = mRemote.transact(Stub.TRANSACTION_sendRootOfTrust, _data, _reply, android.os.IBinder.FLAG_CLEAR_BUF); if (!_status) { throw new android.os.RemoteException("Method sendRootOfTrust is unimplemented."); } _reply.readException(); } finally { _reply.recycle(); _data.recycle(); } } @Override public int getInterfaceVersion() throws android.os.RemoteException { if (mCachedVersion == -1) { android.os.Parcel data = android.os.Parcel.obtain(asBinder()); android.os.Parcel reply = android.os.Parcel.obtain(); try { data.writeInterfaceToken(DESCRIPTOR); boolean _status = mRemote.transact(Stub.TRANSACTION_getInterfaceVersion, data, reply, 0); reply.readException(); mCachedVersion = reply.readInt(); } finally { reply.recycle(); data.recycle(); } } return mCachedVersion; } @Override public synchronized String getInterfaceHash() throws android.os.RemoteException { if ("-1".equals(mCachedHash)) { android.os.Parcel data = android.os.Parcel.obtain(asBinder()); android.os.Parcel reply = android.os.Parcel.obtain(); try { data.writeInterfaceToken(DESCRIPTOR); boolean _status = mRemote.transact(Stub.TRANSACTION_getInterfaceHash, data, reply, 0); reply.readException(); mCachedHash = reply.readString(); } finally { reply.recycle(); data.recycle(); } } return mCachedHash; } } static final int TRANSACTION_getHardwareInfo = (android.os.IBinder.FIRST_CALL_TRANSACTION + 0); static final int TRANSACTION_addRngEntropy = (android.os.IBinder.FIRST_CALL_TRANSACTION + 1); static final int TRANSACTION_generateKey = (android.os.IBinder.FIRST_CALL_TRANSACTION + 2); static final int TRANSACTION_importKey = (android.os.IBinder.FIRST_CALL_TRANSACTION + 3); static final int TRANSACTION_importWrappedKey = (android.os.IBinder.FIRST_CALL_TRANSACTION + 4); static final int TRANSACTION_upgradeKey = (android.os.IBinder.FIRST_CALL_TRANSACTION + 5); static final int TRANSACTION_deleteKey = (android.os.IBinder.FIRST_CALL_TRANSACTION + 6); static final int TRANSACTION_deleteAllKeys = (android.os.IBinder.FIRST_CALL_TRANSACTION + 7); static final int TRANSACTION_destroyAttestationIds = (android.os.IBinder.FIRST_CALL_TRANSACTION + 8); static final int TRANSACTION_begin = (android.os.IBinder.FIRST_CALL_TRANSACTION + 9); static final int TRANSACTION_deviceLocked = (android.os.IBinder.FIRST_CALL_TRANSACTION + 10); static final int TRANSACTION_earlyBootEnded = (android.os.IBinder.FIRST_CALL_TRANSACTION + 11); static final int TRANSACTION_convertStorageKeyToEphemeral = (android.os.IBinder.FIRST_CALL_TRANSACTION + 12); static final int TRANSACTION_getKeyCharacteristics = (android.os.IBinder.FIRST_CALL_TRANSACTION + 13); static final int TRANSACTION_getRootOfTrustChallenge = (android.os.IBinder.FIRST_CALL_TRANSACTION + 14); static final int TRANSACTION_getRootOfTrust = (android.os.IBinder.FIRST_CALL_TRANSACTION + 15); static final int TRANSACTION_sendRootOfTrust = (android.os.IBinder.FIRST_CALL_TRANSACTION + 16); static final int TRANSACTION_getInterfaceVersion = (android.os.IBinder.FIRST_CALL_TRANSACTION + 16777214); static final int TRANSACTION_getInterfaceHash = (android.os.IBinder.FIRST_CALL_TRANSACTION + 16777213); /** @hide */ public int getMaxTransactionId() { return 16777214; } } /** @hide */ public static final java.lang.String DESCRIPTOR = "android$hardware$security$keymint$IKeyMintDevice".replace('$', '.'); public static final int AUTH_TOKEN_MAC_LENGTH = 32; public android.hardware.security.keymint.KeyMintHardwareInfo getHardwareInfo() throws android.os.RemoteException; public void addRngEntropy(byte[] data) throws android.os.RemoteException; public android.hardware.security.keymint.KeyCreationResult generateKey(android.hardware.security.keymint.KeyParameter[] keyParams, android.hardware.security.keymint.AttestationKey attestationKey) throws android.os.RemoteException; public android.hardware.security.keymint.KeyCreationResult importKey(android.hardware.security.keymint.KeyParameter[] keyParams, int keyFormat, byte[] keyData, android.hardware.security.keymint.AttestationKey attestationKey) throws android.os.RemoteException; public android.hardware.security.keymint.KeyCreationResult importWrappedKey(byte[] wrappedKeyData, byte[] wrappingKeyBlob, byte[] maskingKey, android.hardware.security.keymint.KeyParameter[] unwrappingParams, long passwordSid, long biometricSid) throws android.os.RemoteException; public byte[] upgradeKey(byte[] keyBlobToUpgrade, android.hardware.security.keymint.KeyParameter[] upgradeParams) throws android.os.RemoteException; public void deleteKey(byte[] keyBlob) throws android.os.RemoteException; public void deleteAllKeys() throws android.os.RemoteException; public void destroyAttestationIds() throws android.os.RemoteException; public android.hardware.security.keymint.BeginResult begin(int purpose, byte[] keyBlob, android.hardware.security.keymint.KeyParameter[] params, android.hardware.security.keymint.HardwareAuthToken authToken) throws android.os.RemoteException; public void deviceLocked(boolean passwordOnly, android.hardware.security.secureclock.TimeStampToken timestampToken) throws android.os.RemoteException; public void earlyBootEnded() throws android.os.RemoteException; public byte[] convertStorageKeyToEphemeral(byte[] storageKeyBlob) throws android.os.RemoteException; public android.hardware.security.keymint.KeyCharacteristics[] getKeyCharacteristics(byte[] keyBlob, byte[] appId, byte[] appData) throws android.os.RemoteException; public byte[] getRootOfTrustChallenge() throws android.os.RemoteException; public byte[] getRootOfTrust(byte[] challenge) throws android.os.RemoteException; public void sendRootOfTrust(byte[] rootOfTrust) throws android.os.RemoteException; public int getInterfaceVersion() throws android.os.RemoteException; public String getInterfaceHash() throws android.os.RemoteException; }