记录在阅读源码过程中所获:
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
==================================================================以上