gpt4 book ai didi

macos - 如何写入 OSX 系统钥匙串(keychain)?

转载 作者:行者123 更新时间:2023-12-03 16:20:34 26 4
gpt4 key购买 nike

作为在 OSX 中使用 Cocoa 以编程方式创建 VPN 连接的过程的一部分,我需要将 PPP 密码存储在系统钥匙串(keychain)中。当我尝试使用钥匙串(keychain) 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));
}
}

讨论How to write to the System.keychain?看起来我需要从程序中对/usr/bin/security 进行命令行调用,但 Keychain API 的目的似乎是避免这种黑客攻击。

有人能给我指出在系统钥匙串(keychain)中存储新密码的正确方向吗?谢谢。

最佳答案

向系统钥匙串(keychain)写入内容时需要 root 权限。对于 xcode 调试,您只需“EditScheme”(从菜单中选择“Product->EditScheme...->Run->Info->Debug process as->root”)。嗯,我的xcode版本是6.1,也许不同的xcode版本有一些差异。或者只需通过 sudo 您的应用程序使用命令行。希望这会有所帮助。

关于macos - 如何写入 OSX 系统钥匙串(keychain)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9837784/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com