Я получаю эту странную ошибку, о которой я не могу найти никакой дополнительной информации, когда мой код Objective C вызывает библиотеку C ++ для подписи данных указанным ключом:
Error Domain=Internal CSSM error Code=-2147416063 "Internal error #80010801 at __SignTransform_block_invoke.17 /Library/Caches/com.apple.xbs/Sources/Security/Security-57740.31.2/OSX/libsecurity_transform/lib/SecSignVerifyTransform.c:279" UserInfo={NSDescription=Internal error #80010801 at __SignTransform_block_invoke.17 /Library/Caches/com.apple.xbs/Sources/Security/Security-57740.31.2/OSX/libsecurity_transform/lib/SecSignVerifyTransform.c:279, Originating Transform=CoreFoundationObject}
libc++abi.dylib: terminating with uncaught exception of type ndn::SecurityException: Fail to sign data
Проблема возникает при втором доступе к закрытому ключу. То есть когда я устанавливаю сертификат и запускаю свое приложение, оно запрашивает у пользователя диалоговое окно «доступ», в котором пользователю предлагается явно разрешить доступ к закрытому ключу, используемому при подписании. После разрешения все работает как положено. Однако на всех последующих запусках я буду испытывать вышеупомянутое исключение. Чтобы приступить к тестированию, мне нужно открыть приложение KeyChain и явно указать «Разрешить всем приложениям доступ к этому элементу» в «Контроль доступа» для этого закрытого ключа. Что не очень хорошая практика. До сих пор я не мог найти объяснения, почему происходит это исключение.
Однако я заметил одну вещь: это происходит только для реализации Какао — я имею в виду, что когда я продублировал код Какао в тестовом приложении C ++, он не падает.
Основная библиотека, которая выполняет подписывание использует этот Функция подписи OSX.
Задача ещё не решена.
Других решений пока нет …