Macos iOS:如何调试kSecTrustResultRecoverableTrustFailure
我现在已经读了不少帖子和资料,但找不到确切的答案 在我的Macos iOS:如何调试kSecTrustResultRecoverableTrustFailure,macos,openssl,nsurlconnection,nsurlsession,keychain,Macos,Openssl,Nsurlconnection,Nsurlsession,Keychain,我现在已经读了不少帖子和资料,但找不到确切的答案 在我的SecTrustEvaluate()调用中,我得到了kSecTrustResultRecoverableTrustFailure,我想弄清楚为什么会这样(即,我想弄清楚信任链验证失败的确切位置和原因)。在OSX上似乎有一些相关的函数名为SecTrustGetResult,但现在即使在OSX上也不推荐使用这种函数 我如何找出验证失败的地方?我可以使用私有API,因为我只在调试期间使用它来理解内部到底发生了什么 谢谢在调用SecTrustEva
SecTrustEvaluate()
调用中,我得到了kSecTrustResultRecoverableTrustFailure
,我想弄清楚为什么会这样(即,我想弄清楚信任链验证失败的确切位置和原因)。在OSX上似乎有一些相关的函数名为SecTrustGetResult
,但现在即使在OSX上也不推荐使用这种函数
我如何找出验证失败的地方?我可以使用私有API,因为我只在调试期间使用它来理解内部到底发生了什么
谢谢在调用
SecTrustEvaluate()之后,只需使用SecTrustCopyProperties()
:
trustProperties
是一个字典数组,对证书链中的每个证书计算一个字典。每个字典都有一个条目title
,其中包含证书的名称,如果证书没有计算,它还包含一个条目error
,其中包含错误。例如,如果问题是证书已过期,error
的值将是CSSMERR\u TP\u cert\u expired
SecTrustRef trust = ...;
SecTrustResultType trustResult = kSecTrustResultOtherError;
OSStatus status = SecTrustEvaluate(trust, &trustResult);
if (trustResult == kSecTrustResultRecoverableTrustFailure) {
NSArray * trustProperties = (__bridge_transfer id)
SecTrustCopyProperties(certTrust);
}