Apple SSL Secure Transport

Я только начал работать с OS X и не имею никакого опыта с ним вообще. Но все, что я хочу сейчас сделать, это заменить старый код OpenSSL на Apple Security API. Я использую безопасный транспорт, и меня немного смущают эти функции: SSLSetIOFuncs, SSLWrite, а также SSLRead,

Так SSLSetIOFuncs устанавливает обратные вызовы, которые выполняют операции записи / чтения (которые я должен реализовать). И тут возникает много вопросов:

  1. Во-первых, я просто не понимаю, почему я должен это реализовывать (в OpenSSL это уже реализовано). Но хорошо, я просто должен.
  2. Должна ли эта реализация быть зашифрована? Я думаю, нет.

Также есть следующие 2 функции:

OSStatus
SSLWrite                    (SSLContextRef      context,
                             const void *       __nullable data,
                             size_t             dataLength,
                             size_t             *processed);

OSStatus
SSLRead                    (SSLContextRef       context,
                            void *              data,           
                            size_t              dataLength,
                            size_t          *processed);

И они "Нормальное чтение / запись на уровне приложения". согласно комментариям кода. Так почему же мне нужно определить эти 2 обратных вызова для чтения и записи? И если первые двое являются обратными вызовами, какие функции мне следует вызывать для чтения / записи в моем коде (когда мне действительно нужно прочитать некоторые данные с сервера)?

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

1 ответ

SecureTransport основан на обратном вызове, в отличие от OpenSSL SSL_read() а также SSL_write() функции. Это может потребовать больших изменений в вашем коде. Если вы хотите read/writeв стиле API, который может использовать SecureTransport для шифрования, посмотреть на CFNetwork и, в частности, CFStream

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