作为在OSX上使用Cocoa编程创建VPN连接程序的一部分,我需要将PPP密码存储在系统钥匙串中。当我尝试使用钥匙串API执行此操作时,调用SecKeychainAddGenericPassword后出现以下错误:
“无法写入文件。可能已使用不足的访问权限打开。”
这是我正在使用的代码:
“无法写入文件。可能已使用不足的访问权限打开。”
这是我正在使用的代码:
- (void)storePasswordInKeychain
{
SecKeychainRef keychain = nil;
err = SecKeychainCopyDomainDefault(kSecPreferencesDomainSystem, &keychain);
if (err != errSecSuccess) {
NSLog(@"Error getting system keychain: %@", SecCopyErrorMessageString(err, NULL));
} else {
NSLog(@"Succeeded opening keychain: %@", SecCopyErrorMessageString(err, NULL));
SecKeychainItemRef item = nil;
err = SecKeychainUnlock(keychain, 0, NULL, FALSE);
NSLog(@"Keychain unlocked: %@", SecCopyErrorMessageString(err, NULL));
err = SecKeychainAddGenericPassword (keychain,
3, "VPN",
8, "username",
8, "password",
&item);
NSLog(@"Result of storing password: %@", SecCopyErrorMessageString(err, NULL));
}
}
这个讨论如何写入System.keychain?似乎表明我需要在程序内部调用/usr/bin/security命令行,但是Keychain API的目的似乎是避免那种破解。
有人能指导我在System keychain中存储新密码的正确方法吗?谢谢。