有人可以解释一下这两个属性之间的区别吗?它们接受 https://developer.apple.com/documentation/corefoundation/cfstream/cfstream_socket_security_level_constants 中定义的同一组值
kCFStreamSSLLevel
kCFStreamPropertySSLSettings
字典中设置并直接kCFStreamPropertySocketSecurityLevel
。
文档没有太多关于它们的内容。
查看源代码,在内部设置属性kCFStreamPropertySocketSecurityLevel
只会创建一个字典,其中存储键kCFStreamSSLLevel
的属性值,并且创建的字典将传递给设置属性kCFStreamPropertySSLSettings
时也调用的函数。
所以这段代码:
CFReadStreamSetProperty(
stream,
kCFStreamPropertySocketSecurityLevel,
kCFStreamSocketSecurityLevelNegotiatedSSL);
等效于此代码
CFMutableDictionaryRef settings =
CFDictionaryCreateMutable(
NULL, 0,
&kCFTypeDictionaryKeyCallBacks,
&kCFTypeDictionaryValueCallBacks);
CFDictionaryAddValue(
settings,
kCFStreamSSLLevel,
kCFStreamSocketSecurityLevelNegotiatedSSL);
CFReadStreamSetProperty(
stream,
kCFStreamPropertySSLSettings,
settings);