gpt4 book ai didi

ios - SecPKCS12Import 在 iOS 11 上返回的结果与在 iOS 10 上返回的结果不同

转载 作者:搜寻专家 更新时间:2023-10-31 08:03:56 27 4
gpt4 key购买 nike

此函数将 Base64 编码的 PKCS#12 证书字符串作为参数,然后对其进行解码并传递给 SecPKCS12Import 函数。更新到 iOS 11 后,SecPKCS12Import 会产生不同的结果。 securityError 在两个操作系统版本上都返回 0。

let securityError: OSStatus = SecPKCS12Import(decodedData!, options, &items)

返回 0 项列表。而在 iOS 10 上,我得到数组中的 1 个项目。

func certificateFromCertificate(certP12: String, psswd: String) -> SecCertificate {
let decodedData = NSData(base64Encoded: certP12, options:NSData.Base64DecodingOptions(rawValue: 0))

let keytmp : NSString = kSecImportExportPassphrase as NSString
let options : NSDictionary = [keytmp : psswd]

var certificateRef: SecCertificate? = nil

var items : CFArray?

let securityError: OSStatus = SecPKCS12Import(decodedData!, options, &items)

let theArray: CFArray = items!
if securityError == noErr && CFArrayGetCount(theArray) > 0 {
let newArray = theArray as [AnyObject] as NSArray
let dictionary = newArray.object(at: 0)
let secIdentity = (dictionary as AnyObject)[kSecImportItemIdentity as String] as! SecIdentity
let securityError = SecIdentityCopyCertificate(secIdentity , &certificateRef)
if securityError != noErr {
certificateRef = nil
}
}

certificate = certificateRef

return certificateRef!
}

这是关于 Apple Developer forum 的帖子说 SecPKCS12Import 实现了从 Base64 的自动转换。这意味着我应该在将普通证书传递给函数之前对其进行解码。这可能是问题所在吗?

我已将帖子提交至 Apple Forum还有Technical Support incident .

开发环境:

编程语言:Swift 3

调试设备:Apple iPad mini Retina Wi-Fi 32GB ME280SL/A

开发设备:iMAC mini Xcode version 9.0 9A235

最佳答案

使用 Xcode 版本 9.0.1 (9A1004)Apple Swift 版本 4.0 (swiftlang-900.0.65.2 clang-900.0.37),我可以正常使用你的功能的结果。也适用于设置为 3.2 的 Swift 语言。

在您引用的帖子中,@eskimo 说(加粗我的):

Your options here are:

  • File a compatibility bug against iOS 11 beta and hope that it gets fixed before GM
  • Change your app to use SecPKCS12Import in the documented way, that is, undo the Base64 decoding

似乎有人提交了一个错误,并且该问题已得到修复(使其按照最初记录的方式工作)。 Base64 没有自动解码。您提供解码是对的。

关于ios - SecPKCS12Import 在 iOS 11 上返回的结果与在 iOS 10 上返回的结果不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46743709/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com