Merge 24Q3 (ab/11976889) to aosp-main-future

Bug: 347831320
Merged-In: I4cc82131bb070a37cb6ed9dbe9d7cccc7ab5ee89
Change-Id: Ica12b0b35751b17c1ee50fc1aa72c0fd075e0f71
diff --git a/staging/security/see/hwcrypto/aidl/aidl_api/android.hardware.security.see/current/android/hardware/security/see/hwcrypto/IHwCryptoKey.aidl b/staging/security/see/hwcrypto/aidl/aidl_api/android.hardware.security.see/current/android/hardware/security/see/hwcrypto/IHwCryptoKey.aidl
index 7efcdd6..b8da5c4 100644
--- a/staging/security/see/hwcrypto/aidl/aidl_api/android.hardware.security.see/current/android/hardware/security/see/hwcrypto/IHwCryptoKey.aidl
+++ b/staging/security/see/hwcrypto/aidl/aidl_api/android.hardware.security.see/current/android/hardware/security/see/hwcrypto/IHwCryptoKey.aidl
@@ -36,6 +36,7 @@
   android.hardware.security.see.hwcrypto.IHwCryptoKey.DiceCurrentBoundKeyResult deriveCurrentDicePolicyBoundKey(in android.hardware.security.see.hwcrypto.IHwCryptoKey.DiceBoundDerivationKey derivationKey);
   android.hardware.security.see.hwcrypto.IHwCryptoKey.DiceBoundKeyResult deriveDicePolicyBoundKey(in android.hardware.security.see.hwcrypto.IHwCryptoKey.DiceBoundDerivationKey derivationKey, in byte[] dicePolicyForKeyVersion);
   android.hardware.security.see.hwcrypto.IHwCryptoKey.DerivedKey deriveKey(in android.hardware.security.see.hwcrypto.IHwCryptoKey.DerivedKeyParameters parameters);
+  android.hardware.security.see.hwcrypto.IHwCryptoOperations getHwCryptoOperations();
   enum DeviceKeyId {
     DEVICE_BOUND_KEY,
     BATCH_KEY,
diff --git a/staging/security/see/hwcrypto/aidl/android/hardware/security/see/hwcrypto/IHwCryptoKey.aidl b/staging/security/see/hwcrypto/aidl/android/hardware/security/see/hwcrypto/IHwCryptoKey.aidl
index 939014a..075825d 100644
--- a/staging/security/see/hwcrypto/aidl/android/hardware/security/see/hwcrypto/IHwCryptoKey.aidl
+++ b/staging/security/see/hwcrypto/aidl/android/hardware/security/see/hwcrypto/IHwCryptoKey.aidl
@@ -15,6 +15,7 @@
  */
 package android.hardware.security.see.hwcrypto;
 
+import android.hardware.security.see.hwcrypto.IHwCryptoOperations;
 import android.hardware.security.see.hwcrypto.IOpaqueKey;
 import android.hardware.security.see.hwcrypto.KeyPolicy;
 
@@ -183,4 +184,19 @@
      *      <code>HalErrorCode</code> otherwise.
      */
     DerivedKey deriveKey(in DerivedKeyParameters parameters);
+
+    /*
+     * getHwCryptoOperations() - Returns an interface used to work on opaque keys. This interface
+     *                           can also be used to operate on any opaque key generated by
+     *                           hwkeyDeriveVersioned, even if this key has been generated after
+     *                           retrieving a IHwCryptoOperations binder object, as long as the
+     *                           parent IHwCryptoDeviceKeyAccess is not dropped between retrieving
+     *                           the IHwCryptoOperations binder object and deriving the key.
+     *                           IHwCryptoOperations can also be used to create opaque keys that
+     *                           are not bound to the device.
+     *
+     * Return:
+     *      IHwCryptoOperations on success
+     */
+    IHwCryptoOperations getHwCryptoOperations();
 }