无法使用安全隔区密钥生成公钥的 pem 证书

Unable to generate a pem cert of public key using secure enclave keys

提问人:Nitkarsh Gupta 提问时间:10/10/2023 最后编辑:Nitkarsh Gupta 更新时间:10/11/2023 访问量:26

问:

我想使用安全隔区在 iOS 中生成公钥的 pem 证书。如果与在安全隔区外部生成的密钥一起使用,swift-certificates 可以正常工作。由于我的密钥是在安全隔区内生成的,因此无法访问私钥,因此 swift-certificate 不起作用。

有什么方法可以使用安全或内部框架本地生成公钥的 PEM 证书?如果没有,有什么方法可以使用 swift-certificates 来完成?

    // Not working
    func generateCertWithSecureEnclave(subjectName: String) {
        let keyPair: (publicKey: SecKey, privateKey: SecKey) = getKeyPair()!
        
        var error: Unmanaged<CFError>?
        guard let publicKey = SecKeyCopyExternalRepresentation(keyPair.publicKey, &error) as? Data else {
            assertionFailure("Failed to get public key")
            return
        }
        
        var signingPublicKey: P256.Signing.PublicKey!
        do {
            signingPublicKey = try P256.Signing.PublicKey(x963Representation: publicKey)
        } catch {
            return
        }
        
        do {
            let bytes = signingPublicKey.derRepresentation.copyBytes(as: UInt8.self)
            let certificate = try Certificate(derEncoded: bytes)
            print("Certificate: ", try? certificate.serializeAsPEM().pemString)
        } catch {
            print("Certificate error: Certificate generation error - \(error)")
        }
    }
IOS 安全 X509 PEM

评论


答: 暂无答案