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

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

posted @ 2018-05-30 11:18  清水00  阅读(193)  评论(0编辑  收藏  举报