Безопасная транспортная ссылка
Этот документ описывает общедоступный API для реализации протоколов версия 3.0 Уровня защищенных сокетов и версия 1.0 Безопасности Транспортного уровня.
В этой библиотеке нет никаких зависимостей от транспортного уровня; это может использоваться с Сокетами BSD и Открыть Transport среди других протоколов. Для пользований этой библиотекой необходимо обеспечить функции обратного вызова для выполнения фактического I/O на соединениях базовой сети. Вы также ответственны за установку необработанных сетевых соединений; Вы передаете в непрозрачной ссылке на базовый (связанный) объект в начале сеанса SSL в форме SSLConnectionRef объект.
Следующие термины используются в этом документе:
Клиент является инициатором сеанса SSL. Каноническим примером клиента является веб-браузер, связывающийся с HTTPS URL.
Сервер является объектом, принимающим запросы на сеансы SSL, сделанные клиентами. Примером является безопасный веб-сервер.
Сеанс SSL ограничен вызовами к функциям
SSLHandshakeиSSLClose. Активный сеанс находится в некотором состоянии между этими двумя вызовами, включительно.Контекст сеанса SSL, или
SSLContextRef, непрозрачная ссылка на состояние, связанное с одним сеансом. Контекст сеанса не может быть снова использован для многократных сеансов.
Для большинства приложений нужны только несколько функций в этом API, который обычно вызывают в следующей последовательности:
Подготовка к сеансу
Вызвать
SSLNewContext(в OS X) илиSSLCreateContext(в iOS и OS X) для создания нового контекста сеанса SSL.Запишите
SSLWriteиSSLReadФункции I/O и вызовSSLSetIOFuncsпередать их для Обеспечения Транспорта.Установите соединение с помощью CFNetwork, Сокетов BSD, или Откройте Transport. Тогда вызовите
SSLSetConnectionуказать соединение, к которому применяется контекст сеанса SSL.Вызвать
SSLSetPeerDomainNameуказать полностью определенное доменное имя коллеги, с которой Вы хотите соединиться (дополнительный, но наиболее рекомендуемый).Вызвать
SSLSetCertificateуказать сертификат, который будет использоваться в аутентификации (требуемый для серверной стороны, дополнительной для клиента).
Запуск сеанса
Вызвать
SSLHandshakeвыполнить квитирование SSL и установить безопасный сеанс.
Поддержание сеанса
Окончание сеанса
Вызвать
SSLCloseзакрыть безопасный сеанс.Закройте соединение и избавьтесь от ссылки соединения (
SSLConnectionRef).Если Вы создали контекст путем вызова
SSLNewContext, вызватьSSLDisposeContextизбавляться от контекста сеанса SSL.Если Вы создали контекст путем вызова
SSLCreateContext, выпустите контекст сеанса SSL путем вызоваCFRelease.Если Вы вызвали
SSLGetPeerCertificatesдля получения любых сертификатов вызватьCFReleaseвыпускать ссылочные объекты сертификата.
Во многих случаях проще использовать API CFNetwork, чем Безопасный Транспорт для реализации простого соединения с безопасным (HTTPS) URL. См. Руководство по программированию CFNetwork для документации API CFNetwork и примера кода CFNetworkHTTPDownload для примера кода, загружающего данные с URL. При указании HTTPS URL эта подпрограмма автоматически использует Безопасный Транспорт для шифрования потока данных.
Для функций, чтобы управлять и оценить сертификаты, см. Сертификат, Ключ, и Ссылку Trust Services и Сертификат, Ключ и Руководство по программированию Trust Services.
-
SSLNewContext SSLNewContext(OS X v10.9)Создает новый контекст сеанса SSL.
Объявление
Objective C
OSStatus SSLNewContext ( Boolean isServer, SSLContextRef *contextPtr );Параметры
isServerНабор
trueесли обработка вызовов является сервером.contextPtrПо возврату, точкам к новой ссылке контекста сеанса SSL.
Возвращаемое значение
Код результата. Посмотрите Безопасные Транспортные Коды Результата.
Обсуждение
Контекст сеанса SSL является непрозрачной структурой данных, идентифицирующей сеанс и хранящей информацию сеанса. Необходимо передать этот объект любой функции в Безопасном Транспортном API.
Оператор импорта
Objective C
@import Security;Доступность
Доступный в OS X v10.2 и позже.
Осуждаемый в OS X v10.9.
-
SSLDisposeContext SSLDisposeContext(OS X v10.9)Избавляется от контекста сеанса SSL.
Объявление
Objective C
OSStatus SSLDisposeContext ( SSLContextRef context );Параметры
contextСсылка на контекст сеанса SSL для расположения.
Возвращаемое значение
Код результата. Посмотрите Безопасные Транспортные Коды Результата.
Обсуждение
Когда Вы полностью закончены с безопасным сеансом, необходимо избавиться от контекста сеанса SSL для выпуска памяти, связанной с сеансом.
Оператор импорта
Objective C
@import Security;Доступность
Доступный в OS X v10.2 и позже.
Осуждаемый в OS X v10.9.
-
Указывает соединение I/O для определенного сеанса.
Объявление
Swift
func SSLSetConnection(_context: SSLContext!, _connection: SSLConnectionRef) -> OSStatusObjective C
OSStatus SSLSetConnection ( SSLContextRef context, SSLConnectionRef connection );Параметры
contextСсылка контекста сеанса SSL.
connectionСсылка соединения на время сеанса SSL. Данные о соединении непрозрачны для Обеспечения Транспорта; можно установить его в любое значение, которое приложение может использовать для однозначного определения соединения в функциях обратного вызова
SSLReadFuncиSSLWriteFunc.Возвращаемое значение
Код результата. Посмотрите Безопасные Транспортные Коды Результата.
Обсуждение
Необходимо установить соединение прежде, чем создать безопасный сеанс. После вызова
SSLNewContextфункция для создания контекста сеанса SSL Вы вызываетеSSLSetConnectionфункция для указания соединения, к которому применяется контекст. Вы указываете значение вconnectionпараметр, который Ваши подпрограммы обратного вызова могут использовать для идентификации соединения. Это значение могло бы быть указателем на сокет (если Вы используете Сокеты API), или конечная точка (если Вы используете, Открывают Transport). Например, Вы могли бы создать сокет, запустить соединение на нем, создать ссылку контекста, бросить сокет кSSLConnectionRef, и затем передайте и ссылку контекста и ссылку соединения наSSLSetConnectionфункция.Обратите внимание на то, что Сокеты API являются предпочтительным сетевым интерфейсом для новой разработки.
На клиентской стороне предполагается, что коммуникация была установлена с желаемым сервером на этом соединении. На серверной стороне предполагается, что соединение было установлено в ответ на входящий клиентский запрос.
Эта функция должна быть вызвана до
SSLHandshakeфункция; следовательно, эта функция может быть вызвана только, когда никакой сеанс не активен.Оператор импорта
Objective C
@import Security;Swift
import SecurityДоступность
Доступный в OS X v10.2 и позже.
-
Получает соединение I/O — такое как сокет или конечная точка — для определенного сеанса.
Объявление
Swift
func SSLGetConnection(_context: SSLContext!, _connection: UnsafeMutablePointer<SSLConnectionRef>) -> OSStatusObjective C
OSStatus SSLGetConnection ( SSLContextRef context, SSLConnectionRef *connection );Параметры
contextСсылка контекста сеанса SSL.
connectionПо возврату, указателю на ссылку соединения на время сеанса. Если никакое соединение не было установлено с помощью
SSLSetConnectionфункция, тогда этот параметрNULLпо возврату.Возвращаемое значение
Код результата. Посмотрите Безопасные Транспортные Коды Результата.
Обсуждение
Можно использовать эту функцию или на клиенте или на сервере для получения соединения, связанного с безопасным сеансом.
Оператор импорта
Objective C
@import Security;Swift
import SecurityДоступность
Доступный в OS X v10.2 и позже.
-
Указывает опцию для определенного сеанса.
Объявление
Swift
func SSLSetSessionOption(_context: SSLContext!, _option: SSLSessionOption, _value: Boolean) -> OSStatusObjective C
OSStatus SSLSetSessionOption ( SSLContextRef context, SSLSessionOption option, Boolean value );Параметры
contextСсылка контекста сеанса SSL.
optionОпция сеанса SSL. Возможные значения перечислены в Опциях Сеанса SSL.
valueНабор к
trueвключить опцию, илиfalseотключить его.Возвращаемое значение
Код результата. Посмотрите Безопасные Транспортные Коды Результата.
Обсуждение
Эта функция должна быть вызвана до
SSLHandshakeфункция; следовательно, эта функция может быть вызвана только, когда никакой сеанс не активен.Оператор импорта
Objective C
@import Security;Swift
import SecurityДоступность
Доступный в OS X v10.6 и позже.
См. также
-
Указывает текущую установку опции сеанса SSL.
Объявление
Swift
func SSLGetSessionOption(_context: SSLContext!, _option: SSLSessionOption, _value: UnsafeMutablePointer<Boolean>) -> OSStatusObjective C
OSStatus SSLGetSessionOption ( SSLContextRef context, SSLSessionOption option, Boolean *value );Параметры
contextСсылка контекста сеанса SSL.
optionОпция сеанса SSL. Возможные значения перечислены в Опциях Сеанса SSL.
valueПо возврату,
trueесли опция включена, илиfalseиначе.Возвращаемое значение
Код результата. Посмотрите Безопасные Транспортные Коды Результата.
Оператор импорта
Objective C
@import Security;Swift
import SecurityДоступность
Доступный в OS X v10.6 и позже.
См. также
-
Указывает функции обратного вызова, выполняющие операции сети I/O.
Объявление
Swift
func SSLSetIOFuncs(_context: SSLContext!, _read: SSLReadFunc, _write: SSLWriteFunc) -> OSStatusObjective C
OSStatus SSLSetIOFuncs ( SSLContextRef context, SSLReadFunc readFunc, SSLWriteFunc writeFunc );Параметры
contextСсылка контекста сеанса SSL.
readУказатель на Вашу функцию обратного вызова чтения. Посмотрите
SSLReadFuncдля получения информации об определении этой функции.writeУказатель на Вашу функцию обратного вызова записи. Посмотрите
SSLWriteFuncдля получения информации об определении этой функции.Возвращаемое значение
Код результата. Посмотрите Безопасные Транспортные Коды Результата.
Обсуждение
Безопасный Транспорт вызывает Ваше чтение и функции обратного вызова записи для выполнения сети I/O. Необходимо определить эти функции перед вызовом
SSLSetIOFuncs.Необходимо вызвать
SSLSetIOFuncsдо вызоваSSLHandshakeфункция.SSLSetIOFuncsв то время как сеанс активен, не может быть вызван.Оператор импорта
Objective C
@import Security;Swift
import SecurityДоступность
Доступный в OS X v10.2 и позже.
-
SSLSetProtocolVersionEnabled SSLSetProtocolVersionEnabled(OS X v10.9)Устанавливает позволенные версии протокола SSL.
Объявление
Objective C
OSStatus SSLSetProtocolVersionEnabled ( SSLContextRef context, SSLProtocol protocol, Boolean enable );Параметры
contextСсылка контекста сеанса SSL.
protocolВерсия протокола SSL для включения. Передача
kSSLProtocolAllвключить все протоколы.enableБулево значение, указывающее, разрешить ли или отключить указанный протокол. Указать
trueвключить протокол.Возвращаемое значение
Код результата. Посмотрите Безопасные Транспортные Коды Результата.
Обсуждение
Вызывание этой функции является дополнительным. Значение по умолчанию - то, что включены все поддерживаемые протоколы. Когда Вы вызываете эту функцию, только указанный протокол затронут. Поэтому, если Вы вызываете его один раз для отключения версии 2 SSL (например), другие протоколы, все остаются включенными. Можно вызвать эту функцию так много раз, как Вы хотите включить и отключить определенные протоколы. Можно указать одно из следующих значений для
protocolпараметр:kSSLProtocol2kSSLProtocol3kTLSProtocol1kSSLProtocolAll
Когда сеанс активен, эта функция не может быть вызвана.
Оператор импорта
Objective C
@import Security;Доступность
Доступный в OS X v10.2 и позже.
Осуждаемый в OS X v10.9.
-
SSLGetProtocolVersionEnabled SSLGetProtocolVersionEnabled(OS X v10.9)Получает включенное состояние данного протокола.
Объявление
Objective C
OSStatus SSLGetProtocolVersionEnabled ( SSLContextRef context, SSLProtocol protocol, Boolean *enable );Параметры
contextСсылка контекста сеанса SSL.
protocolЗначение типа
SSLProtocolпредставление версии протокола SSL.enableПо возврату, точкам к булеву значению, указывающему, включена ли указанная версия протокола. Если это значение
true, протокол включен.Возвращаемое значение
Код результата. Посмотрите Безопасные Транспортные Коды Результата.
Обсуждение
Можно указать любое из следующих значений для
protocolпараметр:kSSLProtocol2kSSLProtocol3kTLSProtocol1kSSLProtocolAllУкажите это значение, чтобы определить, включены ли все протоколы.
Оператор импорта
Objective C
@import Security;Доступность
Доступный в OS X v10.2 и позже.
Осуждаемый в OS X v10.9.
-
Указывает требования для аутентификации клиентской стороны.
Объявление
Swift
func SSLSetClientSideAuthenticate(_context: SSLContext!, _auth: SSLAuthenticate) -> OSStatusObjective C
OSStatus SSLSetClientSideAuthenticate ( SSLContextRef context, SSLAuthenticate auth );Параметры
contextСсылка контекста сеанса SSL.
authФлаг, устанавливающий требования для аутентификации клиентской стороны. Посмотрите Константы аутентификации SSL для возможных значений.
Возвращаемое значение
Код результата. Посмотрите Безопасные Транспортные Коды Результата.
Обсуждение
Эта функция может быть вызвана только серверами. Использование этой функции является дополнительным. Требование аутентификации по умолчанию
kNeverAuthenticate. Эта функция может быть вызвана только, когда никакой сеанс не активен.Оператор импорта
Objective C
@import Security;Swift
import SecurityДоступность
Доступный в OS X v10.2 и позже.
-
SSLSetRsaBlinding SSLSetRsaBlinding(OS X v10.9)Включает или отключает ослепление RSA.
Объявление
Objective C
OSStatus SSLSetRsaBlinding ( SSLContextRef context, Boolean blinding );Параметры
contextСсылка контекста сеанса SSL.
blindingБулево значение, указывающее, разрешить ли ослепление RSA. Передача
trueвключить ослепление RSA.Возвращаемое значение
Код результата. Посмотрите Безопасные Транспортные Коды Результата.
Обсуждение
Эта функция используется только на серверной стороне соединения.
Эта функция мешает известной атаке, для которой ключи RSA уязвимы: возможно предположить ключ RSA путем синхронизации, сколько времени это берет сервер для вычисления ответа на определенные запросы. Ослепление RSA добавляет случайное вычисление к каждому ответу запроса, таким образом делая атаку невозможной. Включение ослепление RSA является компромиссом между производительностью и безопасностью.
Ослепление RSA включено по умолчанию. Используйте
SSLGetRsaBlindingфункция для определения текущей установки.Оператор импорта
Objective C
@import Security;Доступность
Доступный в OS X v10.2 и позже.
Осуждаемый в OS X v10.9.
-
SSLGetRsaBlinding SSLGetRsaBlinding(OS X v10.9)Получает значение, указывающее, включено ли ослепление RSA.
Объявление
Objective C
OSStatus SSLGetRsaBlinding ( SSLContextRef context, Boolean *blinding );Параметры
contextСсылка контекста сеанса SSL.
blindingПо возврату, указателю на булево значение, указывающее, включено ли ослепление RSA.
Возвращаемое значение
Код результата. Посмотрите Безопасные Транспортные Коды Результата.
Обсуждение
Эта функция используется только на серверной стороне соединения.
Вызовите
SSLSetRsaBlindingфункция, чтобы включить или отключить ослепление RSA.Оператор импорта
Objective C
@import Security;Доступность
Доступный в OS X v10.2 и позже.
Осуждаемый в OS X v10.9.
-
Выполняет квитирование SSL.
Объявление
Swift
func SSLHandshake(_context: SSLContext!) -> OSStatusObjective C
OSStatus SSLHandshake ( SSLContextRef context );Параметры
contextСсылка контекста сеанса SSL.
Возвращаемое значение
Код результата. Посмотрите Безопасные Транспортные Коды Результата.
Обсуждение
По успешному возврату сеанс готов к нормальной безопасной коммуникации с помощью функций
SSLReadиSSLWrite.Если это находит какие-либо проблемы с цепочкой сертификата коллеги, Безопасный Транспорт прерывает квитирование. Можно использовать
SSLCopyPeerCertificatesфункция для наблюдения цепочки сертификата коллеги. Эта функция может возвратить большое разнообразие кодов результата, включая следующее:errSSLUnknownRootCert— У коллеги есть допустимая цепочка сертификата, но корень цепочки не является известным сертификатом привязки.errSSLNoRootCert— Цепочка сертификата коллеги не была поддающейся проверке к корневому сертификату.errSSLCertExpired— Цепочка сертификата коллеги имеет один или сертификаты более с истекшим сроком.errSSLXCertChainInvalid— У коллеги есть недопустимая цепочка сертификата; например, верификация подписи в цепочке перестала работать, или никакие сертификаты не были найдены.errSSLClientCertRequested— Сервер запросил клиентский сертификат. Этот результат возвращается, только если Вы вызвалиSSLSetSessionOptionфункционируйте для установкиkSSLSessionOptionBreakOnCertRequestedопция. После получения этого результата необходимо вызватьSSLSetCertificateфункционируйте, чтобы возвратить клиентский сертификат, и затем вызватьSSLHandshakeснова возобновлять квитирование. ИспользуйтеSSLCopyDistinguishedNamesфункция для получения списка сертификатов, приемлемых для сервера.errSSLServerAuthCompleted— Часть аутентификации сервера квитирования завершена. Этот результат возвращается, только если Вы вызвалиSSLSetSessionOptionфункционируйте для установкиkSSLSessionOptionBreakOnServerAuthопция, и предоставляет возможность для выполнения специализированной проверки сервера перед вызовомSSLHandshakeснова продолжаться.Обратите внимание на то, что в OS X до версии 10.8, необходимо также явно вызвать
SSLSetEnableCertVerifyотключить проверку.
Возвращаемое значение
errSSLWouldBlockуказывает чтоSSLHandshakeфункция должна быть вызвана снова, пока различный код результата не возвращается.Оператор импорта
Objective C
@import Security;Swift
import SecurityДоступность
Доступный в OS X v10.2 и позже.
-
Получает состояние сеанса SSL.
Объявление
Swift
func SSLGetSessionState(_context: SSLContext!, _state: UnsafeMutablePointer<SSLSessionState>) -> OSStatusObjective C
OSStatus SSLGetSessionState ( SSLContextRef context, SSLSessionState *state );Параметры
contextСсылка контекста сеанса SSL.
stateПо возврату, точкам к константе, указывающей состояние сеанса SSL. Посмотрите Константы Состояния сеанса SSL для возможных значений.
Возвращаемое значение
Код результата. Посмотрите Безопасные Транспортные Коды Результата.
Оператор импорта
Objective C
@import Security;Swift
import SecurityДоступность
Доступный в OS X v10.2 и позже.
-
Получает согласованную версию протокола активного сеанса.
Объявление
Swift
func SSLGetNegotiatedProtocolVersion(_context: SSLContext!, _ `protocol`: UnsafeMutablePointer<SSLProtocol>) -> OSStatusObjective C
OSStatus SSLGetNegotiatedProtocolVersion ( SSLContextRef context, SSLProtocol *protocol );Параметры
contextСсылка контекста сеанса SSL.
protocolПо возврату, точкам к согласованной версии протокола активного сеанса.
Возвращаемое значение
Код результата. Посмотрите Безопасные Транспортные Коды Результата. Эта функция возвраты
kSSLProtocolUnknownесли никакой сеанс SSL не происходит.Обсуждение
Эта функция получает версию SSL или протокола TLS, согласованного относительно сеанса. Обратите внимание на то, что согласованный протокол может не совпасть с Вашим предпочтительным протоколом, в зависимости от которых версий протокола Вы включили с
SSLSetProtocolVersionEnabledфункция. Эта функция может возвратить любое из следующих значений:kSSLProtocol2kSSLProtocol3kTLSProtocol1kSSLProtocolUnknown
Оператор импорта
Objective C
@import Security;Swift
import SecurityДоступность
Доступный в OS X v10.2 и позже.
-
Указывает данные, которые достаточны для однозначного определения коллеги текущего сеанса.
Объявление
Swift
func SSLSetPeerID(_context: SSLContext!, _peerID: UnsafePointer<Void>, _peerIDLen: UInt) -> OSStatusObjective C
OSStatus SSLSetPeerID ( SSLContextRef context, const void *peerID, size_t peerIDLen );Параметры
contextСсылка контекста сеанса SSL.
peerIDУказатель на буфер, содержащий коллегу данные ID для установки.
peerIDLenДлина коллеги буфер данных ID.
Возвращаемое значение
Код результата. Посмотрите Безопасные Транспортные Коды Результата.
Обсуждение
Безопасный Транспорт использует коллегу ID, чтобы соответствовать коллеге сеанса SSL с коллегой предыдущего сеанса для возобновления прерванного сеанса. Если коллега соответствие IDs, Безопасный Транспорт пытается возобновить сеанс с теми же параметрами, как используется в предыдущем сеансе с той же коллегой.
Данные, которые Вы предоставляете этой функции, обрабатываются как непрозрачный блоб Безопасным Транспортом, но являются сравненным байтом для байта с предыдущей коллегой значения данных ID, установленные текущим приложением. Примером коллеги данные ID является IP-адрес и порт, сохраненный некоторым частным на вызывающую сторону способом. Вызывание этой функции является дополнительным, но требуется, если Вы хотите, чтобы сеанс был resumable. Если Вы действительно вызываете эту функцию, необходимо вызвать ее до квитирования для текущего сеанса.
Можно использовать
SSLGetPeerIDфункция для получения коллеги данные ID для текущего сеанса.Оператор импорта
Objective C
@import Security;Swift
import SecurityДоступность
Доступный в OS X v10.2 и позже.
-
Получает текущую коллегу данные ID.
Объявление
Swift
func SSLGetPeerID(_context: SSLContext!, _peerID: UnsafeMutablePointer<UnsafePointer<Void>>, _peerIDLen: UnsafeMutablePointer<UInt>) -> OSStatusObjective C
OSStatus SSLGetPeerID ( SSLContextRef context, const void **peerID, size_t *peerIDLen );Параметры
contextСсылка контекста сеанса SSL.
peerIDПо возврату, точкам к буферу, содержащему коллегу данные ID.
peerIDLenПо возврату, длине коллеги буфер данных ID.
Возвращаемое значение
Код результата. Посмотрите Безопасные Транспортные Коды Результата.
Обсуждение
Если коллега данные ID для этого контекста не была установлена путем вызова
SSLSetPeerIDфункция, эта функция возвращает aNULLуказатель вpeerIDпараметр, и0вpeerIDLenпараметр.Оператор импорта
Objective C
@import Security;Swift
import SecurityДоступность
Доступный в OS X v10.2 и позже.
-
Определяет, сколько данных доступно, чтобы быть считанными.
Объявление
Swift
func SSLGetBufferedReadSize(_context: SSLContext!, _bufSize: UnsafeMutablePointer<UInt>) -> OSStatusObjective C
OSStatus SSLGetBufferedReadSize ( SSLContextRef context, size_t *bufSize );Параметры
contextСсылка контекста сеанса SSL.
bufSizeПо возврату, размеру данных, которые будут считаны.
Возвращаемое значение
Код результата. Посмотрите Безопасные Транспортные Коды Результата.
Обсуждение
Эта функция определяет, сколько данных, как можно гарантировать, получите в вызове к
SSLReadфункция. Эта функция не блокирует или заставляет любые низкоуровневые операции чтения происходить.Оператор импорта
Objective C
@import Security;Swift
import SecurityДоступность
Доступный в OS X v10.2 и позже.
-
Выполняет нормальную операцию чтения прикладного уровня.
Объявление
Swift
func SSLRead(_context: SSLContext!, _data: UnsafeMutablePointer<Void>, _dataLength: UInt, _processed: UnsafeMutablePointer<UInt>) -> OSStatusObjective C
OSStatus SSLRead ( SSLContextRef context, void *data, size_t dataLength, size_t *processed );Параметры
contextСсылка контекста сеанса SSL.
dataПо возврату, точкам к чтению данных. Необходимо выделить этот буфер прежде, чем вызвать функцию. Размер этого буфера должен быть равным или больше, чем значение в
dataLengthпараметр.dataLengthОбъем данных требуется читать.
processedПо возврату, точкам к числу байтов фактически чтение.
Возвращаемое значение
Код результата. Посмотрите Безопасные Транспортные Коды Результата.
Обсуждение
SSLReadфункция могла бы вызватьSSLReadFuncфункция, которую Вы обеспечиваете (см.SSLSetIOFuncs. Поскольку можно сконфигурировать базовое соединение для работы способом неблокирования, операция чтения могла бы возвратитьсяerrSSLWouldBlock, указание, что было фактически передано меньше данных, чем требуемый. В этом случае необходимо повторить вызов кSSLReadпока не возвращается некоторый другой результат.Оператор импорта
Objective C
@import Security;Swift
import SecurityДоступность
Доступный в OS X v10.2 и позже.
-
Выполняет нормальную операцию записи прикладного уровня.
Объявление
Swift
func SSLWrite(_context: SSLContext!, _data: UnsafePointer<Void>, _dataLength: UInt, _processed: UnsafeMutablePointer<UInt>) -> OSStatusObjective C
OSStatus SSLWrite ( SSLContextRef context, const void *data, size_t dataLength, size_t *processed );Параметры
contextСсылка контекста сеанса SSL.
dataУказатель на буфер данных для записи.
dataLengthСумма, в байтах, данных для записи.
processedПо возврату, длине, в байтах, данных, фактически записанных.
Возвращаемое значение
Код результата. Посмотрите Безопасные Транспортные Коды Результата.
Обсуждение
SSLWriteфункция могла бы вызватьSSLWriteFuncфункция, которую Вы обеспечиваете (см.SSLSetIOFuncs). Поскольку можно сконфигурировать базовое соединение для работы способом без блокирования, операция записи могла бы возвратитьсяerrSSLWouldBlock, указание, что было фактически передано меньше данных, чем требуемый. В этом случае необходимо повторить вызов кSSLWriteпока не возвращается некоторый другой результат.Оператор импорта
Objective C
@import Security;Swift
import SecurityДоступность
Доступный в OS X v10.2 и позже.
-
Завершает текущий сеанс SSL.
Объявление
Swift
func SSLClose(_context: SSLContext!) -> OSStatusObjective C
OSStatus SSLClose ( SSLContextRef context );Параметры
contextСсылка контекста сеанса SSL сеанса Вы хотите завершиться.
Возвращаемое значение
Код результата. Посмотрите Безопасные Транспортные Коды Результата.
Оператор импорта
Objective C
@import Security;Swift
import SecurityДоступность
Доступный в OS X v10.2 и позже.
-
Определяет число поддерживаемых наборов шифров.
Объявление
Swift
func SSLGetNumberSupportedCiphers(_context: SSLContext!, _numCiphers: UnsafeMutablePointer<UInt>) -> OSStatusObjective C
OSStatus SSLGetNumberSupportedCiphers ( SSLContextRef context, size_t *numCiphers );Параметры
contextСсылка контекста сеанса SSL.
numCiphersПо возврату, точкам к числу поддерживаемых наборов шифров.
Возвращаемое значение
Код результата. Посмотрите Безопасные Транспортные Коды Результата.
Обсуждение
Когда Вы вызываете, Вы используете число включенных наборов шифров, возвращенных этой функцией
SSLGetNumberSupportedCiphersфункция для получения списка в настоящее время включаемых наборов шифров.Оператор импорта
Objective C
@import Security;Swift
import SecurityДоступность
Доступный в OS X v10.2 и позже.
-
Определяет значения поддерживаемых наборов шифров.
Объявление
Swift
func SSLGetSupportedCiphers(_context: SSLContext!, _ciphers: UnsafeMutablePointer<SSLCipherSuite>, _numCiphers: UnsafeMutablePointer<UInt>) -> OSStatusObjective C
OSStatus SSLGetSupportedCiphers ( SSLContextRef context, SSLCipherSuite *ciphers, size_t *numCiphers );Параметры
contextСсылка контекста сеанса SSL.
ciphersПо возврату, точкам к значениям поддерживаемых наборов шифров. Перед вызовом необходимо выделить этот буфер с помощью числа поддерживаемых наборов шифров, полученных от вызова до
SSLGetNumberSupportedCiphersфункция.numCiphersТочки к числу поддерживаемых наборов шифров, которые Вы хотите, возвратились. Перед вызовом получите это значение путем вызова
SSLGetNumberSupportedCiphersфункция.Возвращаемое значение
Код результата. Посмотрите Безопасные Транспортные Коды Результата. Если предоставленный буфер является слишком маленьким,
errSSLBufferOverflowвозвращается.Обсуждение
Все поддерживаемые наборы шифров включены по умолчанию. Используйте
SSLSetEnabledCiphersфункция для включения подмножества поддерживаемых наборов шифров. ИспользуйтеSSLGetEnabledCiphersфункция для определения, какие наборы шифров в настоящее время включаются.Оператор импорта
Objective C
@import Security;Swift
import SecurityДоступность
Доступный в OS X v10.2 и позже.
-
Указывает ограниченный набор наборов шифров SSL, которые будут включены текущим контекстом сеанса SSL.
Объявление
Swift
func SSLSetEnabledCiphers(_context: SSLContext!, _ciphers: UnsafePointer<SSLCipherSuite>, _numCiphers: UInt) -> OSStatusObjective C
OSStatus SSLSetEnabledCiphers ( SSLContextRef context, const SSLCipherSuite *ciphers, size_t numCiphers );Параметры
contextСсылка контекста сеанса SSL.
ciphersУказатель на наборы шифров для включения.
numCiphersЧисло наборов шифров для включения.
Возвращаемое значение
Код результата. Посмотрите Безопасные Транспортные Коды Результата.
Обсуждение
Можно вызвать эту функцию, например, для ограничения наборов шифров теми, которые используют экспортные размеры ключа или для поддерживаемых определенной версией протокола.
Эта функция может быть вызвана только, когда никакой сеанс не активен. Набор по умолчанию включенных наборов шифров является полным набором поддерживаемых наборов шифров, полученных путем вызова
SSLGetSupportedCiphersфункция.Вызовите
SSLGetEnabledCiphersфункция для определения, какие наборы шифров SSL в настоящее время включаются.Оператор импорта
Objective C
@import Security;Swift
import SecurityДоступность
Доступный в OS X v10.2 и позже.
-
Решает, что число наборов шифров в настоящее время включало.
Объявление
Swift
func SSLGetNumberEnabledCiphers(_context: SSLContext!, _numCiphers: UnsafeMutablePointer<UInt>) -> OSStatusObjective C
OSStatus SSLGetNumberEnabledCiphers ( SSLContextRef context, size_t *numCiphers );Параметры
contextСсылка контекста сеанса SSL.
numCiphersПо возврату, точкам к числу включенных наборов шифров.
Возвращаемое значение
Код результата. Посмотрите Безопасные Транспортные Коды Результата.
Обсуждение
Когда Вы вызываете, Вы используете число включенных наборов шифров, возвращенных этой функцией
SSLGetEnabledCiphersфункция для получения списка в настоящее время включаемых наборов шифров.Оператор импорта
Objective C
@import Security;Swift
import SecurityДоступность
Доступный в OS X v10.2 и позже.
-
Определяет, какие наборы шифров SSL в настоящее время включаются.
Объявление
Swift
func SSLGetEnabledCiphers(_context: SSLContext!, _ciphers: UnsafeMutablePointer<SSLCipherSuite>, _numCiphers: UnsafeMutablePointer<UInt>) -> OSStatusObjective C
OSStatus SSLGetEnabledCiphers ( SSLContextRef context, SSLCipherSuite *ciphers, size_t *numCiphers );Параметры
contextСсылка контекста сеанса SSL.
ciphersПо возврату, точкам к включенным наборам шифров. Перед вызовом необходимо выделить этот буфер с помощью числа включенных наборов шифров, полученных от вызова до
SSLGetNumberEnabledCiphersфункция.numCiphersУказатель на число включенных наборов шифров. Перед вызовом получите это значение путем вызова
SSLGetNumberEnabledCiphersфункция.Возвращаемое значение
Код результата. Посмотрите Безопасные Транспортные Коды Результата. Если предоставленный буфер является слишком маленьким,
errSSLBufferOverflowвозвращается.Обсуждение
Вызовите
SSLSetEnabledCiphersфункция для указания, какие наборы шифров SSL включены.Оператор импорта
Objective C
@import Security;Swift
import SecurityДоступность
Доступный в OS X v10.2 и позже.
-
Получает набор шифров, согласованный относительно этого сеанса.
Объявление
Swift
func SSLGetNegotiatedCipher(_context: SSLContext!, _cipherSuite: UnsafeMutablePointer<SSLCipherSuite>) -> OSStatusObjective C
OSStatus SSLGetNegotiatedCipher ( SSLContextRef context, SSLCipherSuite *cipherSuite );Параметры
contextСсылка контекста сеанса SSL.
cipherSuiteПо возврату, точкам к набору шифров, согласованному относительно этого сеанса.
Возвращаемое значение
Код результата. Посмотрите Безопасные Транспортные Коды Результата.
Обсуждение
Необходимо вызвать эту функцию только, когда сеанс активен.
Оператор импорта
Objective C
@import Security;Swift
import SecurityДоступность
Доступный в OS X v10.2 и позже.
-
Указывает параметры Diffie-Hellman.
Объявление
Swift
func SSLSetDiffieHellmanParams(_context: SSLContext!, _dhParams: UnsafePointer<Void>, _dhParamsLen: UInt) -> OSStatusObjective C
OSStatus SSLSetDiffieHellmanParams ( SSLContextRef context, const void *dhParams, size_t dhParamsLen );Параметры
contextСсылка контекста сеанса SSL.
dhParamsУказатель на буфер, содержащий параметры Diffie-Hellman в, Открывает формат SSL DER.
dhParamsLenЗначение, представляющее размер буфера, на который указывают
dhParamsпараметр.Возвращаемое значение
Код результата. Посмотрите Безопасные Транспортные Коды Результата.
Обсуждение
Можно использовать эту функцию для указания ряда параметров Diffie-Hellman, которые будут использоваться Безопасным Транспортом для определенного сеанса. Использование этой функции является дополнительным. Если шифры Diffie-Hellman позволяются, сервер и клиент согласовывают шифр Diffie-Hellman, и эта функция не была вызвана, то Безопасный Транспорт вычисляет ряд процесса широкие параметры. Однако тот процесс может занять целых 30 секунд. Шифры Diffie-Hellman включены по умолчанию; посмотрите
SSLSetEnabledCiphers.В SSL/TLS параметры Diffie-Hellman всегда указываются сервером. Поэтому эта функция может быть вызвана только серверной стороной соединения.
Можно использовать
SSLGetDiffieHellmanParamsфункция для получения параметров Diffie-Hellman, указанных в более раннем вызове кSSLSetDiffieHellmanParams.Оператор импорта
Objective C
@import Security;Swift
import SecurityДоступность
Доступный в OS X v10.2 и позже.
-
Получает параметры Diffie-Hellman, указанные ранее.
Объявление
Swift
func SSLGetDiffieHellmanParams(_context: SSLContext!, _dhParams: UnsafeMutablePointer<UnsafePointer<Void>>, _dhParamsLen: UnsafeMutablePointer<UInt>) -> OSStatusObjective C
OSStatus SSLGetDiffieHellmanParams ( SSLContextRef context, const void **dhParams, size_t *dhParamsLen );Параметры
contextСсылка контекста сеанса SSL.
dhParamsПо возврату точки к буферу, содержащему блок параметра Diffie-Hellman в, Открывают формат SSL DER. Возвращенные данные не копируются и принадлежат ссылке контекста сеанса SSL; поэтому, Вы не можете изменить данные, и они выпущены автоматически при избавлении от контекста.
dhParamsLenПо возврату, точкам к длине буфера, на который указывают
dhParamsпараметр.Возвращаемое значение
Код результата. Посмотрите Безопасные Транспортные Коды Результата.
Обсуждение
Эта функция возвращает блок параметра, указанный в более раннем вызове к функции
SSLSetDiffieHellmanParams. ЕслиSSLSetDiffieHellmanParamsникогда не вызывался,dhParamsвозвраты параметраNULLиdhParamsLenвозвраты параметра0.Оператор импорта
Objective C
@import Security;Swift
import SecurityДоступность
Доступный в OS X v10.2 и позже.
-
SSLSetAllowsAnyRoot SSLSetAllowsAnyRoot(OS X v10.9)Указывает, позволяются ли корневые сертификаты от нераспознанных центров сертификации.
Объявление
Objective C
OSStatus SSLSetAllowsAnyRoot ( SSLContextRef context, Boolean anyRoot );Параметры
contextСсылка контекста сеанса SSL.
anyRootБулев флаг, указывающий, позволяются ли корневые сертификаты от нераспознанных центров сертификации (CAs). Значение по умолчанию для этого флага
false, указание, базирующееся от нераспознанного CAs, не позволяется.Возвращаемое значение
Код результата. Посмотрите Безопасные Транспортные Коды Результата.
Обсуждение
Система поддерживает ряд корневых сертификатов, подписанных известным, корневым CAs, которому доверяют. Когда
anyRootфлагtrue, Если одно из следующих двух условий происходит, безопасный Транспорт не возвращает ошибку:Коллега возвращает цепочку сертификата с корневым сертификатом, и цепочка проверяет к тому корню, но CA для корневого сертификата не является одним из известного, корневого CAs, которому доверяют. Это приводит к
errSSLUnknownRootCertзакончитесь код когдаanyRootфлагfalse.Коллега возвращает цепочку сертификата, не содержащую корневой сертификат, и сервер не может проверить цепочку к одному из доверяемых корневых сертификатов. Это приводит к
errSSLNoRootCertзакончитесь код когдаanyRootфлагfalse.
Оба из этих состояний ошибки проигнорированы когда
anyRootфлагtrue, разрешение соединения с коллегой, для которой не могли быть установлены доверительные отношения.Если Вы используете эту функцию, чтобы позволить недоверяемому корню использоваться для проверки сертификата — например, после запроса пользователя для разрешения сделать так — не забывают устанавливать
anyRootБулево значение назад кfalse. Если Вы не делаете, любой случайный корневой сертификат может использоваться для подписания цепочки сертификата. Для добавления сертификата списку доверяемых корней используйтеSecTrustSetAnchorCertificatesфункция.Оператор импорта
Objective C
@import Security;Доступность
Доступный в OS X v10.2 и позже.
Осуждаемый в OS X v10.9.
-
SSLGetAllowsAnyRoot SSLGetAllowsAnyRoot(OS X v10.9)Получает значение, указывающее, позволяется ли неизвестный корень.
Объявление
Objective C
OSStatus SSLGetAllowsAnyRoot ( SSLContextRef context, Boolean *anyRoot );Параметры
contextСсылка контекста сеанса SSL.
anyRootПо возврату, булевская переменная, указывающая текущую установку
anyRootфлаг.Возвращаемое значение
Код результата. Посмотрите Безопасные Транспортные Коды Результата.
Обсуждение
Используйте
SSLSetAllowsAnyRootфункционируйте для установки значенияanyRootфлаг. Эффект и значение этого флага описаны в обсужденииSSLSetAllowsAnyRootфункция.Оператор импорта
Objective C
@import Security;Доступность
Доступный в OS X v10.2 и позже.
Осуждаемый в OS X v10.9.
-
SSLSetAllowsExpiredRoots SSLSetAllowsExpiredRoots(OS X v10.9)Указывает, позволяются ли корневые сертификаты с истекшим сроком.
Объявление
Objective C
OSStatus SSLSetAllowsExpiredRoots ( SSLContextRef context, Boolean allowsExpired );Параметры
contextСсылка контекста сеанса SSL.
allowsExpiredБулево значение, указывающее, позволить ли корневые сертификаты с истекшим сроком. Передача
trueпозволить истекшие корни.Возвращаемое значение
Код результата. Посмотрите Безопасные Транспортные Коды Результата.
Обсуждение
Значение по умолчанию для
allowsExpiredфлагfalse. Когда этот флагfalse, Безопасный Транспорт возвращаетсяerrSSLCertExpiredзакончитесь код во время квитирования, если истекает корневой сертификат.Можно использовать
SSLGetAllowsExpiredRootsфункция для определения текущей установкиallowsExpiredфлаг.Используйте
SSLSetAllowsExpiredCertsфункционируйте для установки значения, определяющего, позволяются ли некорневые сертификаты с истекшим сроком.Оператор импорта
Objective C
@import Security;Доступность
Доступный в OS X v10.2 и позже.
Осуждаемый в OS X v10.9.
-
SSLGetAllowsExpiredRoots SSLGetAllowsExpiredRoots(OS X v10.9)Получает значение, указывающее, позволяются ли корни с истекшим сроком.
Объявление
Objective C
OSStatus SSLGetAllowsExpiredRoots ( SSLContextRef context, Boolean *allowsExpired );Параметры
contextСсылка контекста сеанса SSL.
allowsExpiredПо возврату, точкам к булеву значению, указывающему, позволяются ли корни с истекшим сроком. Если это значение
true, если цепочка сертификата заканчивается в корне с истекшим сроком, никакие ошибки не возвращаются.Возвращаемое значение
Код результата. Посмотрите Безопасные Транспортные Коды Результата.
Обсуждение
Используйте
SSLSetAllowsExpiredRootsфункция для изменения настроекallowsExpiredфлаг.Оператор импорта
Objective C
@import Security;Доступность
Доступный в OS X v10.2 и позже.
Осуждаемый в OS X v10.9.
-
SSLSetTrustedRoots SSLSetTrustedRoots(OS X v10.9)Приращения или замены набор по умолчанию доверяемых корневых сертификатов для этого сеанса.
Объявление
Objective C
OSStatus SSLSetTrustedRoots ( SSLContextRef context, CFArrayRef trustedRoots, Boolean replaceExisting );Параметры
contextСсылка контекста сеанса SSL.
trustedRootsСсылка на массив доверяемых корневых сертификатов о типе
SecCertificateRef.replaceExistingБулево значение, указывающее, заменить ли или добавить текущий доверяемый корневой набор сертификата. Если это значение
true, указанные корневые сертификаты становятся единственными корнями, которым доверяют во время этого сеанса. Если это значениеfalse, указанные корневые сертификаты добавляются к текущему набору доверяемых корневых сертификатов.Возвращаемое значение
Код результата. Посмотрите Безопасные Транспортные Коды Результата.
Обсуждение
Каждый последовательный вызов к этой функции с
replaceExistingнабор параметра кfalseрезультаты в накоплении дополнительных корневых сертификатов. Для наблюдения текущего набора доверяемых корневых сертификатов вызовитеSSLCopyTrustedRootsфункция.Оператор импорта
Objective C
@import Security;Доступность
Доступный в OS X v10.2 и позже.
Осуждаемый в OS X v10.9.
-
SSLGetTrustedRoots SSLGetTrustedRootsДоступный в OS X v10.2 через OS X v10.7Получает текущий список доверяемых корневых сертификатов.
Оператор осуждения
Использовать
SSLCopyTrustedRootsвместо этого.Объявление
Objective C
OSStatus SSLGetTrustedRoots ( SSLContextRef context, CFArrayRef *trustedRoots );Параметры
contextСсылка контекста сеанса SSL.
trustedRootsПо возврату, указателю на значение типа
CFArrayRef. Этот массив содержит значения типаSecCertificateRefпредставление текущего набора доверяемых корней. Необходимо вызватьCFReleaseфункция для этого массива и для каждогоSecCertificateRefзначение в массиве, когда Вы закончены с ними.Возвращаемое значение
Код результата. Посмотрите Безопасные Транспортные Коды Результата.
Обсуждение
Можно использовать
SSLSetTrustedRootsфункционируйте, чтобы заменить или добавить к набору доверяемых корневых сертификатов. ЕслиSSLSetTrustedRootsникогда не вызывался для этого сеанса,SSLGetTrustedRootsфункционируйте возвращает набор системы по умолчанию доверяемых корневых сертификатов.Специальные замечания
Поскольку эта функция требует, чтобы отдельно выпуск каждой ссылки сертификата возвратился, это было осуждено в пользу
SSLCopyTrustedRoots, который соответствует стандартной Базовой семантике Основы.Оператор импорта
Objective C
@import Security;Доступность
Доступный в OS X v10.2 через OS X v10.7.
Осуждаемый в OS X v10.5.
-
SSLCopyTrustedRoots SSLCopyTrustedRoots(OS X v10.9)Получает текущий список доверяемых корневых сертификатов.
Объявление
Objective C
OSStatus SSLCopyTrustedRoots ( SSLContextRef context, CFArrayRef *trustedRoots );Параметры
contextСсылка контекста сеанса SSL.
trustedRootsПо возврату, указателю на значение типа
CFArrayRef. Этот массив содержит значения типаSecCertificateRefпредставление текущего набора доверяемых корней. Необходимо вызватьCFReleaseфункционируйте для выпуска этого массива, когда Вы будете закончены с ним.Возвращаемое значение
Код результата. Посмотрите Безопасные Транспортные Коды Результата.
Обсуждение
Можно использовать
SSLSetTrustedRootsфункционируйте, чтобы заменить или добавить к набору доверяемых корневых сертификатов. ЕслиSSLSetTrustedRootsникогда не вызывался для этого сеанса,SSLCopyTrustedRootsфункционируйте возвращает набор системы по умолчанию доверяемых корневых сертификатов.Оператор импорта
Objective C
@import Security;Доступность
Доступный в OS X v10.5 и позже.
Осуждаемый в OS X v10.9.
-
Добавляют один или несколько сертификатов списку сервера центров сертификации (CAs), приемлемый для аутентификации клиента.
Объявление
Swift
func SSLSetCertificateAuthorities(_context: SSLContext!, _certificateOrArray: AnyObject!, _replaceExisting: Boolean) -> OSStatusObjective C
OSStatus SSLSetCertificateAuthorities ( SSLContextRef context, CFTypeRef certificateOrArray, Boolean replaceExisting );Параметры
contextСсылка контекста сеанса SSL.
certificateOrArrayЗначение типа
SecCertificateRef, или значение типаCFArrayсодержа массивSecCertificateRefзначения, представляя один или несколько сертификатов, которые будут добавлены к списку сервера приемлемых центров сертификации (CAs).replaceExistingБулево значение, указывающее, заменить ли или добавить текущий набор центров сертификации. Если это значение
true, указанные сертификаты заменяют существующий список приемлемого CAs, если таковые имеются. Еслиfalse, указанные сертификаты добавляются к существующему списку.Возвращаемое значение
Код результата. Посмотрите Безопасные Транспортные Коды Результата. Возвраты
paramErrесли эта функция вызвана для сеанса, сконфигурированного как клиент, или когда сеанс активен.Обсуждение
Каждый последовательный вызов к этой функции с
replaceExistingнабор параметра кfalseрезультаты в накоплении дополнительных центров сертификации. Для наблюдения текущего набора центров сертификации вызовитеSSLCopyCertificateAuthoritiesфункция.Оператор импорта
Objective C
@import Security;Swift
import SecurityДоступность
Доступный в OS X v10.5 и позже.
-
Получает текущий список центров сертификации.
Объявление
Swift
func SSLCopyCertificateAuthorities(_context: SSLContext!, _trustedRoots: UnsafeMutablePointer<Unmanaged<CFArray>?>) -> OSStatusObjective C
OSStatus SSLCopyCertificateAuthorities ( SSLContextRef context, CFArrayRef *certificates );Параметры
contextСсылка контекста сеанса SSL.
trustedRootsПо возврату, указателю на значение типа
CFArrayRef. Этот массив содержит значения типаSecCertificateRefпредставление текущего набора центров сертификации (указанный сSSLSetCertificateAuthoritiesфункция). Возвраты aNULLмассив, еслиSSLSetCertificateAuthoritiesне был вызван. Необходимо вызватьCFReleaseфункционируйте для выпуска этого массива, когда Вы будете закончены с ним.Возвращаемое значение
Код результата. Посмотрите Безопасные Транспортные Коды Результата.
Оператор импорта
Objective C
@import Security;Swift
import SecurityДоступность
Доступный в OS X v10.5 и позже.
-
Неподдерживаемый.
Объявление
Swift
func SSLAddDistinguishedName(_context: SSLContext!, _derDN: UnsafePointer<Void>, _derDNLen: UInt) -> OSStatusObjective C
OSStatus SSLAddDistinguishedName ( SSLContextRef context, const void *derDN, size_t derDNLen );Параметры
contextСсылка контекста сеанса SSL.
derDNУказатель на буфер, содержащий закодированное DER отличительное имя.
derDNLenЗначение типа
size_tна представление размера буфера указывает параметрderDN.Возвращаемое значение
Код результата. Посмотрите Безопасные Транспортные Коды Результата.
Обсуждение
Эта функция не была реализована и не поддерживается в это время.
Оператор импорта
Objective C
@import Security;Swift
import SecurityДоступность
Неподдерживаемый.
-
Получает отличительные имена приемлемых центров сертификации.
Объявление
Swift
func SSLCopyDistinguishedNames(_context: SSLContext!, _names: UnsafeMutablePointer<Unmanaged<CFArray>?>) -> OSStatusObjective C
OSStatus SSLCopyDistinguishedNames ( SSLContextRef context, CFArrayRef *names );Параметры
contextСсылка контекста сеанса SSL.
namesПо возврату, массиву
CFDataRefобъекты, каждый представляющий одно закодированное DER относительное отличительное имя приемлемого центра сертификации. Необходимо вызватьCFReleaseфункционируйте для выпуска этого массива, когда Вы будете закончены с ним.Возвращаемое значение
Код результата. Посмотрите Безопасные Транспортные Коды Результата.
Обсуждение
Если ссылка контекста представляет клиент, список отличительных имен предоставлен сервером; если ссылка контекста представляет сервер, список отличительных имен указан с
SSLSetCertificateAuthoritiesфункция.Массив, полученный этой функцией, подходит для использования в нахождении клиентских идентификационных данных (т.е. сертификат и связанный закрытый ключ), который соответствует требования сервера.
Оператор импорта
Objective C
@import Security;Swift
import SecurityДоступность
Доступный в OS X v10.5 и позже.
-
SSLSetAllowsExpiredCerts SSLSetAllowsExpiredCerts(OS X v10.9)Указывает, проигнорированы ли времена истечения срока сертификата.
Объявление
Objective C
OSStatus SSLSetAllowsExpiredCerts ( SSLContextRef context, Boolean allowsExpired );Параметры
contextСсылка контекста сеанса SSL.
allowsExpiredПредставление булева флага, проигнорированы ли времена истечения срока сертификата. Значение по умолчанию для этого флага
false, значение истекло результат сертификатов вerrSSLCertExpiredкод результата.Возвращаемое значение
Код результата. Посмотрите Безопасные Транспортные Коды Результата.
Обсуждение
Даже если один или несколько сертификатов в цепочке сертификата истекли, можно использовать эту функцию, чтобы позволить квитированию успешно выполняться. Можно использовать
SSLGetAllowsExpiredCertsфункция для определения текущей установкиallowsExpiredфлаг.Используйте
SSLSetAllowsExpiredRootsфункционируйте для установки флага, указывающего, позволяются ли корневые сертификаты с истекшим сроком.Оператор импорта
Objective C
@import Security;Доступность
Доступный в OS X v10.2 и позже.
Осуждаемый в OS X v10.9.
-
SSLGetAllowsExpiredCerts SSLGetAllowsExpiredCerts(OS X v10.9)Получает значение, указывающее, позволяются ли сертификаты с истекшим сроком.
Объявление
Objective C
OSStatus SSLGetAllowsExpiredCerts ( SSLContextRef context, Boolean *allowsExpired );Параметры
contextСсылка контекста сеанса SSL.
allowsExpiredПо возврату этот флаг установлен в значение булева флага, указывающего, проигнорированы ли сертификаты с истекшим сроком. Если это значение
true, если какие-либо сертификаты в цепочке сертификата истекают, тогда Безопасный Транспорт не возвращает ошибку.Возвращаемое значение
Код результата. Посмотрите Безопасные Транспортные Коды Результата.
Обсуждение
Можно установить
allowsExpiredфлаг, чтобы позволить квитированию успешно выполняться, даже если истекли один или несколько сертификатов в цепочке сертификата. Эта функция возвращает текущую установку этого флага. ИспользуйтеSSLSetAllowsExpiredCertsфункционируйте для установки значенияallowsExpiredфлаг.Оператор импорта
Objective C
@import Security;Доступность
Доступный в OS X v10.2 и позже.
Осуждаемый в OS X v10.9.
-
Указывает сертификат или сертификаты этого соединения.
Объявление
Swift
func SSLSetCertificate(_context: SSLContext!, _certRefs: CFArray!) -> OSStatusObjective C
OSStatus SSLSetCertificate ( SSLContextRef context, CFArrayRef certRefs );Параметры
contextСсылка контекста сеанса SSL.
certRefsСертификаты установленному. Этот массив содержит элементы типа
SecCertificateRef, за исключениемcertRefs[0], который имеет типSecIdentityRef.Возвращаемое значение
Код результата. Посмотрите Безопасные Транспортные Коды Результата.
Обсуждение
Установка сертификата или сертификатов является обязательной для серверных соединений, но является дополнительной для клиентов. Указание сертификата для клиента включает аутентификацию клиентской стороны SSL. Необходимо поместить в
certRefs[0]aSecIdentityRefобъект, идентифицирующий листовой сертификат и его соответствующий закрытый ключ. Указание корневого сертификата является дополнительным; если это не указано, проверяющий корневой сертификат, цепочка сертификата, указанная здесь, должна присутствовать в наборе в масштабе всей системы доверяемых сертификатов привязки.Эта функция должна быть вызвана перед вызовом
SSLHandshake, или сразу послеSSLHandshakeвозвратилсяerrSSLClientCertRequested(т.е. прежде чем квитирование возобновляется путем вызоваSSLHandshakeснова).Безопасный Транспорт принимает следующее:
Ссылки сертификата остаются допустимыми для времени жизни сеанса.
Идентификационные данные, указанные в
certRefs[0]способно к подписанию.
Требуемые возможности идентификационных данных, указанных в
certRefs[0]— и дополнительного сертификата, указанного вSSLSetEncryptionCertificateфункция — очень зависит от приложения. Например, для работы сервером с клиентами Netscape идентификационные данные, указанные здесь, должны быть способны и к подписанию и к шифрованию. ИспользуйтеSSLCopyDistinguishedNamesфункция для получения списка сертификатов, приемлемых для сервера.Оператор импорта
Objective C
@import Security;Swift
import SecurityДоступность
Доступный в OS X v10.2 и позже.
-
Получает обменное состояние клиентского сертификата.
Объявление
Swift
func SSLGetClientCertificateState(_context: SSLContext!, _clientState: UnsafeMutablePointer<SSLClientCertificateState>) -> OSStatusObjective C
OSStatus SSLGetClientCertificateState ( SSLContextRef context, SSLClientCertificateState *clientState );Параметры
contextСсылка контекста сеанса SSL.
clientStateПо возврату, указателю на значение, указывающее состояние клиентского обмена сертификата. Посмотрите
“SSL Client Certificate State Constants”для списка возможных значений.Возвращаемое значение
Код результата. Посмотрите Безопасные Транспортные Коды Результата.
Обсуждение
Значение возвратилось, отражает последнее изменение в состоянии клиентского обмена сертификата. Если любая коллега инициирует попытку пересмотра, Безопасный Транспорт сбрасывает состояние к
kSSLClientCertNone.Оператор импорта
Objective C
@import Security;Swift
import SecurityДоступность
Доступный в OS X v10.3 и позже.
-
SSLSetEnableCertVerify SSLSetEnableCertVerify(OS X v10.9)Включает или отключает равноправную проверку цепочки сертификата.
Объявление
Objective C
OSStatus SSLSetEnableCertVerify ( SSLContextRef context, Boolean enableVerify );Параметры
contextСсылка контекста сеанса SSL.
enableVerifyБулево значение, указывающее, включена ли равноправная проверка цепочки сертификата. Проверка цепочки сертификата включена по умолчанию. Указать
falseотключить проверку.Возвращаемое значение
Код результата. Посмотрите Безопасные Транспортные Коды Результата.
Обсуждение
По умолчанию Безопасный Транспорт пытается проверить цепочку сертификата во время обмена равноправными сертификатами. При отключении равноправной проверки цепочки сертификата это - ответственность вызвать
SSLCopyPeerCertificatesпосле успешного завершения квитирования и затем проверить равноправную цепочку сертификата прежде, чем передать данные.Можно использовать
SSLGetEnableCertVerifyфункция для определения текущей установкиenableVerifyфлаг.Оператор импорта
Objective C
@import Security;Доступность
Доступный в OS X v10.2 и позже.
Осуждаемый в OS X v10.9.
-
SSLGetEnableCertVerify SSLGetEnableCertVerify(OS X v10.9)Определяет, включается ли в настоящее время равноправная проверка цепочки сертификата.
Объявление
Objective C
OSStatus SSLGetEnableCertVerify ( SSLContextRef context, Boolean *enableVerify );Параметры
contextСсылка контекста сеанса SSL.
enableVerifyПо возврату, указателю на булево значение, указывающее, включена ли равноправная проверка цепочки сертификата. Если это значение
true, тогда Безопасный Транспорт автоматически пытается проверить цепочку сертификата во время обмена равноправными сертификатами.Возвращаемое значение
Код результата. Посмотрите Безопасные Транспортные Коды Результата.
Обсуждение
Используйте
SSLSetEnableCertVerifyфункционируйте для установки значенияenableVerifyфлаг.Оператор импорта
Objective C
@import Security;Доступность
Доступный в OS X v10.2 и позже.
Осуждаемый в OS X v10.9.
-
Указывает сертификаты шифрования, используемые для этого соединения.
Объявление
Swift
func SSLSetEncryptionCertificate(_context: SSLContext!, _certRefs: CFArray!) -> OSStatusObjective C
OSStatus SSLSetEncryptionCertificate ( SSLContextRef context, CFArrayRef certRefs );Параметры
contextСсылка контекста сеанса SSL.
certRefsЗначение типа
CFArrayRefобращение к массиву ссылок сертификата. Ссылки являются типомSecCertificateRef, за исключениемcertRefs[0], который имеет типSecIdentityRef.Возвращаемое значение
Код результата. Посмотрите Безопасные Транспортные Коды Результата.
Обсуждение
Используйте эту функцию в одном из следующих случаев:
Листовой сертификат, указанный в
SSLSetCertificateфункция не способна к шифрованию.Листовой сертификат, указанный в
SSLSetCertificateфункция содержит ключ, который является слишком большим или сильным для юридического шифрования в этом сеансе. В этом случае более слабый сертификат указан здесь и используется для инициируемого в сервер ключевого обмена.
Следующие предположения сделаны:
certRefsссылки параметра остаются допустимыми для времени жизни соединения.Указанное
certRefs[0]значение способно к шифрованию.
Эта функция может быть вызвана только, когда никакой сеанс не активен.
Серверы SSL, осуществляющие SSL3 или спецификацию TLS1 к букве, не принимают сертификаты шифрования с размерами ключа, больше, чем 512 битов для экспортных шифров (т.е. для сеансов SSL с 40-разрядными сеансовыми ключами). Поэтому, если Вы хотите поддерживать экспортные шифры, и Ваш сертификат имеет ключ, больше, чем 512 битов, необходимо указать отдельный сертификат шифрования.
Оператор импорта
Objective C
@import Security;Swift
import SecurityДоступность
Доступный в OS X v10.2 и позже.
-
SSLGetPeerCertificates SSLGetPeerCertificatesДоступный в OS X v10.2 через OS X v10.7Получает равноправный сертификат.
Оператор осуждения
Использовать
SSLCopyPeerCertificatesвместо этого.Объявление
Objective C
OSStatus SSLGetPeerCertificates ( SSLContextRef context, CFArrayRef *certs );Параметры
contextСсылка контекста сеанса SSL.
certsПо возврату, указателю на массив значений типа
SecCertificateRefпредставление равноправного сертификата и цепочки сертификата раньше проверяло его. Сертификат в индексе 0 возвращенного массива является равноправным сертификатом (предмет вызова функции — сертификат конца в цепочке); корневой сертификат (или самый близкий сертификат ему) в конце возвращенного массива. Целый массив создается библиотекой Secure Transport; необходимо вызватьCFReleaseфункция для этого массива и для каждогоSecCertificateRefзначение в массиве, когда Вы закончены с ними.Возвращаемое значение
Код результата. Посмотрите Безопасные Транспортные Коды Результата.
Обсуждение
Эта функция допустима любое время после попытки квитирования. Можно использовать его, чтобы исследовать равноправный сертификат, исследовать цепочку сертификата для определения, почему попытка квитирования перестала работать, или получать цепочку сертификата для проверки сертификата сами. (Для отключения проверки так, чтобы можно было проверить сертификат сами используйте
SSLSetSessionOptionфункционируйте для установки сеансаkSSLSessionOptionBreakOnServerAuthфлаг.)Специальные замечания
Поскольку эта функция требует, чтобы отдельно выпуск каждой ссылки сертификата возвратился, это было осуждено в пользу
SSLCopyPeerCertificates, который соответствует стандартной Базовой семантике Основы.Оператор импорта
Objective C
@import Security;Доступность
Доступный в OS X v10.2 через OS X v10.7.
Осуждаемый в OS X v10.5.
-
SSLCopyPeerCertificates SSLCopyPeerCertificates(OS X v10.9)Получает равноправный сертификат и его цепочку сертификата.
Объявление
Objective C
OSStatus SSLCopyPeerCertificates ( SSLContextRef context, CFArrayRef *certs );Параметры
contextСсылка контекста сеанса SSL.
certsПо возврату, указателю на массив значений типа
SecCertificateRefпредставление равноправного сертификата и цепочки сертификата раньше проверяло его. Сертификат в индексе 0 возвращенного массива является равноправным сертификатом (предмет вызова функции — сертификат конца в цепочке); корневой сертификат (или самый близкий сертификат ему) в конце возвращенного массива. Целый массив создается библиотекой Secure Transport; необходимо вызватьCFReleaseфункция для этого массива, когда Вы закончены с ним.Возвращаемое значение
Код результата. Посмотрите Безопасные Транспортные Коды Результата.
Обсуждение
Эта функция допустима любое время после попытки квитирования. Можно использовать его, чтобы исследовать равноправный сертификат, исследовать цепочку сертификата для определения, почему попытка квитирования перестала работать, или получать цепочку сертификата для проверки сертификата сами. (Для отключения проверки так, чтобы можно было проверить сертификат сами используйте
SSLSetSessionOptionфункционируйте для установки сеансаkSSLSessionOptionBreakOnServerAuthфлаг.)Оператор импорта
Objective C
@import Security;Доступность
Доступный в OS X v10.5 и позже.
Осуждаемый в OS X v10.9.
-
Получает доверительный объект управления для сертификата, используемого сеансом.
Объявление
Swift
func SSLCopyPeerTrust(_context: SSLContext!, _trust: UnsafeMutablePointer<Unmanaged<SecTrust>?>) -> OSStatusObjective C
OSStatus SSLCopyPeerTrust ( SSLContextRef context, SecTrustRef *trust );Параметры
contextСсылка контекста сеанса SSL.
trustПо возврату доверительный объект управления можно использовать для оценки доверия для сертификата, используемого сеансом. Доверительный объект управления включает сертификат, который будет проверен плюс политика или политики, которые будут использоваться в оценке доверия. См. Сертификат, Ключ и Ссылку Trust Services для функций, чтобы создать и оценить доверительные объекты управления. Необходимо вызвать
CFReleaseфункция для этого объекта, когда Вы закончены с ним.Возвращаемое значение
Код результата. Посмотрите Безопасные Транспортные Коды Результата.
Обсуждение
Эта функция допустима любое время после попытки квитирования.
Оператор импорта
Objective C
@import Security;Swift
import SecurityДоступность
Доступный в OS X v10.6 и позже.
-
Указывает полностью определенное доменное имя коллеги.
Объявление
Swift
func SSLSetPeerDomainName(_context: SSLContext!, _peerName: UnsafePointer<Int8>, _peerNameLen: UInt) -> OSStatusObjective C
OSStatus SSLSetPeerDomainName ( SSLContextRef context, const char *peerName, size_t peerNameLen );Параметры
contextСсылка контекста сеанса SSL.
peerNameПолностью определенное доменное имя коллеги — например,
store.apple.com. Имя находится в форме струны до, за исключением того, чтоNULLзавершение является дополнительным.peerNameLenЧисло байтов передало в
peerNameпараметр.Возвращаемое значение
Код результата. Посмотрите Безопасные Транспортные Коды Результата.
Обсуждение
Можно использовать эту функцию для проверки поля общего названия в сертификате коллеги. Если Вы вызываете эту функцию, и общее название в сертификате не соответствует значение, которое Вы указываете в
peerNameпараметр, затем квитируйте сбои и возвратыerrSSLXCertChainInvalid. Использование этой функции является дополнительным.Эта функция может быть вызвана только, когда никакой сеанс не активен.
Оператор импорта
Objective C
@import Security;Swift
import SecurityДоступность
Доступный в OS X v10.2 и позже.
-
Определяет длину ранее равноправное доменное имя набора.
Объявление
Swift
func SSLGetPeerDomainNameLength(_context: SSLContext!, _peerNameLen: UnsafeMutablePointer<UInt>) -> OSStatusObjective C
OSStatus SSLGetPeerDomainNameLength ( SSLContextRef context, size_t *peerNameLen );Параметры
contextСсылка контекста сеанса SSL.
peerNameLenПо возврату, точкам к длине равноправного доменного имени.
Возвращаемое значение
Код результата. Посмотрите Безопасные Транспортные Коды Результата.
Обсуждение
Если Вы ранее вызвали
SSLSetPeerDomainNameфункция для указания полностью определенного доменного имени для равноправного сертификата можно использоватьSSLGetPeerDomainNameфункция для получения равноправного доменного имени. Прежде, чем сделать так, необходимо вызватьSSLGetPeerDomainNameLengthфункция для получения размера буфера, необходимого для доменного имени.Оператор импорта
Objective C
@import Security;Swift
import SecurityДоступность
Доступный в OS X v10.2 и позже.
-
Получает равноправное доменное имя, указанное ранее.
Объявление
Swift
func SSLGetPeerDomainName(_context: SSLContext!, _peerName: UnsafeMutablePointer<Int8>, _peerNameLen: UnsafeMutablePointer<UInt>) -> OSStatusObjective C
OSStatus SSLGetPeerDomainName ( SSLContextRef context, char *peerName, size_t *peerNameLen );Параметры
contextСсылка контекста сеанса SSL.
peerNameПо возврату, точкам к равноправному доменному имени.
peerNameLenУказатель на длину равноправного доменного имени. Прежде, чем вызвать эту функцию, получите равноправную длину доменного имени путем вызывания функции
SSLGetPeerDomainNameLength.Возвращаемое значение
Код результата. Посмотрите Безопасные Транспортные Коды Результата.
Обсуждение
Если Вы ранее вызвали
SSLSetPeerDomainNameфункция для указания полностью определенного доменного имени для равноправного сертификата можно использоватьSSLGetPeerDomainNameфункция для получения доменного имени.Оператор импорта
Objective C
@import Security;Swift
import SecurityДоступность
Доступный в OS X v10.2 и позже.
-
SSLSetProtocolVersion SSLSetProtocolVersion(OS X v10.8)Устанавливает версию протокола SSL. Эта функция осуждается.
Объявление
Objective C
OSStatus SSLSetProtocolVersion ( SSLContextRef context, SSLProtocol version );Параметры
contextСсылка контекста сеанса SSL.
versionВерсия протокола SSL для согласования.
Возвращаемое значение
Код результата. Посмотрите Безопасные Транспортные Коды Результата.
Обсуждение
Используйте
SSLSetProtocolVersionEnabledфункция вместо этого.Когда сеанс активен, эта функция не может быть вызвана.
Оператор импорта
Objective C
@import Security;Доступность
Доступный в OS X v10.2 и позже.
Осуждаемый в OS X v10.8.
-
SSLGetProtocolVersion SSLGetProtocolVersion(OS X v10.8)Получает версию протокола SSL. Эта функция осуждается.
Объявление
Objective C
OSStatus SSLGetProtocolVersion ( SSLContextRef context, SSLProtocol *protocol );Параметры
contextСсылка контекста сеанса SSL.
protocolПо возврату, указателю на версию протокола SSL.
Возвращаемое значение
Код результата. Посмотрите Безопасные Транспортные Коды Результата.
Обсуждение
Используйте
SSLGetProtocolVersionEnabledфункция вместо этого.Оператор импорта
Objective C
@import Security;Доступность
Доступный в OS X v10.2 и позже.
Осуждаемый в OS X v10.8.
-
Выделяет и возвращает новое
SSLContextRefобъект.Объявление
Swift
func SSLCreateContext(_alloc: CFAllocator!, _protocolSide: SSLProtocolSide, _connectionType: SSLConnectionType) -> Unmanaged<SSLContext>!Objective C
SSLContextRef SSLCreateContext ( CFAllocatorRef alloc, SSLProtocolSide protocolSide, SSLConnectionType connectionType );Параметры
allocСредство выделения для использования. Передача
NULLилиkCFAllocatorDefaultиспользовать средство выделения по умолчанию.protocolSideТакже
kSSLServerSideилиkSSLClientSide.connectionTypeТакже
kSSLStreamTypeилиkSSLDatagramType.Оператор импорта
Objective C
@import Security;Swift
import SecurityДоступность
Доступный в OS X v10.8 и позже.
-
Обеспечивает самый большой пакет, что OS гарантирует, что может отправить без фрагментации.
Объявление
Swift
func SSLGetDatagramWriteSize(_dtlsContext: SSLContext!, _bufSize: UnsafeMutablePointer<UInt>) -> OSStatusObjective C
OSStatus SSLGetDatagramWriteSize ( SSLContextRef dtlsContext, size_t *bufSize );Параметры
dtlsContextКонтекст SSL связался с соединением.
bufSizeАдрес a
size_tцелое число для хранения длины.Возвращаемое значение
Возвраты 0 на успехе или коде ошибки от
MacErrors.h.Обсуждение
Несмотря на то, что любой пакет ниже этого порогового размера не будет фрагментирован OS, когда отправлено с помощью
SSLWrite, эта функция не предоставляет гарантий о том, будет ли пакет фрагментирован маршрутизаторами в пути. Это значение размера равно максимальному размеру Записи Дейтаграммы (установленный путем вызоваSSLSetMaxDatagramRecordSize) минус размер заголовка Записи DTLS.Оператор импорта
Objective C
@import Security;Swift
import SecurityДоступность
Доступный в OS X v10.8 и позже.
-
Получает максимальный размер записи дейтаграммы (включая всю Дейтаграмму заголовки записи TLS) позволенный приложением для данного контекста SSL.
Объявление
Swift
func SSLGetMaxDatagramRecordSize(_dtlsContext: SSLContext!, _bufSize: UnsafeMutablePointer<UInt>) -> OSStatusObjective C
OSStatus SSLGetMaxDatagramRecordSize ( SSLContextRef dtlsContext, size_t *maxSize );Параметры
dtlsContextКонтекст SSL связался с соединением.
bufSizeАдрес a
size_tцелое число для хранения длины.Возвращаемое значение
Возвраты 0 на успехе или коде ошибки от
MacErrors.h.Обсуждение
Приложение может указать новое значение путем вызова
SSLSetMaxDatagramRecordSize, до максимального размера пакета UDP (который, в свою очередь, основывается на базовом протоколе IP).Оператор импорта
Objective C
@import Security;Swift
import SecurityДоступность
Доступный в OS X v10.8 и позже.
-
Позволили максимальную версию протокола приложением для данного контекста SSL.
Объявление
Swift
func SSLGetProtocolVersionMax(_dtlsContext: SSLContext!, _maxVersion: UnsafeMutablePointer<SSLProtocol>) -> OSStatusObjective C
OSStatus SSLGetProtocolVersionMax ( SSLContextRef context, SSLProtocol *maxVersion );Параметры
dtlsContextКонтекст SSL связался с соединением.
maxVersionАдрес
SSLProtocolцелое число, где должна быть сохранена максимальная версия. Посмотрите Константы Протокола SSL для списка возможных значений.Возвращаемое значение
Возвраты 0 на успехе или коде ошибки от
MacErrors.h.Оператор импорта
Objective C
@import Security;Swift
import SecurityДоступность
Доступный в OS X v10.8 и позже.
-
Позволили минимальную версию протокола приложением для данного контекста SSL.
Объявление
Swift
func SSLGetProtocolVersionMin(_dtlsContext: SSLContext!, _minVersion: UnsafeMutablePointer<SSLProtocol>) -> OSStatusObjective C
OSStatus SSLGetProtocolVersionMin ( SSLContextRef context, SSLProtocol *minVersion );Параметры
dtlsContextКонтекст SSL связался с соединением.
minVersionАдрес
SSLProtocolцелое число, где должна быть сохранена минимальная версия. Посмотрите Константы Протокола SSL для списка возможных значений.Возвращаемое значение
Возвраты 0 на успехе или коде ошибки от
MacErrors.h.Оператор импорта
Objective C
@import Security;Swift
import SecurityДоступность
Доступный в OS X v10.8 и позже.
-
Устанавливает значение cookie, используемое в Дейтаграмме приветственное сообщение TLS.
Объявление
Swift
func SSLSetDatagramHelloCookie(_dtlsContext: SSLContext!, _cookie: UnsafePointer<Void>, _cookieLen: UInt) -> OSStatusObjective C
OSStatus SSLSetDatagramHelloCookie ( SSLContextRef dtlsContext, const void *cookie, size_t cookieLen );Параметры
dtlsContextКонтекст SSL связался с соединением.
cookieЗначение cookie.
cookieLenДлина cookie (до 32 байтов).
Возвращаемое значение
Возвраты 0 на успехе или коде ошибки от
MacErrors.h.Обсуждение
Эта функция должна быть вызвана только на серверной стороне и дополнительная. Cookie по умолчанию является cookie нулевой длины.
Оператор импорта
Objective C
@import Security;Swift
import SecurityДоступность
Доступный в OS X v10.8 и позже.
-
Получает максимальный размер записи дейтаграммы (включая всю Дейтаграмму заголовки записи TLS) позволенный приложением для данного контекста SSL.
Объявление
Swift
func SSLSetMaxDatagramRecordSize(_dtlsContext: SSLContext!, _bufSize: UInt) -> OSStatusObjective C
OSStatus SSLSetMaxDatagramRecordSize ( SSLContextRef dtlsContext, size_t maxSize );Параметры
dtlsContextКонтекст SSL связался с соединением.
bufSizeЗначение длины.
Возвращаемое значение
Возвраты 0 на успехе или коде ошибки от
MacErrors.h.Обсуждение
Приложение может указать новое значение до максимального размера пакета UDP (который, в свою очередь, основывается на базовом протоколе IP).
Оператор импорта
Objective C
@import Security;Swift
import SecurityДоступность
Доступный в OS X v10.8 и позже.
-
Устанавливает максимальную версию протокола, позволенную приложением для данного контекста SSL.
Объявление
Swift
func SSLSetProtocolVersionMax(_dtlsContext: SSLContext!, _maxVersion: SSLProtocol) -> OSStatusObjective C
OSStatus SSLSetProtocolVersionMax ( SSLContextRef context, SSLProtocol maxVersion );Параметры
dtlsContextКонтекст SSL связался с соединением.
maxVersionНовая максимальная версия (
kTLSProtocol1, например). Посмотрите Константы Протокола SSL для полного списка.Возвращаемое значение
Возвраты 0 на успехе или коде ошибки от
MacErrors.h.Оператор импорта
Objective C
@import Security;Swift
import SecurityДоступность
Доступный в OS X v10.8 и позже.
-
Устанавливает минимальную версию протокола, позволенную приложением для данного контекста SSL.
Объявление
Swift
func SSLSetProtocolVersionMin(_dtlsContext: SSLContext!, _minVersion: SSLProtocol) -> OSStatusObjective C
OSStatus SSLSetProtocolVersionMin ( SSLContextRef context, SSLProtocol minVersion );Параметры
dtlsContextКонтекст SSL связался с соединением.
minVersionНовая минимальная версия (
kTLSProtocol1, например). Посмотрите Константы Протокола SSL для полного списка.Возвращаемое значение
Возвраты 0 на успехе или коде ошибки от
MacErrors.h.Оператор импорта
Objective C
@import Security;Swift
import SecurityДоступность
Доступный в OS X v10.8 и позже.
-
Определяет указатель на специализированную функцию чтения, которые Защищают Транспортные вызовы для чтения данных из соединения.
Объявление
Swift
typealias SSLReadFunc = CFunctionPointer<((SSLConnectionRef, UnsafeMutablePointer<Void>, UnsafeMutablePointer<UInt>) -> OSStatus)>Objective C
typedef OSStatus (*SSLReadFunc) ( SSLConnectionRef connection, void *data, size_t *dataLength );Параметры
connectionСсылка соединения.
dataПо возврату Ваш обратный вызов должен перезаписать память в этом расположении с данными, считанными из соединения.
dataLengthНа вводе, указателе на целое число, представляющее длину данных в байтах. По возврату Ваш обратный вызов должен перезаписать то целое число с числом байтов, фактически переданных.
Возвращаемое значение
Ваш обратный вызов должен возвратить надлежащий код результата. Посмотрите Безопасные Транспортные Коды Результата.
Обсуждение
Перед использованием Безопасного Транспортного API необходимо создать функцию чтения (соответствующий
SSLReadFuncпрототип) и функция записи (соответствующийSSLWriteFuncпрототип), и предоставляют их библиотеке путем вызоваSSLSetIOFuncsфункция.Можно сконфигурировать базовое соединение для работы способом неблокирования; в этом случае операция чтения может возвратиться
errSSLWouldBlock, указание меньшего количества данных, чем требуемый было передано, и ничто не неправильно за исключением того, что не завершился требуемый I/O. Этот результат возвращается к вызывающей стороне от функцийSSLRead,SSLWrite, илиSSLHandshake.Оператор импорта
Objective C
@import Security;Swift
import SecurityДоступность
Доступный в OS X v10.2 и позже.
См. также
-
Определяет указатель на специализированную функцию записи, которые Защищают Транспортные вызовы для записи данных в соединение.
Объявление
Swift
typealias SSLWriteFunc = CFunctionPointer<((SSLConnectionRef, UnsafePointer<Void>, UnsafeMutablePointer<UInt>) -> OSStatus)>Objective C
typedef OSStatus (*SSLWriteFunc) ( SSLConnectionRef connection, const void *data, size_t *dataLength );Параметры
connectionСсылка соединения на время сеанса SSL.
dataУказатель на данные для записи в соединение. Необходимо выделить эту память прежде, чем вызвать эту функцию.
dataLengthПеред вызовом, целое число, представляющее длину данных в байтах. По возврату это - число байтов, фактически переданных.
Возвращаемое значение
Код результата. Посмотрите Безопасные Транспортные Коды Результата.
Обсуждение
Перед использованием Безопасного Транспортного API необходимо записать функции
SSLReadFuncи SSLWriteFunc и предоставляют их библиотеке путем вызоваSSLSetIOFuncsфункция.Можно сконфигурировать базовое соединение для работы способом неблокирования. В этом случае операция записи может возвратиться
errSSLWouldBlock, указание меньшего количества данных, чем требуемый было передано, и ничто не неправильно за исключением того, что не завершился требуемый I/O. Этот результат возвращается к вызывающей стороне от функцийSSLRead,SSLWrite, илиSSLHandshake.Оператор импорта
Objective C
@import Security;Swift
import SecurityДоступность
Доступный в OS X v10.2 и позже.
См. также
-
Представляет указатель на непрозрачный объект соединения I/O.
Объявление
Swift
typealias SSLConnectionRef = UnsafePointer<Void>Objective C
typedef const void *SSLConnectionRef;Обсуждение
Объект соединения I/O относится к данным, идентифицирующим соединение. Данные о соединении непрозрачны для Обеспечения Транспорта; можно установить его в любое значение, которое приложение может использовать в функциях обратного вызова
SSLReadFuncиSSLWriteFuncоднозначно определять соединение, такое как сокет или конечная точка. ИспользуйтеSSLSetConnectionфункция для присвоения значения объекту соединения.Оператор импорта
Objective C
@import Security;Swift
import SecurityДоступность
Доступный в OS X v10.2 и позже.
-
Представляет указатель на непрозрачный объект контекста сеанса SSL.
Объявление
Swift
typealias SSLContextRef = SSLContextObjective C
struct SSLContext; typedef struct SSLContext *SSLContextRef;Обсуждение
Объект контекста сеанса SSL ссылается на состояние, связанное с сеансом. Вы не можете снова использовать контекст сеанса SSL в многократных сеансах.
Доступность
Доступный в OS X v10.2 и позже.
-
Представляет требования для аутентификации клиентской стороны.
Объявление
Swift
struct SSLAuthenticate { init(_value: UInt32) var value: UInt32 }Objective C
typedef enum { kNeverAuthenticate, kAlwaysAuthenticate, kTryAuthenticate } SSLAuthenticate;Константы
-
kNeverAuthenticatekNeverAuthenticateУказывает, что не требуется аутентификация клиентской стороны. (Значение по умолчанию).
Доступный в OS X v10.2 и позже.
-
kAlwaysAuthenticatekAlwaysAuthenticateУказывает, что требуется аутентификация клиентской стороны.
Доступный в OS X v10.2 и позже.
-
kTryAuthenticatekTryAuthenticateУказывает, что должна быть опробована аутентификация клиентской стороны. Если у клиента нет сертификата, нет никакой ошибки.
Доступный в OS X v10.2 и позже.
Оператор импорта
Objective C
@import Security;Swift
import SecurityДоступность
Доступный в OS X v10.2 и позже.
-
-
Представляет доступные наборы шифров.
Объявление
Swift
typealias SSLCipherSuite = UInt32Objective C
typedef UInt32 SSLCipherSuite; enum { SSL_NULL_WITH_NULL_NULL = 0x0000, SSL_RSA_WITH_NULL_MD5 = 0x0001, SSL_RSA_WITH_NULL_SHA = 0x0002, SSL_RSA_EXPORT_WITH_RC4_40_MD5 = 0x0003, SSL_RSA_WITH_RC4_128_MD5 = 0x0004, SSL_RSA_WITH_RC4_128_SHA = 0x0005, SSL_RSA_EXPORT_WITH_RC2_CBC_40_MD5 = 0x0006, SSL_RSA_WITH_IDEA_CBC_SHA = 0x0007, SSL_RSA_EXPORT_WITH_DES40_CBC_SHA = 0x0008, SSL_RSA_WITH_DES_CBC_SHA = 0x0009, SSL_RSA_WITH_3DES_EDE_CBC_SHA = 0x000A, SSL_DH_DSS_EXPORT_WITH_DES40_CBC_SHA = 0x000B, SSL_DH_DSS_WITH_DES_CBC_SHA = 0x000C, SSL_DH_DSS_WITH_3DES_EDE_CBC_SHA = 0x000D, SSL_DH_RSA_EXPORT_WITH_DES40_CBC_SHA = 0x000E, SSL_DH_RSA_WITH_DES_CBC_SHA = 0x000F, SSL_DH_RSA_WITH_3DES_EDE_CBC_SHA = 0x0010, SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA = 0x0011, SSL_DHE_DSS_WITH_DES_CBC_SHA = 0x0012, SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA = 0x0013, SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA = 0x0014, SSL_DHE_RSA_WITH_DES_CBC_SHA = 0x0015, SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA = 0x0016, SSL_DH_anon_EXPORT_WITH_RC4_40_MD5 = 0x0017, SSL_DH_anon_WITH_RC4_128_MD5 = 0x0018, SSL_DH_anon_EXPORT_WITH_DES40_CBC_SHA = 0x0019, SSL_DH_anon_WITH_DES_CBC_SHA = 0x001A, SSL_DH_anon_WITH_3DES_EDE_CBC_SHA = 0x001B, SSL_FORTEZZA_DMS_WITH_NULL_SHA = 0x001C, SSL_FORTEZZA_DMS_WITH_FORTEZZA_CBC_SHA =0x001D, /* TLS addenda using AES, per RFC 3268 */ TLS_RSA_WITH_AES_128_CBC_SHA = 0x002F, TLS_DH_DSS_WITH_AES_128_CBC_SHA = 0x0030, TLS_DH_RSA_WITH_AES_128_CBC_SHA = 0x0031, TLS_DHE_DSS_WITH_AES_128_CBC_SHA = 0x0032, TLS_DHE_RSA_WITH_AES_128_CBC_SHA = 0x0033, TLS_DH_anon_WITH_AES_128_CBC_SHA = 0x0034, TLS_RSA_WITH_AES_256_CBC_SHA = 0x0035, TLS_DH_DSS_WITH_AES_256_CBC_SHA = 0x0036, TLS_DH_RSA_WITH_AES_256_CBC_SHA = 0x0037, TLS_DHE_DSS_WITH_AES_256_CBC_SHA = 0x0038, TLS_DHE_RSA_WITH_AES_256_CBC_SHA = 0x0039, TLS_DH_anon_WITH_AES_256_CBC_SHA = 0x003A, /* ECDSA addenda, RFC 4492 */ TLS_ECDH_ECDSA_WITH_NULL_SHA = 0xC001, TLS_ECDH_ECDSA_WITH_RC4_128_SHA = 0xC002, TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA = 0xC003, TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA = 0xC004, TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA = 0xC005, TLS_ECDHE_ECDSA_WITH_NULL_SHA = 0xC006, TLS_ECDHE_ECDSA_WITH_RC4_128_SHA = 0xC007, TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA = 0xC008, TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA = 0xC009, TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA = 0xC00A, TLS_ECDH_RSA_WITH_NULL_SHA = 0xC00B, TLS_ECDH_RSA_WITH_RC4_128_SHA = 0xC00C, TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA = 0xC00D, TLS_ECDH_RSA_WITH_AES_128_CBC_SHA = 0xC00E, TLS_ECDH_RSA_WITH_AES_256_CBC_SHA = 0xC00F, TLS_ECDHE_RSA_WITH_NULL_SHA = 0xC010, TLS_ECDHE_RSA_WITH_RC4_128_SHA = 0xC011, TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA = 0xC012, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA = 0xC013, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA = 0xC014, TLS_ECDH_anon_WITH_NULL_SHA = 0xC015, TLS_ECDH_anon_WITH_RC4_128_SHA = 0xC016, TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA = 0xC017, TLS_ECDH_anon_WITH_AES_128_CBC_SHA = 0xC018, TLS_ECDH_anon_WITH_AES_256_CBC_SHA = 0xC019, /* TLS 1.2 addenda, RFC 5246 */ /* Initial state. */ TLS_NULL_WITH_NULL_NULL = 0x0000, /* Server provided RSA certificate for key exchange. */ TLS_RSA_WITH_NULL_MD5 = 0x0001, TLS_RSA_WITH_NULL_SHA = 0x0002, TLS_RSA_WITH_RC4_128_MD5 = 0x0004, TLS_RSA_WITH_RC4_128_SHA = 0x0005, TLS_RSA_WITH_3DES_EDE_CBC_SHA = 0x000A, TLS_RSA_WITH_NULL_SHA256 = 0x003B, TLS_RSA_WITH_AES_128_CBC_SHA256 = 0x003C, TLS_RSA_WITH_AES_256_CBC_SHA256 = 0x003D, /* Server-authenticated (and optionally client-authenticated ) Diffie-Hellman. */ TLS_DH_DSS_WITH_3DES_EDE_CBC_SHA = 0x000D, TLS_DH_RSA_WITH_3DES_EDE_CBC_SHA = 0x0010, TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA = 0x0013, TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA = 0x0016, TLS_DH_DSS_WITH_AES_128_CBC_SHA256 = 0x003E, TLS_DH_RSA_WITH_AES_128_CBC_SHA256 = 0x003F, TLS_DHE_DSS_WITH_AES_128_CBC_SHA256 = 0x0040, TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 = 0x0067, TLS_DH_DSS_WITH_AES_256_CBC_SHA256 = 0x0068, TLS_DH_RSA_WITH_AES_256_CBC_SHA256 = 0x0069, TLS_DHE_DSS_WITH_AES_256_CBC_SHA256 = 0x006A, TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 = 0x006B, /* Completely anonymous Diffie-Hellman */ TLS_DH_anon_WITH_RC4_128_MD5 = 0x0018, TLS_DH_anon_WITH_3DES_EDE_CBC_SHA = 0x001B, TLS_DH_anon_WITH_AES_128_CBC_SHA256 = 0x006C, TLS_DH_anon_WITH_AES_256_CBC_SHA256 = 0x006D, /* Addendum from RFC 4279, TLS PSK */ TLS_PSK_WITH_RC4_128_SHA = 0x008A, TLS_PSK_WITH_3DES_EDE_CBC_SHA = 0x008B, TLS_PSK_WITH_AES_128_CBC_SHA = 0x008C, TLS_PSK_WITH_AES_256_CBC_SHA = 0x008D, TLS_DHE_PSK_WITH_RC4_128_SHA = 0x008E, TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA = 0x008F, TLS_DHE_PSK_WITH_AES_128_CBC_SHA = 0x0090, TLS_DHE_PSK_WITH_AES_256_CBC_SHA = 0x0091, TLS_RSA_PSK_WITH_RC4_128_SHA = 0x0092, TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA = 0x0093, TLS_RSA_PSK_WITH_AES_128_CBC_SHA = 0x0094, TLS_RSA_PSK_WITH_AES_256_CBC_SHA = 0x0095, /* RFC 4785 - Pre-Shared Key (PSK ) Ciphersuites with NULL Encryption */ TLS_PSK_WITH_NULL_SHA = 0x002C, TLS_DHE_PSK_WITH_NULL_SHA = 0x002D, TLS_RSA_PSK_WITH_NULL_SHA = 0x002E, /* Addenda from rfc 5288 AES Galois Counter Mode (GCM ) Cipher Suites for TLS. */ TLS_RSA_WITH_AES_128_GCM_SHA256 = 0x009C, TLS_RSA_WITH_AES_256_GCM_SHA384 = 0x009D, TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 = 0x009E, TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 = 0x009F, TLS_DH_RSA_WITH_AES_128_GCM_SHA256 = 0x00A0, TLS_DH_RSA_WITH_AES_256_GCM_SHA384 = 0x00A1, TLS_DHE_DSS_WITH_AES_128_GCM_SHA256 = 0x00A2, TLS_DHE_DSS_WITH_AES_256_GCM_SHA384 = 0x00A3, TLS_DH_DSS_WITH_AES_128_GCM_SHA256 = 0x00A4, TLS_DH_DSS_WITH_AES_256_GCM_SHA384 = 0x00A5, TLS_DH_anon_WITH_AES_128_GCM_SHA256 = 0x00A6, TLS_DH_anon_WITH_AES_256_GCM_SHA384 = 0x00A7, /* RFC 5487 - PSK with SHA-256/384 and AES GCM */ TLS_PSK_WITH_AES_128_GCM_SHA256 = 0x00A8, TLS_PSK_WITH_AES_256_GCM_SHA384 = 0x00A9, TLS_DHE_PSK_WITH_AES_128_GCM_SHA256 = 0x00AA, TLS_DHE_PSK_WITH_AES_256_GCM_SHA384 = 0x00AB, TLS_RSA_PSK_WITH_AES_128_GCM_SHA256 = 0x00AC, TLS_RSA_PSK_WITH_AES_256_GCM_SHA384 = 0x00AD, TLS_PSK_WITH_AES_128_CBC_SHA256 = 0x00AE, TLS_PSK_WITH_AES_256_CBC_SHA384 = 0x00AF, TLS_PSK_WITH_NULL_SHA256 = 0x00B0, TLS_PSK_WITH_NULL_SHA384 = 0x00B1, TLS_DHE_PSK_WITH_AES_128_CBC_SHA256 = 0x00B2, TLS_DHE_PSK_WITH_AES_256_CBC_SHA384 = 0x00B3, TLS_DHE_PSK_WITH_NULL_SHA256 = 0x00B4, TLS_DHE_PSK_WITH_NULL_SHA384 = 0x00B5, TLS_RSA_PSK_WITH_AES_128_CBC_SHA256 = 0x00B6, TLS_RSA_PSK_WITH_AES_256_CBC_SHA384 = 0x00B7, TLS_RSA_PSK_WITH_NULL_SHA256 = 0x00B8, TLS_RSA_PSK_WITH_NULL_SHA384 = 0x00B9, /* Addenda from rfc 5289 Elliptic Curve Cipher Suites with HMAC SHA-256/384. */ TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 = 0xC023, TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 = 0xC024, TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256 = 0xC025, TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384 = 0xC026, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 = 0xC027, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 = 0xC028, TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256 = 0xC029, TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384 = 0xC02A, /* Addenda from rfc 5289 Elliptic Curve Cipher Suites with SHA-256/384 and AES Galois Counter Mode (GCM ) */ TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 = 0xC02B, TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 = 0xC02C, TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256 = 0xC02D, TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384 = 0xC02E, TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 = 0xC02F, TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 = 0xC030, TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256 = 0xC031, TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384 = 0xC032, /* RFC 5746 - Secure Renegotiation */ TLS_EMPTY_RENEGOTIATION_INFO_SCSV = 0x00FF, /* * Tags for SSL 2 cipher kinds that are not specified * for SSL 3. */ SSL_RSA_WITH_RC2_CBC_MD5 = 0xFF80, SSL_RSA_WITH_IDEA_CBC_MD5 = 0xFF81, SSL_RSA_WITH_DES_CBC_MD5 = 0xFF82, SSL_RSA_WITH_3DES_EDE_CBC_MD5 = 0xFF83, SSL_NO_SUCH_CIPHERSUITE = 0xFFFF };Константы
-
SSL_RSA_EXPORT_WITH_RC4_40_MD5SSL_RSA_EXPORT_WITH_RC4_40_MD5Размер сеансового ключа соответствует пред1998 ограничениям экспорта США.
Доступный в OS X v10.2 и позже.
-
SSL_RSA_EXPORT_WITH_RC2_CBC_40_MD5SSL_RSA_EXPORT_WITH_RC2_CBC_40_MD5Размер сеансового ключа соответствует пред1998 ограничениям экспорта США.
Доступный в OS X v10.2 и позже.
-
SSL_RSA_EXPORT_WITH_DES40_CBC_SHASSL_RSA_EXPORT_WITH_DES40_CBC_SHAРазмер сеансового ключа соответствует пред1998 ограничениям экспорта США.
Доступный в OS X v10.2 и позже.
-
SSL_DH_RSA_EXPORT_WITH_DES40_CBC_SHASSL_DH_RSA_EXPORT_WITH_DES40_CBC_SHAРазмер сеансового ключа соответствует пред1998 ограничениям экспорта США.
Доступный в OS X v10.2 и позже.
-
SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHASSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHAРазмер сеансового ключа соответствует пред1998 ограничениям экспорта США.
Доступный в OS X v10.2 и позже.
-
SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHASSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHAРазмер сеансового ключа соответствует пред1998 ограничениям экспорта США.
Доступный в OS X v10.2 и позже.
-
SSL_DH_anon_EXPORT_WITH_RC4_40_MD5SSL_DH_anon_EXPORT_WITH_RC4_40_MD5Размер сеансового ключа соответствует пред1998 ограничениям экспорта США.
Доступный в OS X v10.2 и позже.
-
SSL_DH_anon_EXPORT_WITH_DES40_CBC_SHASSL_DH_anon_EXPORT_WITH_DES40_CBC_SHAРазмер сеансового ключа соответствует пред1998 ограничениям экспорта США.
Доступный в OS X v10.2 и позже.
-
SSL_RSA_WITH_RC2_CBC_MD5SSL_RSA_WITH_RC2_CBC_MD5Это значение может быть указано для SSL 2, но не SSL 3.
Доступный в OS X v10.2 и позже.
-
SSL_RSA_WITH_IDEA_CBC_MD5SSL_RSA_WITH_IDEA_CBC_MD5Это значение может быть указано для SSL 2, но не SSL 3.
Доступный в OS X v10.2 и позже.
-
SSL_RSA_WITH_DES_CBC_MD5SSL_RSA_WITH_DES_CBC_MD5Это значение может быть указано для SSL 2, но не SSL 3.
Доступный в OS X v10.2 и позже.
-
SSL_RSA_WITH_3DES_EDE_CBC_MD5SSL_RSA_WITH_3DES_EDE_CBC_MD5Это значение может быть указано для SSL 2, но не SSL 3.
Доступный в OS X v10.2 и позже.
Обсуждение
Эти константы набора шифров являются частью спецификации TLS. Для получения дополнительной информации посмотрите RFC 5246.
Оператор импорта
Objective C
@import Security;Swift
import SecurityДоступность
Доступный в OS X v10.2 и позже.
-
-
Представляет состояние клиентского обмена сертификата.
Объявление
Swift
struct SSLClientCertificateState { init(_value: UInt32) var value: UInt32 }Objective C
typedef enum { kSSLClientCertNone, kSSLClientCertRequested, kSSLClientCertSent, kSSLClientCertRejected } SSLClientCertificateState;Константы
-
kSSLClientCertNonekSSLClientCertNoneУказывает, что сервер не попросил сертификат и что клиент не отправил тот.
Доступный в OS X v10.2 и позже.
-
kSSLClientCertRequestedkSSLClientCertRequestedУказывает, что сервер попросил сертификат, но клиент не отправил его.
Доступный в OS X v10.2 и позже.
-
kSSLClientCertSentkSSLClientCertSentУказывает, что сервер попросил сертификат, клиент отправил один, и сервер проверил его. Приложение может проверить сертификат с помощью функции
SSLGetPeerCertificates.Доступный в OS X v10.2 и позже.
-
kSSLClientCertRejectedkSSLClientCertRejectedУказывает, что клиент отправил сертификат, но сертификат привел проверку к сбою. Это значение замечено только на серверной стороне. Серверное приложение может проверить сертификат с помощью функции
SSLGetPeerCertificates.Доступный в OS X v10.2 и позже.
Оператор импорта
Objective C
@import Security;Swift
import SecurityДоступность
Доступный в OS X v10.2 и позже.
-
-
Представляет версию протокола SSL.
Объявление
Swift
struct SSLProtocol { init(_value: UInt32) var value: UInt32 }Objective C
typedef enum { kSSLProtocolUnknown = 0, kSSLProtocol3 = 2, kTLSProtocol1 = 4, kTLSProtocol11 = 7, kTLSProtocol12 = 8, kDTLSProtocol1 = 9, /* DEPRECATED on iOS */ kSSLProtocol2 = 1, kSSLProtocol3Only = 3, kTLSProtocol1Only = 5, kSSLProtocolAll = 6, } SSLProtocol;Константы
-
kSSLProtocolUnknownkSSLProtocolUnknownУказывает, что никакой протокол не был или должен быть согласован или указан; используйте значение по умолчанию.
Доступный в OS X v10.2 и позже.
-
kSSLProtocol3kSSLProtocol3Указывает, что предпочтен протокол SSL 3.0; если коллега не может использовать протокол SSL 3.0, протокол SSL 2.0 может быть согласован.
Доступный в OS X v10.2 и позже.
-
kTLSProtocol1kTLSProtocol1Указывает, что протокол TLS 1.0 предпочтен, но могут быть согласованы более низкие версии.
Доступный в OS X v10.2 и позже.
-
kTLSProtocol11kTLSProtocol11Указывает, что протокол TLS 1.1 предпочтен, но могут быть согласованы более низкие версии.
Доступный в OS X v10.8 и позже.
-
kTLSProtocol12kTLSProtocol12Указывает, что протокол TLS 1.2 предпочтен, но могут быть согласованы более низкие версии.
Доступный в OS X v10.8 и позже.
-
kSSLProtocol2kSSLProtocol2Указывает, что только может быть согласован протокол SSL 2.0. Осуждаемый в iOS.
Доступный в OS X v10.2 и позже.
-
kSSLProtocol3OnlykSSLProtocol3OnlyУказывает, что только может быть согласован протокол SSL 3.0; сбои, если коллега пытается согласовать протокол SSL 2.0. Осуждаемый в iOS.
Доступный в OS X v10.2 и позже.
-
kTLSProtocol1OnlykTLSProtocol1OnlyУказывает, что только может быть согласован протокол TLS 1.0. Осуждаемый в iOS.
Доступный в OS X v10.2 и позже.
-
kSSLProtocolAllkSSLProtocolAllУказывает все поддерживаемые версии. Осуждаемый в iOS.
Доступный в OS X v10.3 и позже.
Обсуждение
Описания, данные здесь, применяются к функциям
SSLSetProtocolVersionиSSLGetProtocolVersion. Для функцийSSLSetProtocolVersionEnabledиSSLGetProtocolVersionEnabled, только следующие значения используются. Для этих функций, каждой константы кромеkSSLProtocolAllуказывает версию отдельного протокола.kSSLProtocol2kSSLProtocol3kTLSProtocol1kSSLProtocolAll
Оператор импорта
Objective C
@import Security;Swift
import SecurityДоступность
Доступный в OS X v10.2 и позже.
-
-
Представляет состояние сеанса SSL.
Объявление
Swift
struct SSLSessionState { init(_value: UInt32) var value: UInt32 }Objective C
typedef enum { kSSLIdle, kSSLHandshake, kSSLConnected, kSSLClosed, kSSLAborted } SSLSessionState;Константы
-
kSSLIdlekSSLIdleНикакой I/O еще не был выполнен.
Доступный в OS X v10.2 и позже.
-
kSSLHandshakekSSLHandshakeКвитирование SSL происходит.
Доступный в OS X v10.2 и позже.
-
kSSLConnectedkSSLConnectedКвитирование SSL завершено; соединение готово к нормальному I/O.
Доступный в OS X v10.2 и позже.
-
kSSLClosedkSSLClosedСоединение обычно закрывалось.
Доступный в OS X v10.2 и позже.
-
kSSLAbortedkSSLAbortedСоединение прервалось.
Доступный в OS X v10.2 и позже.
Оператор импорта
Objective C
@import Security;Swift
import SecurityДоступность
Доступный в OS X v10.2 и позже.
-
-
Опции, которые могут быть установлены для сеанса SSL с
SSLSetSessionOptionфункция.Объявление
Swift
struct SSLSessionOption { init(_value: UInt32) var value: UInt32 }Objective C
typedef enum { kSSLSessionOptionBreakOnServerAuth, kSSLSessionOptionBreakOnCertRequested, kSSLSessionOptionBreakOnClientAuth, kSSLSessionOptionFalseStart, kSSLSessionOptionSendOneByteRecord } SSLSessionOption;Константы
-
kSSLSessionOptionBreakOnServerAuthkSSLSessionOptionBreakOnServerAuthПозволяет возвратиться из
SSLHandshake(с результатомerrSSLServerAuthCompleted) когда часть аутентификации сервера квитирования завершена, чтобы позволить Вашему приложению выполнять свою собственную проверку сертификата.Обратите внимание на то, что в iOS (все версии) и OS X 10.8 и позже, устанавливая эту опцию отключает автоматическую проверку Безопасного Транспорта сертификатов сервера.
При установке этой опции приложение должно выполнить свою собственную проверку сертификата когда
errSSLServerAuthCompletedвозвращается прежде, чем продолжить квитирование.Доступный в OS X v10.6 и позже.
-
kSSLSessionOptionBreakOnCertRequestedkSSLSessionOptionBreakOnCertRequestedПозволяет возвратиться из
SSLHandshake(с результатомerrSSLClientCertRequested) когда запросы к серверу клиентский сертификат.Доступный в OS X v10.6 и позже.
-
kSSLSessionOptionBreakOnClientAuthkSSLSessionOptionBreakOnClientAuthПозволяет возвратиться из
SSLHandshake(с результатомerrSSLClientAuthCompleted) когда часть аутентификации клиента квитирования завершена, чтобы позволить Вашему приложению выполнять свою собственную проверку сертификата.Обратите внимание на то, что в iOS (все версии) и OS X 10.8 и позже, устанавливая эту опцию отключает автоматическую проверку Безопасного Транспорта клиентских сертификатов.
При установке этой опции приложение должно выполнить свою собственную проверку сертификата когда
errSSLClientAuthCompletedвозвращается прежде, чем продолжить квитирование.Доступный в OS X v10.8 и позже.
-
kSSLSessionOptionFalseStartkSSLSessionOptionFalseStartКогда включено, если соответствующий набор шифров согласовывается, Неудачное начало TLS используется.
Доступный в OS X v10.9 и позже.
-
kSSLSessionOptionSendOneByteRecordkSSLSessionOptionSendOneByteRecordВключает
1/n-1рекордное разделение для BEAST атакует смягчение. Когда включено, рекордное разделение выполняется только для соединений TLS 1.0 на основе блочного шифра.Доступный в OS X v10.9 и позже.
Оператор импорта
Objective C
@import Security;Swift
import SecurityДоступность
Доступный в OS X v10.6 и позже.
-
-
Указывает ли новый контекст SSL, создаваемый
SSLCreateContextдолжен описать серверную сторону или клиентскую сторону соединения.Объявление
Swift
struct SSLProtocolSide { init(_value: UInt32) var value: UInt32 }Objective C
typedef enum { kSSLServerSide, kSSLClientSide } SSLProtocolSide;Константы
-
kSSLServerSidekSSLServerSideСерверная сторона.
Доступный в OS X v10.8 и позже.
-
kSSLClientSidekSSLClientSideКлиентская сторона.
Доступный в OS X v10.8 и позже.
Оператор импорта
Objective C
@import Security;Swift
import SecurityДоступность
Доступный в OS X v10.8 и позже.
-
-
Указывает ли новый контекст SSL, создаваемый
SSLCreateContextпредназначается для использования в или основанной на дейтаграмме коммуникации на основе потоков.Объявление
Swift
struct SSLConnectionType { init(_value: UInt32) var value: UInt32 }Objective C
typedef enum { kSSLStreamType, kSSLDatagramType } SSLConnectionType;Константы
-
kSSLStreamTypekSSLStreamTypeКоммуникация на основе потоков (TCP).
Доступный в OS X v10.8 и позже.
-
kSSLDatagramTypekSSLDatagramTypeОснованная на дейтаграмме коммуникация (UDP).
Доступный в OS X v10.8 и позже.
Оператор импорта
Objective C
@import Security;Swift
import SecurityДоступность
Доступный в OS X v10.8 и позже.
-
Наиболее распространенные коды результата, возвращенные Безопасными Транспортными функциями, перечислены в таблице ниже.
Ошибки в диапазоне от –9819 до –9840 являются фатальными ошибками, обнаруживающимися коллегой.
-
Ошибка протокола SSL.
Значение
– 9800
Описание
Ошибка протокола SSL.
Доступный в OS X v10.2 и позже.
-
Согласование набора шифров перестало работать.
Значение
– 9801
Описание
Согласование набора шифров перестало работать.
Доступный в OS X v10.2 и позже.
-
Встретились с фатальным предупреждением.
Значение
– 9802
Описание
Встретились с фатальным предупреждением.
Доступный в OS X v10.2 и позже.
-
Функция блокируется; ожидание I/O. Это не является фатальным.
Значение
– 9803
Описание
Функция блокируется; ожидание I/O. Это не является фатальным.
Доступный в OS X v10.2 и позже.
-
Попытка восстановить неизвестный сеанс перестала работать.
Значение
– 9804
Описание
Попытка восстановить неизвестный сеанс перестала работать.
Доступный в OS X v10.2 и позже.
-
Соединение закрылось корректно.
Значение
– 9805
Описание
Соединение закрылось корректно.
Доступный в OS X v10.2 и позже.
-
Соединение закрылось вследствие ошибки.
Значение
– 9806
Описание
Соединение закрылось вследствие ошибки.
Доступный в OS X v10.2 и позже.
-
Недопустимая цепочка сертификата.
Значение
– 9807
Описание
Недопустимая цепочка сертификата.
Доступный в OS X v10.2 и позже.
-
Плохой формат сертификата.
Значение
– 9808
Описание
Плохой формат сертификата.
Доступный в OS X v10.2 и позже.
-
Встретились с базовой криптографической ошибкой.
Значение
– 9809
Описание
Встретились с базовой криптографической ошибкой.
Доступный в OS X v10.2 и позже.
-
Внутренняя ошибка.
Значение
– 9810
Описание
Внутренняя ошибка.
Доступный в OS X v10.2 и позже.
-
Отказ присоединения модуля.
Значение
– 9811
Описание
Отказ присоединения модуля.
Доступный в OS X v10.2 и позже.
-
Цепочка сертификата допустима, но корневой не доверяется.
Значение
– 9812
Описание
Цепочка сертификата допустима, но корневой не доверяется.
Доступный в OS X v10.2 и позже.
-
Никакой корневой сертификат для цепочки сертификата.
Значение
– 9813
Описание
Никакой корневой сертификат для цепочки сертификата.
Доступный в OS X v10.2 и позже.
-
Цепочка сертификата имела сертификат с истекшим сроком.
Значение
– 9814
Описание
Цепочка сертификата имела сертификат с истекшим сроком.
Доступный в OS X v10.2 и позже.
-
Цепочка сертификата имела сертификат, который еще не допустим.
Значение
– 9815
Описание
Цепочка сертификата имела сертификат, который еще не допустим.
Доступный в OS X v10.2 и позже.
-
Сервер закрыл сеанс без уведомления.
Значение
– 9816
Описание
Сервер закрыл сеанс без уведомления.
Доступный в OS X v10.2 и позже.
-
Был предоставлен недостаточный буфер.
Значение
– 9817
Описание
Был предоставлен недостаточный буфер.
Доступный в OS X v10.2 и позже.
-
Встретились с плохим набором шифров SSL.
Значение
– 9818
Описание
Встретились с плохим набором шифров SSL.
Доступный в OS X v10.2 и позже.
-
Было получено неожиданное сообщение.
Значение
– 9819
Описание
Было получено неожиданное сообщение.
Доступный в OS X v10.3 и позже.
-
С записью с плохим кодом аутентификации сообщений (MAC) встретились.
Значение
– 9820
Описание
С записью с плохим кодом аутентификации сообщений (MAC) встретились.
Доступный в OS X v10.3 и позже.
-
Дешифрование перестало работать.
Значение
– 9821
Описание
Дешифрование перестало работать.
Доступный в OS X v10.3 и позже.
-
Произошло рекордное переполнение.
Значение
– 9822
Описание
Произошло рекордное переполнение.
Доступный в OS X v10.3 и позже.
-
Распаковка перестала работать.
Значение
– 9823
Описание
Распаковка перестала работать.
Доступный в OS X v10.3 и позже.
-
Квитирование перестало работать.
Значение
– 9824
Описание
Квитирование перестало работать.
Доступный в OS X v10.3 и позже.
-
Встретились с плохим сертификатом.
Значение
– 9825
Описание
Встретились с плохим сертификатом.
Доступный в OS X v10.3 и позже.
-
С неподдерживаемым форматом сертификата встретились.
Значение
– 9826
Описание
С неподдерживаемым форматом сертификата встретились.
Доступный в OS X v10.3 и позже.
-
Сертификат отменялся.
Значение
– 9827
Описание
Сертификат отменялся.
Доступный в OS X v10.3 и позже.
-
Сертификат истек.
Значение
– 9828
Описание
Сертификат истек.
Доступный в OS X v10.3 и позже.
-
Сертификат неизвестен.
Значение
– 9829
Описание
Сертификат неизвестен.
Доступный в OS X v10.3 и позже.
-
Встретились с недопустимым параметром.
Значение
– 9830
Описание
Встретились с недопустимым параметром.
Доступный в OS X v10.3 и позже.
-
Встретились с неизвестным центром сертификации.
Значение
– 9831
Описание
Встретились с неизвестным центром сертификации.
Доступный в OS X v10.3 и позже.
-
Доступ был запрещен.
Значение
– 9832
Описание
Доступ был запрещен.
Доступный в OS X v10.3 и позже.
-
Ошибка декодирования произошла.
Значение
– 9833
Описание
Ошибка декодирования произошла.
Доступный в OS X v10.3 и позже.
-
Ошибка дешифрования произошла.
Значение
– 9834
Описание
Ошибка дешифрования произошла.
Доступный в OS X v10.3 и позже.
-
Ограничение экспорта произошло.
Значение
– 9835
Описание
Ограничение экспорта произошло.
Доступный в OS X v10.3 и позже.
-
Встретились с плохой версией протокола.
Значение
– 9836
Описание
Встретились с плохой версией протокола.
Доступный в OS X v10.3 и позже.
-
Существует недостаточная безопасность для этой работы.
Значение
– 9837
Описание
Существует недостаточная безопасность для этой работы.
Доступный в OS X v10.3 и позже.
-
Произошла внутренняя ошибка.
Значение
– 9838
Описание
Произошла внутренняя ошибка.
Доступный в OS X v10.3 и позже.
-
Пользователь отменил работу.
Значение
– 9839
Описание
Пользователь отменил работу.
Доступный в OS X v10.3 и позже.
-
Никакой пересмотр не позволяется.
Значение
– 9840
Описание
Никакой пересмотр не позволяется.
Доступный в OS X v10.3 и позже.
-
Если проверка отключена, сертификат сервера или допустим или был проигнорирован.
Значение
- 9841
Описание
Если проверка отключена, сертификат сервера или допустим или был проигнорирован.
Доступный в OS X v10.6 через OS X v10.7.
-
Сервер запросил клиентский сертификат.
Значение
- 9842
Описание
Сервер запросил клиентский сертификат.
Доступный в OS X v10.6 и позже.
-
Имя хоста, с которым Вы соединились, не соответствует ни одного из имен хоста, позволенных сертификатом. Это обычно вызывается неправильным значением для
kCFStreamSSLPeerNameсвойство в словаре связалось с потокомkCFStreamPropertySSLSettingsключ.Значение
- 9843
Описание
Имя хоста, с которым Вы соединились, не соответствует ни одного из имен хоста, позволенных сертификатом. Это обычно вызывается неправильным значением для
kCFStreamSSLPeerNameсвойство в словаре связалось с потокомkCFStreamPropertySSLSettingsключ.Доступный в OS X v10.4 и позже.
-
Коллега отбросила соединение перед ответом.
Значение
– 9844
Описание
Коллега отбросила соединение перед ответом.
Доступный в OS X v10.4 и позже.
-
Дешифрование перестало работать. Среди других причин это может быть вызвано недопустимыми данными, прибывающими из удаленного узла, поврежденного crypto ключа или недостаточного разрешения использовать ключ, который сохранен в цепочке для ключей.
Значение
– 9845
Описание
Дешифрование перестало работать. Среди других причин это может быть вызвано недопустимыми данными, прибывающими из удаленного узла, поврежденного crypto ключа или недостаточного разрешения использовать ключ, который сохранен в цепочке для ключей.
Доступный в OS X v10.3 и позже.
-
С записью с плохим кодом аутентификации сообщений (MAC) встретились.
Значение
– 9846
Описание
С записью с плохим кодом аутентификации сообщений (MAC) встретились.
Доступный в OS X v10.3 и позже.
-
Произошло рекордное переполнение.
Значение
– 9847
Описание
Произошло рекордное переполнение.
Доступный в OS X v10.3 и позже.
-
Ошибка конфигурации произошла.
Значение
– 9848
Описание
Ошибка конфигурации произошла.
Доступный в OS X v10.3 и позже.
