【问题标题】:Export SecKey to pkcs8 format将 SecKey 导出为 pkcs8 格式
【发布时间】:2018-03-24 13:14:08
【问题描述】:

目前我正在使用 iOS 安全框架生成 RSAKeyPair

statusCode = SecKeyGeneratePair(keyPairAttributes as CFDictionary, &newPublicKey, &newPrivateKey)

然后我想使用 PKCS8 将这些密钥导出为 PEM 格式。苹果提供的导出密钥的标准方法是这样的:

let cfData = SecKeyCopyExternalRepresentation(self, &error)

但是这个数据给了我 PKCS1 格式的密钥。有没有办法将 PKCS1 格式转换为 PKCS8?

到目前为止,我的所有研究都让我对如何转换这些格式一无所知。

【问题讨论】:

  • 我可以说 1. PKCS#8 包含 PKCS#1 密钥和 2. 似乎有 ASN.1 编码实用程序可用于包装具有相关结构的 PKCS#1 密钥。但是,根据当前的 Apple 文档(情况越来越糟,CCCrypt 是一种耻辱,但这方式更糟)我看不到任何创建任何 ASN.1 结构的示例。
  • 你有没有办法转换成pkcs8?

标签: ios swift cryptography rsa


【解决方案1】:

我不能翻译成 Swift,但这是接近 Objective-C 的:

SecItemImportExportKeyParameters keyParams = {};
keyParams.version = SEC_KEY_IMPORT_EXPORT_PARAMS_VERSION;
keyParams.passphrase = you_need_a_cfstringref_here;

SecExternalFormat dataFormat = kSecFormatWrappedPKCS8;
OSStatus status = SecItemExport(privateKey, dataFormat, 0, &keyParams, &cfData);

【讨论】:

  • SecItemImportExportKeyParameters 仅适用于 macOS
猜你喜欢
  • 2017-09-25
  • 1970-01-01
  • 2018-04-18
  • 2019-05-05
  • 2017-10-22
  • 1970-01-01
  • 1970-01-01
  • 2014-09-13
  • 2021-12-27
相关资源
最近更新 更多