kSecTrustResultUnspecified

kSecTrustResultUnspecified

我正在使用数字证书在我的应用程序中签署数据文件。当对SecKeyRawVerify的调用返回-9809时,下面的代码片段失败。它正在iPhone上运行。我什至无法确定此错误代码的确切含​​义

先前的安全框架调用加载并创建SecTrustRef,从中获取公钥似乎很好-没有错误。唯一的小问题是对SecTrustEvaluate的调用返回了kSecTrustResultUnspecified,但是我认为这是因为我使用的策略是SecPolicyCreateBasicX509调用返回的样板。

任何帮助或见解将不胜感激。

谢谢

SecKeyRef keyRef = SecTrustCopyPublicKey (trustRef);

fileURL = [[NSBundle mainBundle] URLForResource:@"data" withExtension:@"txt"];
NSData *data = [NSData dataWithContentsOfURL:fileURL];

fileURL = [[NSBundle mainBundle] URLForResource:@"data" withExtension:@"sgn"];
NSData *signature = [NSData dataWithContentsOfURL:fileURL];

NSLog(@"Hash block size = %zu",SecKeyGetBlockSize(keyRef));

status = SecKeyRawVerify (keyRef,
                          kSecPaddingPKCS1SHA1,
                          (const uint8_t *)[data bytes],
                          (size_t)[data length],
                          (const uint8_t *)[signature bytes],
                          (size_t)[signature length]
                          );

最佳答案

该错误(以及其他相关错误)在/System/Library/Frameworks/Security.framework/Headers/SecureTransport.h中定义为errSSLCrypto。那里的评论称其为“潜在的密码错误”,这并不是特别的描述性描述。

一种想法:kSecTrustResultUnspecified表示信任级别等于默认系统策略。链中的所有证书都受信任吗?

10-08 18:12