Reputation: 3843
I am using the following code when trying to connect a GCDAsyncSocket but I don't know how to get it to expect SSL. Right now my code is saying that it is connected but going to disconnected seconds later. The socket never shows me as connecting.
func connect(){
bsocket = GCDAsyncSocket(delegate: self, delegateQueue: DispatchQueue.main)
bsocket.delegate = self
do {
try bsocket.connect(toHost: self.socketHost(), onPort: 443)
} catch let e {
NSLog("Error connecting socket: \(e)")
}
}
func socket(_ sock: GCDAsyncSocket, didRead data: Data, withTag tag: Int) {
let response = NSString(data: data, encoding: String.Encoding.utf8.rawValue)
print("Received Response: \(response)")
bsocket.readData(withTimeout: -1.0, tag: 0)
}
func disconnect(){
}
func socket(_ socket : GCDAsyncSocket, didConnectToHost host:String, port p:UInt16)
{
var settings = [AnyHashable: Any](minimumCapacity: 3)
settings[(kCFStreamSSLPeerName as String)] = self.socketHost()
// // Allow self-signed certificates
settings[(kCFStreamSSLPeerName as String)] = Int(true)
// // In fact, don't even validate the certificate chain
settings[(kCFStreamSSLValidatesCertificateChain as String)] = Int(false)
print("Connected to \(host) on port \(p).")
socket.readData(withTimeout: -1.0, tag: 0)
// sendRequest()
}
func socketDidDisconnect(_ sock: GCDAsyncSocket, withError err: Error?) {
NSLog("Socket Disconnected: \(err)")
}
func socket(_ sock:GCDAsyncSocket, didAcceptNewSocket newSocket:GCDAsyncSocket)
{
NSLog("New socket received: \(newSocket)")
}
Upvotes: 0
Views: 1105
Reputation: 1820
You seem to be setting the value for the kCFStreamSSLPeerName key twice:
settings[(kCFStreamSSLPeerName as String)] = self.socketHost()
// // Allow self-signed certificates
settings[(kCFStreamSSLPeerName as String)] = Int(true)
Also, if you check out https://github.com/robbiehanson/CocoaAsyncSocket/blob/cae3732972501bbb39720be6213f30dc99d9f153/Source/GCD/GCDAsyncSocket.h you'll see that kCFStreamSSLValidatesCertificateChain is now an unavailable key and will throw an exception.
Upvotes: 0