我现在已经阅读了很多帖子和资料,但找不到明确的答案。

我在我的 kSecTrustResultRecoverableTrustFailure 调用中收到 SecTrustEvaluate(),我想弄清楚为什么会这样(即我想弄清楚信任链验证究竟在哪里失败以及为什么)。在 OSX 上似乎有一些相关的函数叫做 SecTrustGetResult ,但现在即使在 OSX 上也不推荐使用

我怎样才能找出验证失败的地方?我可以使用私有(private) API,因为我仅在调试期间使用它来了解内部究竟发生了什么。

谢谢

最佳答案

调用 SecTrustCopyProperties() 后只需使用 SecTrustEvaluate() :

SecTrustRef trust = ...;
SecTrustResultType trustResult = kSecTrustResultOtherError;
OSStatus status = SecTrustEvaluate(trust, &trustResult);
if (trustResult == kSecTrustResultRecoverableTrustFailure) {
    NSArray * trustProperties = (__bridge_transfer id)
        SecTrustCopyProperties(certTrust);
}
trustProperties 是一个字典数组,评估的证书链中的每个证书一个字典。每个字典都有一个条目 title ,包含证书的名称,如果证书没有评估,它还包含一个包含错误的条目 error 。例如。如果问题是证书已过期,则 error 的值将是 CSSMERR_TP_CERT_EXPIRED

关于macos - iOS : how to debug kSecTrustResultRecoverableTrustFailure,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25489900/

10-09 06:46