macos – 如何在swift中导入DER证书?

因此,似乎有一些方法已经改变,这些方法在我当前的代码库中已经破坏了.我目前收到以下错误

Cannot convert the expression’s type ‘(CFAllocator!,data: @lvalue NSData)’ to type ‘CFData!’

这是相关的代码

let mainbun = NSBundle.pathForResource("mainkey",ofType: "der",inDirectory: "/myapppath")
var key: NSData = NSData(base64EncodedString: mainbun!,options: nil)!
var turntocert: SecCertificateRef = SecCertificateCreateWithData(kcfAllocatorDefault,data: key)

我有它使用桥接头,但我仍然希望能够直接在swift中创建证书引用.

更新:
这很有效

var bundle: NSBundle = NSBundle.mainBundle()
var mainbun = bundle.pathForResource("keyfile",ofType: "der")
var key: NSData = NSData(contentsOfFile: mainbun!)!
var turntocert: SecCertificateRef =
SecCertificateCreateWithData(kcfAllocatorDefault,key).takeRetainedValue()
在Swift中,SecCertificateCreateWithData返回Unmanaged类型.您需要使用takeRetainedValue()获取非托管引用的值.
let mainbun = NSBundle.pathForResource("mainkey",options: nil)!
var turntocert: SecCertificateRef = 
    SecCertificateCreateWithData(kcfAllocatorDefault,key).takeRetainedValue()

您遇到的核心问题是将CFData转换为NSData. See this question

相关文章

软件简介:蓝湖辅助工具,减少移动端开发中控件属性的复制和粘...
现实生活中,我们听到的声音都是时间连续的,我们称为这种信...
前言最近在B站上看到一个漂亮的仙女姐姐跳舞视频,循环看了亿...
【Android App】实战项目之仿抖音的短视频分享App(附源码和...
前言这一篇博客应该是我花时间最多的一次了,从2022年1月底至...
因为我既对接过session、cookie,也对接过JWT,今年因为工作...