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 82b5648..6ed2570 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 @@ -237,6 +237,15 @@ object Keystore2Interceptor : AbstractKeystoreInterceptor() { ) return InterceptorUtils.createTypedObjectReply(info.response) } + val teeResp = KeyMintSecurityLevelInterceptor.findTeeResponseByKeyId( + callingUid, descriptor.nspace + ) + if (teeResp != null) { + SystemLogger.info( + "[TX_ID: $txId] Found TEE response via KEY_ID nspace=${descriptor.nspace}" + ) + return InterceptorUtils.createTypedObjectReply(teeResp) + } } return TransactionResult.ContinueAndSkipPost } diff --git a/app/src/main/java/org/matrix/TEESimulator/interception/keystore/shim/KeyMintSecurityLevelInterceptor.kt b/app/src/main/java/org/matrix/TEESimulator/interception/keystore/shim/KeyMintSecurityLevelInterceptor.kt index f651bd5..a41a8f4 100644 --- a/app/src/main/java/org/matrix/TEESimulator/interception/keystore/shim/KeyMintSecurityLevelInterceptor.kt +++ b/app/src/main/java/org/matrix/TEESimulator/interception/keystore/shim/KeyMintSecurityLevelInterceptor.kt @@ -1244,6 +1244,14 @@ class KeyMintSecurityLevelInterceptor( ?.value } + fun findTeeResponseByKeyId(callingUid: Int, nspace: Long?): KeyEntryResponse? { + if (nspace == null || nspace == 0L) return null + return teeResponses.entries + .filter { (keyId, _) -> keyId.uid == callingUid } + .find { (_, response) -> response.metadata?.key?.nspace == nspace } + ?.value + } + fun getPatchedChain(keyId: KeyIdentifier): Array? = patchedChains[keyId] fun isAttestationKey(keyId: KeyIdentifier): Boolean = attestationKeys.contains(keyId)