Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 以编程方式从Mac密钥链存储和检索私钥_Objective C_Macos_Keychain_Private Key - Fatal编程技术网

Objective c 以编程方式从Mac密钥链存储和检索私钥

Objective c 以编程方式从Mac密钥链存储和检索私钥,objective-c,macos,keychain,private-key,Objective C,Macos,Keychain,Private Key,在Mac应用程序中,我需要以安全的方式存储从服务器发送给登录用户的私钥,并在需要时以编程方式将其检索回来。我知道钥匙链是存储私钥的最佳场所。是否有任何示例代码可用于实现这一点 我可以使用“Security.framework”的“SecKeychainItemImport”方法将私钥添加到密钥链中,但从密钥链检索私钥时遇到问题。我已经尝试使用“SecKeychainItemCopyAttributesAndData”和“SecKeychainItemCopyContent”方法从密钥链中获取私钥

在Mac应用程序中,我需要以安全的方式存储从服务器发送给登录用户的私钥,并在需要时以编程方式将其检索回来。我知道钥匙链是存储私钥的最佳场所。是否有任何示例代码可用于实现这一点

我可以使用“Security.framework”的“SecKeychainItemImport”方法将私钥添加到密钥链中,但从密钥链检索私钥时遇到问题。我已经尝试使用“SecKeychainItemCopyAttributesAndData”和“SecKeychainItemCopyContent”方法从密钥链中获取私钥。但到目前为止运气不好


我也在博客中读到提到在“.ssh”隐藏文件夹中存储私钥。但是我觉得将私钥存储在钥匙链中可以提供更高级别的安全性,这样其他人就无法轻松访问私钥。

是的,这里使用的是钥匙链。您需要先阅读文档,然后查看Apple的示例代码


钥匙链的一个目的是通过不向应用程序公开私钥的数据来保护私钥。为防止意外暴露私钥,默认情况下,这些项被标记为
CSSM_KEYATTR_可提取| CSSM_KEYATTR_敏感
;i、 例如,只能使用
SecKeychainItemExport
获取他们的数据,并且只能使用受密码保护的格式

安全框架中的API使用提供的密钥项加密/解密/签名/验证等数据,而不将原始密钥数据放入应用程序的地址空间。(这些操作通常由单独的特权进程完成。)


如果出于某种原因您确实需要访问私钥的原始位,则需要在将私钥导入密钥链时为此做好准备。您需要在
seckeychainitemport
keyParams
参数中将
keyAttributes
设置为
CSSM\u KEYATTR\u EXTRACTABLE
(即不带敏感位),您正在存储谁的密钥?您为用户生成的私钥,或您的应用程序私钥?私钥是为用户生成的。服务器将根据用户首次尝试登录时提供的信息为用户生成私钥。感谢您的回复。我正在寻找在Mac应用程序中存储/检索私钥。示例代码链接与iPhone相关。此外,我不寻找存储用户名和密码。我特别希望在Mac中以编程方式进行私钥管理。