将SecKey导出为pkcs8格式

6

目前我正在使用iOS安全框架生成RSA密钥对

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

我希望您能将这些密钥导出为使用PKCS8的PEM格式。苹果提供的导出密钥的标准方法如下:
let cfData = SecKeyCopyExternalRepresentation(self, &error)

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

到目前为止,我所有的研究都没有明确说明如何转换这些格式。


1
我可以说的是,1. PKCS#8 包含 PKCS#1密钥,2.似乎有ASN.1编码实用程序可用于使用相关结构包装PKCS#1密钥。然而,在当前的苹果文档中(这越来越糟糕,CCCrypt是一种耻辱,但这更糟),我看不到创建任何ASN.1结构的示例。 - Maarten Bodewes
你有找到任何将其转换为pkcs8的方法吗? - Mahdi Moqadasi
1个回答

0

我不会翻译成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);

2
SecItemImportExportKeyParameters 仅在 macOS 上可用。 - Hassan Shahbazi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接