kCFStreamSSLLevel 和 kCFStreamPropertySocketSecurityLevel 之间的



有人可以解释一下这两个属性之间的区别吗?它们接受 https://developer.apple.com/documentation/corefoundation/cfstream/cfstream_socket_security_level_constants 中定义的同一组值

kCFStreamSSLLevelkCFStreamPropertySSLSettings字典中设置并直接kCFStreamPropertySocketSecurityLevel

文档没有太多关于它们的内容。

查看源代码,在内部设置属性kCFStreamPropertySocketSecurityLevel只会创建一个字典,其中存储键kCFStreamSSLLevel的属性值,并且创建的字典将传递给设置属性kCFStreamPropertySSLSettings时也调用的函数。

所以这段代码:

CFReadStreamSetProperty(
stream, 
kCFStreamPropertySocketSecurityLevel,  
kCFStreamSocketSecurityLevelNegotiatedSSL);

等效于此代码

CFMutableDictionaryRef settings =   
CFDictionaryCreateMutable(
NULL, 0,
&kCFTypeDictionaryKeyCallBacks,
&kCFTypeDictionaryValueCallBacks);
CFDictionaryAddValue(
settings, 
kCFStreamSSLLevel,
kCFStreamSocketSecurityLevelNegotiatedSSL);
CFReadStreamSetProperty(
stream, 
kCFStreamPropertySSLSettings,  
settings);

最新更新