SecTrustEvaluate() 是否在应用程序钥匙串中查找根证书?

2023-12-14

文档说:“如果验证叶证书所需的所有证书均未包含在信任管理对象中,则 SecTrustEvaluate 会在钥匙串搜索列表(请参阅 SecTrustSetKeychains)和系统的锚证书存储中(请参阅 SecTrustSetAnchorCertificates)搜索证书”。

然而,由于 SecTrustSetKeychains() 在 iOS 上不可用,因此尚不清楚该函数是否也会在应用程序的钥匙串中查找。


看来你已经有一段时间没有发帖了,所以我不确定你是否还需要答案。如果您的用例是“我受到了打击connection:didReceiveAuthenticationChallenge:,我想确保exact正在评估证书,那么您可以使用 iOS 内置信任方法或通过 Foundation API 做更多工作:(请注意,此处并未专门调用 SecTrustEvaulate,但可以很容易地添加它)

#import <Security/Security.h>
#import <CommonCrypto/CommonDigest.h>

从那里,您可以迭代完整的证书数组,并将其与挑战服务器信任参考的 SHA1 之类的内容进行比较:

// way #1 - iOS built-in ================================================ //
SecTrustRef trust = challenge.protectionSpace.serverTrust;
CFIndex cnt = SecTrustGetCertificateCount(trust);

// way #2 - build it in yourself from a file ============================ //
OSErr err;
NSString *path = [[NSBundle mainBundle] pathForResource:@"my.cert" 
                                                 ofType:@"der"];
NSData *derData = [NSData dataWithContentsOfFile:path];

SecCertificateRef myCert = 
    SecCertificateCreateWithData(NULL, (CFDataRef)derData);

CFMutableArrayRef array = CFArrayCreateMutable(NULL, 1, NULL);
CFArrayInsertValueAtIndex(array, 0, myCert);

err = SecTrustSetAnchorCertificates(trust, array);
if (err != errSecSuccess) {
    // do something smarter here, obviously, logging would be a start
    abort();
}
CFArrayRef certs = NULL;
err = SecTrustCopyCustomAnchorCertificates(trust, &certs);
if (err != errSecSuccess) {
    // again, better choices needed
    abort();
}
CFIndex cnt = CFArrayGetCount(certs);

// loop and compare 'em
for (int i = 0; i < cnt; i++) {
    SecCertificateRef cert = SecTrustGetCertificateAtIndex(trust, i);

    CFDataRef cdata = SecCertificateCopyData(cert);
    NSData *data = [[NSData alloc] initWithData:(NSData *)cdata];

    unsigned char digest_result[CC_SHA1_DIGEST_LENGTH];

    CC_SHA1(data.bytes, data.length, digest_result);
    // compare each byte with your in-code SHA1 bytes
    if (allBytesMatch) {
        NSURLCredential *cred = [NSURLCredential credentialForTrust:trust];
        [challenge.sender useCredential:cred 
             forAuthenticationChallenge:challenge];
    }
}
// don't forget to release & CFRelease all the alloc'ed stuff from above
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SecTrustEvaluate() 是否在应用程序钥匙串中查找根证书? 的相关文章

  • Swift 数组设置索引值不起作用

    我有一个方法 下面的内容 其中queue2只是一个 Int 我打印了很多东西 看看一切是否都正常 public func cool item Int println item println back queue2 insert item
  • 如何向 JSQMessagesViewController 单元添加自定义视图,使其包含一个带有一些按钮和文本视图的视图?

    我在用https github com jessesquires JSQMessagesViewController issues 1820 https github com jessesquires JSQMessagesViewCont
  • 如果我使用带有表单身份验证的 WCF,php 或 java 客户端将如何进行身份验证?

    我有一个通用的概念验证 WCF 服务 它使用表单身份验证来保护访问 当我的客户端是 NET 时 一切都很好 vb 代码如下 Dim client As SupplierServiceClient New SupplierServiceCli
  • iOS 4.2.1 丢失文件?

    这是我第一次使用最新的 xcode 3 2 5 和新的 iOS 4 2 1 当我在设备上运行应用程序时 我收到以下运行时错误 无法读取 Developer Platforms iPhoneOS platform DeviceSupport
  • 如何在 RestKit 中为同一类提供两条发布路线

    由于我无法弄清楚如何为同一个类设置两个不同的 POST 资源路径 因此我尝试手动创建 RKObjectLoader 请求 但它似乎不断发送 GET 请求而不是 POST 即使我已将方法设置为邮政 这是我的代码 User user User
  • 使用隐藏的 SFSafariViewController 获取 Safari cookie

    我正在阅读以下关于从移动网页到本机 iOS 9 应用程序对用户进行身份验证的文章 并且想知道如何最好地实现类似于下面讨论的隐藏控制器的隐藏 safari 视图控制器 https library launchkit io how ios 9
  • 对 UIImage 进行方形裁剪,导致图像拉伸

    当尝试执行 UIImage 的中心裁剪时 我得到以下结果 左侧是原始图像640 1136 右边是适合正方形的裁剪图像UIImageView at 320 320 turns to 我对比率元素进行了相当多的修改 以便它可以正确检测要修剪的量
  • 在 iOS 中录制音频并永久保存

    我制作了 2 个 iPhone 应用程序 可以录制音频并将其保存到文件中并再次播放 其中之一使用 AVAudiorecorder 和 AVAudioplayer 第二个是苹果的在这里说话 http developer apple com l
  • 在 Interface Builder 中的资产目录上使用图像

    是否可以直接在界面生成器上使用添加到资产目录中的图像 这是怎么做到的 在 UIImageView 属性上 我看不到任何引用资产目录上任何图像的选项 Import the images into the xcassets folder 单击右
  • 如何使用 ZBar 读取器的 scanCrop 属性?

    我正在使用 iPhone 的 ZBar SDK 来扫描条形码 我希望阅读器仅扫描特定的矩形而不是整个视图 为此需要将阅读器的 scanCrop 属性设置为所需的矩形 我很难理解必须设置的矩形参数 有人可以告诉我如果在纵向视图上它的坐标是 我
  • 更改 UITextField 辅助功能描述

    有没有办法将 UITextField 的辅助功能标签设置为 文本字段 之外的其他内容 因此 我不想将其称为 文本字段 而是将其命名为 代码验证字段 我的建议是不要试图在内置语音输出上智取系统 对于盲人用户来说 文本字段正在编辑 相当于 该项
  • iPad 3 中配备 Xcode 4.2 和 Retina 的 iOS 5.1

    我有一台装有 Mac OS X Snow Leopard 的 Mac 我可以添加 iOS 5 1 吗 使用 iPad 3 的新分辨率 我们将如何处理图像 因为如果该应用程序将在 iPhone 3GS 4 和 iPad 3 中运行 我认为我们
  • 如何在 Xcode 4 中通过一个操作归档多个目标

    我有一个包含多个目标的项目 这些目标都适用于不同的 iOS 应用程序 例如 一个用于精简版的目标 另一个用于专业版的目标 我想立即构建并归档我的所有应用程序 目前 我对每个目标都有一个方案 我用它来独立归档每个应用程序 但现在我必须开始归档
  • iPhone SDK - 在后台线程中运行重复进程

    我有一个iPhone我想在其中每隔一段时间在后台执行一个方法的应用程序1第二 所以在我的主线程中 我有以下代码UIViewController viewDidLoad NSTimer timerWithTimeInterval 1 0 ta
  • Monotouch 和本机 iOS 代码

    是否可以将使用 monotouch 编译的 C 库与单个应用程序中的 Objective C 前端链接起来 或者该应用程序必须是全部还是全无 这是可能的 但您不会从 MonoTouch 工具获得任何帮助 并且您无法摆脱这样一个事实 您仍然需
  • Cognito/IAM 策略和 S3 获取对象

    我正在尝试将 S3 和 Cognito 集成到我的 iOS 应用程序中 但到目前为止尚未成功 我相信该错误与我针对 Auth 和 Unauth 用户的 IAM 策略有关 所以这是我的政策 Version 2012 10 17 Stateme
  • 如何在ios中以编程方式添加水平间距和垂直间距?

    我在 ios 8 中创建了一个应用程序 因为我有 4 个可垂直使用的标签 它应该在某些条件下更改位置 所以我已禁用自动布局并以编程方式设置约束 现在的问题是 我可以设置水平和垂直位置 宽度和高度的约束 但我找不到任何方法来添加标签之间的水平
  • 如何自动为 Swift 类创建初始化程序?

    UPDATE 使用结构而不是类 struct 在很多方面都更好 它有自己的初始化器 这是我的模型课 是否有可能创建init自动方法 每次我都必须将所有变量一一初始化 这会花费很多时间 class Profile var id String
  • iOS 对 Google 云消息传递的支持

    我在谷歌的开发者控制台中看到 GCM 允许为 iOS 生成 API 密钥 我在网上搜索了有关如何在 iOS 应用程序中通过 GCM 实现推送通知的任何类型的文档 但没有找到答案 真的有可能在 iOS 应用程序中使用 GCM 实现推送通知 j
  • 下标:使用字符串枚举访问我的字典值

    我想做类似的事情 使用字符串枚举访问我的字典值 我试图重载字典的下标但没有成功 访问字典 let district address JsonKeys district 其中 JsonKeys 是 enum JsonKeys String c

随机推荐

  • iOS:让应用程序在离开屏幕时终止

    我已经构建了一个简单的应用程序来激活硬件中的某些东西 这并不重要 现在我只希望应用程序在用户离开屏幕 切换应用程序 接到电话 按主页按钮等时完全终止 我对所有应用程序状态都感到困惑 我找不到合适的地方来处理它 我想我需要监听 要睡觉 事件并
  • 使用 Redshift 作为 Spring 批处理作业存储库以及 Redshift 中 SEQUENCE 的替代方案

    我的项目中的要求之一是将 Spring Batch 架构放置在 Amazon Redshift 数据库上 我计划从 schema postgresql sql 作为基线开始 因为 redshift 基于 postgres 查看 Spring
  • 如何用C语言制作分钟和秒计时器

    我正在努力用 c 语言制作一个可以计算分钟和秒的计时器 我试图通过将时间打印到控制台来测试它 但它似乎没有显示任何内容 我的代码看起来有什么问题吗 include
  • 您可以使用具有自签名证书的 Service Worker 吗?

    我有用于测试的开发人员服务器 他们拥有 SSL 自签名证书 使我们能够通过 HTTPS 测试 Web 应用程序 但会出现明显的警告 表明证书不可验证 没关系 但我有一个 Service Worker 抛出错误navigator servic
  • Adobe Socket 策略文件服务器问题

    有没有人能够成功实现一项服务来为 FlashPlayer 提供所需的套接字策略文件 我正在运行 Adob e 提供的服务的 Python 实现 http www adobe com devnet flashplayer articles s
  • Jquery 无法理解这个问题

    The alert i onclick 绑定线在 3 个 div 上运行 但所有这些在单击时都会提醒最后设置的值i 我希望我所做的事情是有意义的 这很难解释 它不是警报 1 2 或 3 而是警报 3 3 3 Updates bar prev
  • 是否可以检查所有 Java 8 流元素是否满足给定谓词之一?

    使用流 API 我可以轻松检查所有元素是否满足给定条件 使用allMatch e gt predicate e 方法 我还会检查是否满足多个条件中的任何一个allMatch e gt predicateA e predicateB e pr
  • 蛇吃掉一个方块后如何让更多的敌人出现

    所以我做了一个蛇游戏 但为了让它变得更难 我添加了一个用户必须避免的敌人 红色方块 但我想要它 所以当蛇吃掉它的一种食物时 另一个敌人会随机产生 一个例子是 如果他吃了 5 个食物 那么游戏中将会有 6 个敌人 所以我想知道如何让另一个敌人
  • QT下载大文件错误

    When I try to downloading file up to 50mb example no problem but with a big files give the following error void MainWind
  • kmalloc 中 GFP_USER 标志有什么用?

    据我了解 在GFP USER标志 在调用kmalloc 用于为用户空间分配内存 这是否意味着分配的页面位于用户可以访问的内核空间中 这些页面是否需要mmapp ed 在用户空间中或者用户可以直接访问该地址 如果他们需要mmapp那么有什么区
  • 什么会导致 DOMDocument.load 无法从可访问的 URL 加载 XML?

    doc new DOMDocument if doc gt load http foo com bar xml good else wtf happened I can wget http foo com bar xml从 PHP 代码运行
  • Net Core:Swashbuckle 自动将操作 ID 设置为控制器操作方法

    当为现有的 500 多个控制器和相应的方法创建 Angular API 服务代理时 我们试图覆盖 Swashbuckle Swagger IO CodeGen 命名约定 目前正在将 Net Core 3 API 与 Angular Type
  • 如何知道Android解码器MediaCodec.createDecoderByType(type)是硬件解码器还是软件解码器?

    有没有办法确定使用 MediaCodec createDecoderByType type 接收的解码器是硬件解码器还是软件解码器 没有真正正式的标志来指示编解码器是硬件编解码器还是软件编解码器 但实际上 您可以这样做 MediaCodec
  • 读取 servlet 中的 JSON 值[重复]

    这个问题在这里已经有答案了 我将 jQuery AJAX POST 发布到 servlet 数据采用 JSON 字符串的形式 我不确定数据是否已发布 另外 我想通过从 json 对象获取登录名和密码来验证登录名和密码 这是代码片段
  • 发送请求并获取响应

    我的服务器上运行着一个 php 代码 我称之为 Web 服务 它处理发送整数值中的数据 我怎样才能得到它 这是我的请求 url NSString requestURL NSString stringWithFormat u p platfo
  • Bot 框架模拟器不工作

    我上周开始学习机器人框架 我决定从返回您的输入及其字符数的默认机器人项目开始 但不幸的是 我无法在机器人模拟器中测试机器人应用程序 它不能只发送我的输入 每当我转发输入时 它都会显示 无法发送 我的端点网址是http localhost 3
  • MYSQL中日期字段的格式化方法

    All 我需要在 MYSQL 中检索某种特定格式的日期 例如 它应该返回月 年 10 2009 我的MYSQL版本是5 1 谢谢 斯里尼瓦桑 日期格式功能 DATE FORMAT col m Y
  • jQuery 不会解析带有名为 option 的节点的 xml

    我使用 jQuery 来解析一些 XML 如下所示 function enumOptions xml xml find animal each function alert this text enumOptions
  • Matplotlib - imshow twiny() 问题

    我试图在 matplotlib imshow 图中有两个相互依赖的 x 轴 我将底部 x 轴作为半径的平方 而我希望顶部仅作为半径 到目前为止我已经尝试过 ax8 ax7 twiny ax8 sharex ax7 fmtr FuncForm
  • SecTrustEvaluate() 是否在应用程序钥匙串中查找根证书?

    文档说 如果验证叶证书所需的所有证书均未包含在信任管理对象中 则 SecTrustEvaluate 会在钥匙串搜索列表 请参阅 SecTrustSetKeychains 和系统的锚证书存储中 请参阅 SecTrustSetAnchorCer