【发布时间】:2021-09-20 18:02:05
【问题描述】:
我想将 ECPublicKey 转换为 PEM 格式,如下所示
"-----开始公开 KEY-----MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEo0WcFrFClvBE8iZ1Gdlj+mTgZoJWMNE3kDKTfRny2iaguwuSYxo+jCnXqzkR+kyFK9CR3D+pypD1sGb1BnfWAA==-----END 公钥-----"
- 生成的 ECPublicKey 具有密钥类型“ECC/ECDSA/spec256r1”。下面是印刷品
- 据我所知,PEM 格式只不过是 base64 编码的字符串以及页眉和页脚。尝试了下面的代码,但没有成功
var error:Unmanaged<CFError>?
guard let cfdata = SecKeyCopyExternalRepresentation(publicKey, &error)
else { return }
let data:Data = cfdata as Data
let b64String = data.base64EncodedString()
在这里感谢任何帮助
【问题讨论】:
-
SecKeyCopyExternalRepresentation为您提供原始密钥(数字)。您必须将其转换为 ASN.1 格式(即,在前缀前面加上有关格式的信息)。然后只需 base64 编码并添加 PEM 页眉/页脚