AFNetWorking3.0阅读之AFSecurityPolicy

记录在阅读源码过程中所获:

1.该类用于针对HTTPS配置时的证书是否正确的验证

2.该类实现基于系统库Security。使用SecTrustRef对象进行验证。SecTrustRef对象是一种执行信任链验证的抽象实体, 包含着验证策略(SecPolicyRef)

以及一系列受信任证书SecCertificateRef),而我们能做的也是修改这两样东西而已

3.在二进制的文件中获取公钥的过程是这样

① NSData *certificate -> CFDataRef -> (SecCertificateCreateWithData) -> SecCertificateRefallowedCertificate

②判断SecCertificateRef allowedCertificate 是不是空,如果为空,直接跳转到后边的代码

allowedCertificate 保存在allowedCertificates数组中

allowedCertificates -> (CFArrayCreate) -> SecCertificateRef allowedCertificates[1]

⑤根据函数SecPolicyCreateBasicX509() -> SecPolicyRef policy

SecTrustCreateWithCertificates(tempCertificates, policy, &allowedTrust) -> 生成SecTrustRef allowedTrust

SecTrustEvaluate(allowedTrust, &result) 校验证书

(__bridge_transfer id)SecTrustCopyPublicKey(allowedTrust) -> 得到公钥id allowedPublicKey

4.__Require_Quiet 和 __Require_noErr_Quiet 这两个宏定义。

我们看看他们内部是怎么定义的

可以看出这个宏的用途是:当条件返回false时,执行标记以后的代码

可以看出这个宏的用途是:当条件抛出异常时,执行标记以后的代码

goto为跳转语法

 

5.HTTPS认证

==================================================================

摘自http://blog.csdn.net/yuwuchaio/article/details/50469183

==================================================================以上

猜你喜欢

转载自www.cnblogs.com/kaisi/p/9109885.html