I am using below code for SSL pinning in Kotlin Multiplatform using Ktor.
I am having crash at this line of code
val remoteCertificateData : NSData = SecCertificateCopyData(certificate) as NSData 
Here is the function.
override fun URLSession(
            session: NSURLSession,
            didReceiveChallenge: NSURLAuthenticationChallenge,
            completionHandler: (NSURLSessionAuthChallengeDisposition, NSURLCredential?) -> Unit
        ) {
            val serverTrust = didReceiveChallenge.protectionSpace.serverTrust
            val certificate = SecTrustGetCertificateAtIndex(serverTrust,0)
            var result: SecTrustResultType = 0u
            memScoped{
                val nativeResult = alloc<SecTrustResultTypeVar>()
                nativeResult.value = result
                SecTrustEvaluate(serverTrust!!, nativeResult.ptr)
            }
            val remoteCertificateData : NSData = SecCertificateCopyData(certificate) as NSData                                
            val bundle = NSBundle.bundleForClass(objc_getRequiredClass("IosClientEngine"))                
            val pathToCert = bundle.pathForResource("MyCertificate","cer")                
            val localCertificate : NSData = NSData.dataWithContentsOfFile(pathToCert!!)!!
            if (localCertificate == remoteCertificateData) {
                completionHandler(NSURLSessionAuthChallengeUseCredential,NSURLCredential.create(serverTrust))                    
            } else {
                completionHandler(NSURLSessionAuthChallengeUseCredential, null)                    
            }
        }
