无法实现Swift SSLCreateContext
问题描述:
我是iOS开发新手,尝试实现到自定义端口的SSL连接。无法实现Swift SSLCreateContext
我发现的代码从这个答案是最好/最简单的实现通过套接字的安全连接的https://stackoverflow.com/a/30733961/2306428
不过,我收到这些错误:
Use of unresolved identifier 'kSSLClientSide' Use of unresolved identifier 'kSSLStreamType' Use of unresolved identifier 'kSSLSessionOptionBreakOnClientAuth'
我已经确认并我正在运行Swift版本2.1.1,使用iOS 9.2 SDK和Xcode 7.2。我甚至尝试添加import Security
,但没有任何效果。
这些常数没有找到的原因是什么?
被测试的线是在这里:https://github.com/ksred/bank-ios/blob/master/Bank/TCPClient.swift#L209
答
请使用在斯威夫特声明的标识符:
if let sslContext = SSLCreateContext(kCFAllocatorDefault, SSLProtocolSide.ClientSide, SSLConnectionType.StreamType) {
SSLSetIOFuncs(sslContext, sslReadCallback, sslWriteCallback)
SSLSetConnection(sslContext, &socketfd)
SSLSetSessionOption(sslContext, SSLSessionOption.BreakOnClientAuth, true)
SSLHandshake(sslContext)
}
谢谢!这解决了问题中描述的错误。 – ksred
Ivan,你可以显示sslReadCallback和sslWriteCallback的定义吗?当我尝试'func sslReadFunc(conn:SSLConnectionRef,data:UnsafeMutableRawPointer,dataLength:UnsafeMutablePointer) - > OSStatus'时,出现错误。 –
Gargoyle