Импорт файла p12 через iOS Share Extension предоставляет неверные данные - PullRequest
1 голос
/ 17 апреля 2020

Я пытаюсь экспортировать почтовое вложение (которое является .p12 файлом) в мое приложение iOS, используя расширение общего доступа.

Это функция для обработки вложений Share Extension:

@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
    }

У меня проблема в том, что я получаю ошибку декодирования (OSStatus) -26275 (иначе This 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, установленное в приложении, которое показывает, что исходный файл имеет размер 6 КБ (намного ближе к данным, считанным из локального файла).

Возможно, данные из вложения Несмотря на то, что они не декодированы должным образом, любопытно, что неправильные данные имеют почти двойной размер по сравнению с оригиналом.

Я правильно читаю данные вложения?

ОБНОВЛЕНИЕ

Я думаю, что вся проблема вызвана тем, что вложение является двоичным.

...