目标C:从Keychain导出私钥和公钥

Zes*_*est 7 objective-c keychain public-key-encryption private-key

我可以使用SecKeyGeneratePair [Apple CryptoExercise]功能创建公私密钥对.

Q1.钥匙串中的键显示为不显示任何名称.我们如何为键添加友好名称.在此输入图像描述

Q2.但是,如何导出以可用格式生成的公钥和私钥:

-----BEGIN RSA PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqCWtYiGnhAv... 
-----END RSA PUBLIC KEY-----
Run Code Online (Sandbox Code Playgroud)

和:

-----BEGIN PRIVATE KEY-----
-----END PRIVATE KEY-----
Run Code Online (Sandbox Code Playgroud)

请注意,它们可以从钥匙串手动导出,但如何使用目标C Apis实现.

任何帮助都会很明显.

这里有一个类似的问题,但没有任何答案:iPhone:如何将包含公钥位的SecKeyRef或NSData导出为PEM格式? 不需要仅为此目的使用OpenSSL.

Eri*_*sui 3

也许你可以参考Apple的这些文档:

\n\n

获取公钥加密和\n证书、密钥和信任服务的 SecKeyRef 对象程序员\xe2\x80\x99s 指南

\n\n
\n

获取公钥加密的 SecKeyRef 对象

\n\n

从钥匙串中提取密钥 如果您使用钥匙串中现有的公钥和私钥,请阅读证书、密钥和信任服务编程指南,了解如何检索该密钥的 SecKeychainItemRef 对象。

\n\n

获得 SecKeychainItemRef 后,您可以将其转换为\n SecKeyRef 以便与此 API 一起使用。

\n\n

导入现有的公钥和私钥 导入和导出公钥和私钥对比生成新密钥要复杂一些,因为常用的不同密钥格式有很多。

\n\n

此示例介绍如何导入和导出 PEM\n(隐私增强邮件)格式的密钥对。

\n
\n\n

将密钥导出到 CFDataRef 对象

\n\n
    \n
  1. 创建并填充密钥用法数组。
  2. \n
  3. 创建并填充关键属性数组。
  4. \n
  5. 在参数对象中设置密钥用法和属性字段。
  6. \n
  7. 适当设置外部格式和标志值。
  8. \n
  9. 使用 API 导出密钥如下。
  10. \n
\n\n
\n
OSStatus oserr = SecItemExport(publickey,\n    externalFormat, // See SecExternalFormat for details\n    flags, // See SecItemImportExportFlags for details\n    &params,\n    (CFDataRef *)&pkdata); if (oserr) {\n    fprintf(stderr, "SecItemExport failed (oserr=%d)\\n", oserr);\n    exit(-1); }\n
Run Code Online (Sandbox Code Playgroud)\n
\n