将 SecKey 导出为 pkcs8 格式

Fra*_*sch 6 cryptography rsa ios swift

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

statusCode = SecKeyGeneratePair(keyPairAttributes as CFDictionary, &newPublicKey, &newPrivateKey)
Run Code Online (Sandbox Code Playgroud)

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

let cfData = SecKeyCopyExternalRepresentation(self, &error)
Run Code Online (Sandbox Code Playgroud)

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

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

bar*_*njs 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);
Run Code Online (Sandbox Code Playgroud)

  • `SecItemImportExportKeyParameters` 仅在 macOS 上可用 (2认同)