From 8623fe8b9e85cf1b99480587bdc21ffd140412c2 Mon Sep 17 00:00:00 2001 From: Giuliano Galea Date: Tue, 27 Jun 2017 10:29:29 +0200 Subject: [PATCH] SecTrust object now is conditionally unwrapped --- Source/WebSocket.swift | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/Source/WebSocket.swift b/Source/WebSocket.swift index 5efc1d5f..cd109cbb 100644 --- a/Source/WebSocket.swift +++ b/Source/WebSocket.swift @@ -455,9 +455,12 @@ open class WebSocket : NSObject, StreamDelegate { guard !sOperation.isCancelled, let s = self else { return } // Do the pinning now if needed if let sec = s.security, !s.certValidated { - let trust = outStream.property(forKey: kCFStreamPropertySSLPeerTrust as Stream.PropertyKey) as! SecTrust - let domain = outStream.property(forKey: kCFStreamSSLPeerName as Stream.PropertyKey) as? String - s.certValidated = sec.isValid(trust, domain: domain) + if let possibleTrust = outStream.property(forKey: kCFStreamPropertySSLPeerTrust as Stream.PropertyKey) { + let domain = outStream.property(forKey: kCFStreamSSLPeerName as Stream.PropertyKey) as? String + s.certValidated = sec.isValid(possibleTrust as! SecTrust, domain: domain) + } else { + s.certValidated = false + } if !s.certValidated { WebSocket.sharedWorkQueue.async { let errCode = InternalErrorCode.invalidSSLError.rawValue