• AFNetWorking3.0源码阅读


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

    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

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

  • 相关阅读:
    JQuery Ajax使用及注意事项
    边框叠加
    AngularJS的相关应用
    JS基础,你需要掌握的要点!
    JS基础部分小结
    JS的Dom树小结
    JQuery事件与动画
    HTML
    项目
    BZOJ4851: [Jsoi2016]位运算
  • 原文地址:https://www.cnblogs.com/kaisi/p/9109885.html
Copyright © 2020-2023  润新知