gpt4 book ai didi

ios - 设置 CFStream 属性失败

转载 作者:太空宇宙 更新时间:2023-11-03 14:10:37 26 4
gpt4 key购买 nike

我正在尝试与 SNI 建立 TLS 连接。问题是第一个属性设置调用返回 1,表示它已被接受。下面两个返回0,表示没有通过。原因可能是什么?

有时我必须添加自己的证书才能被信任,但据我所知,这将在打开流后完成,所以这不应该是任何原因。

此外,kCFStreamSocketSecurityLevelNegotiatedSSL 是否支持 tls1.2,因为没有常量可以直接选择它?

    var tempInputStream: Unmanaged<CFReadStream>?
var tempOutputStream: Unmanaged<CFWriteStream>?

CFStreamCreatePairWithSocketToHost(nil, address as CFStringRef, port, &tempInputStream, &tempOutputStream)

let cfInputStream: CFReadStream = tempInputStream!.takeRetainedValue()
let cfOutputStream: CFWriteStream = tempOutputStream!.takeRetainedValue()

//setting properties
print(CFReadStreamSetProperty(cfInputStream, kCFStreamPropertySocketSecurityLevel, kCFStreamSocketSecurityLevelNegotiatedSSL))
print(CFReadStreamSetProperty(cfInputStream, kCFStreamSSLValidatesCertificateChain, kCFBooleanFalse))
print(CFReadStreamSetProperty(cfInputStream, kCFStreamSSLPeerName, "peer.address"))


let inputStream: NSInputStream = cfInputStream
let outputStream: NSOutputStream = cfOutputStream

inputStream.delegate = self
inputStream.delegate = self

inputStream.scheduleInRunLoop(NSRunLoop.currentRunLoop(), forMode: NSDefaultRunLoopMode)
outputStream.scheduleInRunLoop(NSRunLoop.currentRunLoop(), forMode: NSDefaultRunLoopMode)

inputStream.open()
outputStream.open()

最佳答案

kCFStreamSSLValidatesCertificateChainkCFStreamSSLPeerName 不是流属性。它们是 SSL 设置属性。您需要将它们全部收集到字典中并将其分配给 kCFStreamPropertySSLSettings:

let ssl = [
String(kCFStreamSSLValidatesCertificateChain): kCFBooleanFalse, // You an probably use "false" here
String(kCFStreamSSLPeerName): "peer.address"
]

print(CFReadStreamSetProperty(cfInputStream, kCFStreamPropertySSLSettings, ssl))

关于ios - 设置 CFStream 属性失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31454650/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com