diff --git a/app/src/main/java/org/matrix/TEESimulator/interception/keystore/InterceptorUtils.kt b/app/src/main/java/org/matrix/TEESimulator/interception/keystore/InterceptorUtils.kt index 861525b..c793de2 100644 --- a/app/src/main/java/org/matrix/TEESimulator/interception/keystore/InterceptorUtils.kt +++ b/app/src/main/java/org/matrix/TEESimulator/interception/keystore/InterceptorUtils.kt @@ -42,11 +42,15 @@ object InterceptorUtils { } /** Creates an `OverrideReply` parcel that indicates success with no data. */ - fun createSuccessReply(): BinderInterceptor.TransactionResult.OverrideReply { + fun createSuccessReply( + writeResultCode: Boolean = true + ): BinderInterceptor.TransactionResult.OverrideReply { val parcel = Parcel.obtain().apply { writeNoException() - writeInt(KeyStore.NO_ERROR) + if (writeResultCode) { + writeInt(KeyStore.NO_ERROR) + } } return BinderInterceptor.TransactionResult.OverrideReply(0, parcel) } diff --git a/app/src/main/java/org/matrix/TEESimulator/interception/keystore/Keystore2Interceptor.kt b/app/src/main/java/org/matrix/TEESimulator/interception/keystore/Keystore2Interceptor.kt index 8140925..904e8ef 100644 --- a/app/src/main/java/org/matrix/TEESimulator/interception/keystore/Keystore2Interceptor.kt +++ b/app/src/main/java/org/matrix/TEESimulator/interception/keystore/Keystore2Interceptor.kt @@ -104,7 +104,13 @@ object Keystore2Interceptor : AbstractKeystoreInterceptor() { val keyId = KeyIdentifier(callingUid, descriptor.alias) if (code == DELETE_KEY_TRANSACTION) { - KeyMintSecurityLevelInterceptor.cleanupKeyData(keyId) + if (KeyMintSecurityLevelInterceptor.getGeneratedKeyResponse(keyId) != null) { + KeyMintSecurityLevelInterceptor.cleanupKeyData(keyId) + SystemLogger.info( + "[TX_ID: $txId] Deleted cached keypair ${descriptor.alias}, replying with empty response." + ) + return InterceptorUtils.createSuccessReply(writeResultCode = false) + } return TransactionResult.ContinueAndSkipPost }