我正在使用SecItemCopyMatching
访问 iOS 钥匙串。-34018
从后台重新启动应用程序后,我大约有一百分之一得到结果代码。该文档指出:
为钥匙串服务分配的错误空间是不连续的:–25240 到 –25279 和 –25290 到 –25329。Keychain Item Services 也可能返回 noErr (0) 或 paramErr (–50) 或 CSSM 结果代码
所以这似乎-34018
是一个'CSSM结果代码'。我已按照建议的链接进行操作,但找不到结果代码。
-34018
结果代码是什么?如何获得更可靠的钥匙串访问?
- (NSData *)getKeychainData:(NSString *)key
{
NSDictionary *query = @{
(__bridge id)kSecClass:(__bridge id)kSecClassGenericPassword,
(__bridge id)kSecAttrService:SEC_ATTR_SERVICE,
(__bridge id)kSecAttrAccount:key,
(__bridge id)kSecReturnData:@YES
};
CFDataRef result = nil;
OSStatus status = SecItemCopyMatching((__bridge CFDictionaryRef)query, (CFTypeRef *)&result);
if(status == errSecItemNotFound) {
return nil;
}
if(status == noErr) {
return CFBridgingRelease(result);
} else {
[self logError:[NSString stringWithFormat:@"SecItemCopyMatching status %d", (int)status] :nil];
return nil;
}
}