SecTransformExecute() завершает работу приложения с EXEC_BAD_ACCESS

У меня есть пара секретный / открытый ключ, и я пытаюсь зашифровать строку с любым из них. Код работает на OSX 10.11 и Xcode 7.2

func encryptMessageWithKey(message: String, keyType: KeyType,
    withCompletionBlock: (success: Bool, data: NSData?, error: AsymCryptoExceptions.Exceptions?)
    -> Void) {

        let uintData = [UInt8](message.utf8)
        let sourceData = CFDataCreate(kCFAllocatorDefault, uintData, uintData.count)
        let privKey = self.getPrivateKeyReference()!
        var errorRef: Unmanaged<CFError>?
        let encoder = SecEncryptTransformCreate(privKey, &errorRef)

        SecTransformSetAttribute(encoder,
            kSecPaddingKey,
            kSecPaddingPKCS1Key,
            &errorRef)

        SecTransformSetAttribute(encoder,
            kSecTransformInputAttributeName,
            sourceData,
            &errorRef)

        var encryptedData = SecTransformExecute(encoder, &errorRef)

        if (errorRef != nil) {
            let error = errorRef!.takeRetainedValue()
            print(error)
        }
}

Вышеописанный сбой с треском провоцирует сбой приложения во время выполнения с EXEC_BAD_ACCESS, Нет ошибок, ничего.

Мои исследования показали, что может быть ошибка, связанная с явным указанием kSecPaddingPKCS1Key в отличие от NULL, который по умолчанию устанавливает отступ в PKCS1. Однако я не смог установить это значение в NULL, поскольку Swift заменил его на nil, и это не может быть использовано в этом месте.

1 ответ

Хотя это довольно старый вопрос, я отвечу на него, чтобы, возможно, сэкономить кому-то еще время:)

У меня была такая же проблема где SecTransformExecute дал EXC_BAD_ACCESS ошибка. Я заметил, что ошибка возникает только тогда, когда я изменяю или очищаю проект и перестраиваю приложение, но не когда я запускаю ту же отладочную сборку.

В конце концов, для меня это решило подписание приложения с помощью сертификата разработки, поскольку раньше приложение не могло использовать ключ из-за различных идентификаторов автоматической подписи, предоставляемых XCode.

Другие вопросы по тегам