1

我正在尝试.p12使用共享扩展将邮件附件(这是一个文件)导出到我的 iOS 应用程序。

这是处理共享扩展附件的功能:

@IBAction func processAttachment() {
    guard let item = self.extensionContext?.inputItems[0] as? NSExtensionItem, 
          let provider = item.attachments?.first,   
          provider.hasItemConformingToTypeIdentifier("com.rsa.pkcs-12") else { 
              extensionContext!.completeRequest(returningItems: [], completionHandler: nil); 
              return 
          }

    provider.loadDataRepresentation(forTypeIdentifier: "com.rsa.pkcs-12") { (p12Data, error) in
        //Process Data here
    }

我遇到的问题是,-26275This certificate could not be decoded我尝试使用SecPKCS12Import.

我尝试了相同的方法,通过使用本地文件加载替换闭包中的数据:

let pkcsFileURL = Bundle.main.url(forResource: "certificate", withExtension: "p12")!
let pkcsData = try! Data(contentsOf: pkcsFileURL)

到目前为止,从本地文件中解码数据是成功的。

然后,我意识到来自附件和本地文件的数据不匹配。虽然来自附件的数据是9856 bytes,但本地的数据是5747 bytes

我从安装在应用程序中的 iOS Outlook 应用程序共享,显示原始文件为 6KB(更接近从本地文件读取的数据)。

也许附件中的数据没有正确解码,奇怪的是错误数据的大小几乎是原始数据的两倍。

我正在正确读取附件数据吗?

更新

我认为所有问题都是因为附件是作为二进制文件共享的。

4

0 回答 0