From 14af577bafb56aaee27e78dd49bed1b975c20cc4 Mon Sep 17 00:00:00 2001 From: Aniruddha Mazumdar Date: Thu, 30 Oct 2025 00:05:46 +0530 Subject: [PATCH 1/2] Added a fallback function, since it seems like in some OEM versions of Android 16, the first serverTrusted function is not found --- .idea/modules.xml | 13 ---------- ...ificateTransparencyTrustManagerExtended.kt | 24 ++++++++++++++++++- 2 files changed, 23 insertions(+), 14 deletions(-) delete mode 100644 .idea/modules.xml diff --git a/.idea/modules.xml b/.idea/modules.xml deleted file mode 100644 index 465a99ec..00000000 --- a/.idea/modules.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/certificatetransparency/src/main/kotlin/com/appmattus/certificatetransparency/internal/verifier/CertificateTransparencyTrustManagerExtended.kt b/certificatetransparency/src/main/kotlin/com/appmattus/certificatetransparency/internal/verifier/CertificateTransparencyTrustManagerExtended.kt index 73d5fc83..0f8cdeec 100644 --- a/certificatetransparency/src/main/kotlin/com/appmattus/certificatetransparency/internal/verifier/CertificateTransparencyTrustManagerExtended.kt +++ b/certificatetransparency/src/main/kotlin/com/appmattus/certificatetransparency/internal/verifier/CertificateTransparencyTrustManagerExtended.kt @@ -76,6 +76,9 @@ internal class CertificateTransparencyTrustManagerExtended( } private val checkServerTrustedMethodApi36: Method? = try { + println("checkServerTrustedMethodApi36: availableMethods: ${delegate::class.java.declaredMethods.joinToString("\n") { method -> + "${method.name}(${method.genericParameterTypes.joinToString { it.typeName }}): ${method.genericReturnType.typeName}" + }}") delegate::class.java.getDeclaredMethod( "checkServerTrusted", Array::class.java, @@ -88,6 +91,20 @@ internal class CertificateTransparencyTrustManagerExtended( null } + private val checkServerTrustedMethodApi36Fallback: Method? = try { + println("checkServerTrustedMethodApi36: availableMethods: ${delegate::class.java.declaredMethods.joinToString("\n") { method -> + "${method.name}(${method.genericParameterTypes.joinToString { it.typeName }}): ${method.genericReturnType.typeName}" + }}") + delegate::class.java.getDeclaredMethod( + "checkServerTrusted", + Array::class.java, + String::class.java, + String::class.java + ) + } catch (ignored: NoSuchMethodException) { + null + } + private val isSameTrustConfigurationMethod: Method? = try { delegate::class.java.getDeclaredMethod("isSameTrustConfiguration", String::class.java, String::class.java) } catch (ignored: NoSuchMethodException) { @@ -188,7 +205,12 @@ internal class CertificateTransparencyTrustManagerExtended( host: String ): List { @Suppress("UNCHECKED_CAST") - val certs = checkServerTrustedMethodApi36!!.invoke(delegate, chain, ocspData, tlsSctData, authType, host) as List + val certs = try { + checkServerTrustedMethodApi36!!.invoke(delegate, chain, ocspData, tlsSctData, authType, host) as List + } catch (e: Exception) { + e.printStackTrace() + checkServerTrustedMethodApi36Fallback!!.invoke(delegate, chain, authType, host) as List + } val result = verifyCertificateTransparency(host, certs.toList()) From f1b689f3c2d96e4f442a53c398fb4acbde34a945 Mon Sep 17 00:00:00 2001 From: Aniruddha Mazumdar Date: Mon, 10 Nov 2025 11:54:05 +0530 Subject: [PATCH 2/2] restore modules.xml --- .idea/modules.xml | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 .idea/modules.xml diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 00000000..465a99ec --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file