swift 如何在iOS中从原始值[Uint8]生成SecCertificate?[closed]

ulydmbyx  于 2022-10-31  发布在  Swift
关注(0)|答案(1)|浏览(139)

已关闭。此问题需要details or clarity。当前不接受答案。
**想要改进此问题吗?**通过editing this post添加详细信息并阐明问题。

8小时前关门了。
Improve this question
我需要在Swift 5中使用原始值创建X509证书。
示例:序列号、有效性、颁发者、公钥等。
上面提到的所有值都可以在UInt8数组类型中使用,如下所述:https://developer.apple.com/documentation/security/certificate_key_and_trust_services/certificates
但我不知道如何创建证书。

kr98yfug

kr98yfug1#

如果您拥有证书的完整二进制数据,则可以通过以下方式创建SecCertificate对象:

let certificateArray: [UInt8] // Let's say this array contains your raw data
let certificateData = Data(certificateArray)
let certificate = SecCertificateCreateWithData(nil, certificateData as CFData)

但是,另一方面,如果您只有证书的所有 * 字段 * 的内容,并且您希望从头开始创建它,则这将更加棘手:根据Wikipedia的说法,您必须在ASN.1中对数据进行编码,然后可能对其进行签名(使用您需要拥有的私钥)。
幸运的是,OpenSSL库可能可以为您完成所有这些工作(但您必须使用C沿着Swift),您将在此处找到帮助:Programmatically Create X509 Certificate using OpenSSL。完成后,您将拥有整个证书字节,并且能够使用此答案开头的代码来获得SecCertificate

相关问题