我正在尝试实现到SecureTransport C 库的快速桥梁。我“认为”只要我知道如何在我的 sslReadCallback/sslWriteCallback 实现中从中读取内容,我就可以将任何东西作为连接传递。这是我正在使用的假设。当我查看 SSLConnectionRef 的定义时,似乎是这种情况:
/* Opaque reference to an I/O connection (socket, endpoint, etc.) */
public typealias SSLConnectionRef = UnsafePointer<Void>
所以我只需要把我的类变成 UnsafePointer。不幸的是,编译器不喜欢我的尝试。任何人都可以给我提示吗?
func startSSLProcess()
{
self.sslContext = SSLCreateContext(kCFAllocatorDefault, SSLProtocolSide.ClientSide, SSLConnectionType.StreamType)
if let sslContext = self.sslContext
{
SSLSetIOFuncs(sslContext, sslReadCallback, sslWriteCallback)
SSLSetConnection(sslContext, UnsafePointer(self)) // <-- error
SSLSetSessionOption(sslContext, SSLSessionOption.BreakOnClientAuth, true)
SSLHandshake(sslContext)
}
}
在 GCDAsyncSocket 中,它执行以下操作:
status = SSLSetConnection(sslContext, (__bridge SSLConnectionRef)self);
和
SubZeroGCDAsyncSocket *asyncSocket = (__bridge SubZeroGCDAsyncSocket *)connection;
..解开。这相当于什么?
非常感谢!