Безопасная транспортная ссылка
Этот документ описывает общедоступный 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
параметр:kSSLProtocol2
kSSLProtocol3
kTLSProtocol1
kSSLProtocolAll
Когда сеанс активен, эта функция не может быть вызвана.
Оператор импорта
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
параметр:kSSLProtocol2
kSSLProtocol3
kTLSProtocol1
kSSLProtocolAll
Укажите это значение, чтобы определить, включены ли все протоколы.
Оператор импорта
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
функция. Эта функция может возвратить любое из следующих значений:kSSLProtocol2
kSSLProtocol3
kTLSProtocol1
kSSLProtocolUnknown
Оператор импорта
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 = SSLContext
Objective 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;
Константы
-
kNeverAuthenticate
kNeverAuthenticate
Указывает, что не требуется аутентификация клиентской стороны. (Значение по умолчанию).
Доступный в OS X v10.2 и позже.
-
kAlwaysAuthenticate
kAlwaysAuthenticate
Указывает, что требуется аутентификация клиентской стороны.
Доступный в OS X v10.2 и позже.
-
kTryAuthenticate
kTryAuthenticate
Указывает, что должна быть опробована аутентификация клиентской стороны. Если у клиента нет сертификата, нет никакой ошибки.
Доступный в OS X v10.2 и позже.
Оператор импорта
Objective C
@import Security;
Swift
import Security
Доступность
Доступный в OS X v10.2 и позже.
-
-
Представляет доступные наборы шифров.
Объявление
Swift
typealias SSLCipherSuite = UInt32
Objective 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_MD5
SSL_RSA_EXPORT_WITH_RC4_40_MD5
Размер сеансового ключа соответствует пред1998 ограничениям экспорта США.
Доступный в OS X v10.2 и позже.
-
SSL_RSA_EXPORT_WITH_RC2_CBC_40_MD5
SSL_RSA_EXPORT_WITH_RC2_CBC_40_MD5
Размер сеансового ключа соответствует пред1998 ограничениям экспорта США.
Доступный в OS X v10.2 и позже.
-
SSL_RSA_EXPORT_WITH_DES40_CBC_SHA
SSL_RSA_EXPORT_WITH_DES40_CBC_SHA
Размер сеансового ключа соответствует пред1998 ограничениям экспорта США.
Доступный в OS X v10.2 и позже.
-
SSL_DH_RSA_EXPORT_WITH_DES40_CBC_SHA
SSL_DH_RSA_EXPORT_WITH_DES40_CBC_SHA
Размер сеансового ключа соответствует пред1998 ограничениям экспорта США.
Доступный в OS X v10.2 и позже.
-
SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA
SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA
Размер сеансового ключа соответствует пред1998 ограничениям экспорта США.
Доступный в OS X v10.2 и позже.
-
SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA
SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA
Размер сеансового ключа соответствует пред1998 ограничениям экспорта США.
Доступный в OS X v10.2 и позже.
-
SSL_DH_anon_EXPORT_WITH_RC4_40_MD5
SSL_DH_anon_EXPORT_WITH_RC4_40_MD5
Размер сеансового ключа соответствует пред1998 ограничениям экспорта США.
Доступный в OS X v10.2 и позже.
-
SSL_DH_anon_EXPORT_WITH_DES40_CBC_SHA
SSL_DH_anon_EXPORT_WITH_DES40_CBC_SHA
Размер сеансового ключа соответствует пред1998 ограничениям экспорта США.
Доступный в OS X v10.2 и позже.
-
SSL_RSA_WITH_RC2_CBC_MD5
SSL_RSA_WITH_RC2_CBC_MD5
Это значение может быть указано для SSL 2, но не SSL 3.
Доступный в OS X v10.2 и позже.
-
SSL_RSA_WITH_IDEA_CBC_MD5
SSL_RSA_WITH_IDEA_CBC_MD5
Это значение может быть указано для SSL 2, но не SSL 3.
Доступный в OS X v10.2 и позже.
-
SSL_RSA_WITH_DES_CBC_MD5
SSL_RSA_WITH_DES_CBC_MD5
Это значение может быть указано для SSL 2, но не SSL 3.
Доступный в OS X v10.2 и позже.
-
SSL_RSA_WITH_3DES_EDE_CBC_MD5
SSL_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;
Константы
-
kSSLClientCertNone
kSSLClientCertNone
Указывает, что сервер не попросил сертификат и что клиент не отправил тот.
Доступный в OS X v10.2 и позже.
-
kSSLClientCertRequested
kSSLClientCertRequested
Указывает, что сервер попросил сертификат, но клиент не отправил его.
Доступный в OS X v10.2 и позже.
-
kSSLClientCertSent
kSSLClientCertSent
Указывает, что сервер попросил сертификат, клиент отправил один, и сервер проверил его. Приложение может проверить сертификат с помощью функции
SSLGetPeerCertificates
.Доступный в OS X v10.2 и позже.
-
kSSLClientCertRejected
kSSLClientCertRejected
Указывает, что клиент отправил сертификат, но сертификат привел проверку к сбою. Это значение замечено только на серверной стороне. Серверное приложение может проверить сертификат с помощью функции
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;
Константы
-
kSSLProtocolUnknown
kSSLProtocolUnknown
Указывает, что никакой протокол не был или должен быть согласован или указан; используйте значение по умолчанию.
Доступный в OS X v10.2 и позже.
-
kSSLProtocol3
kSSLProtocol3
Указывает, что предпочтен протокол SSL 3.0; если коллега не может использовать протокол SSL 3.0, протокол SSL 2.0 может быть согласован.
Доступный в OS X v10.2 и позже.
-
kTLSProtocol1
kTLSProtocol1
Указывает, что протокол TLS 1.0 предпочтен, но могут быть согласованы более низкие версии.
Доступный в OS X v10.2 и позже.
-
kTLSProtocol11
kTLSProtocol11
Указывает, что протокол TLS 1.1 предпочтен, но могут быть согласованы более низкие версии.
Доступный в OS X v10.8 и позже.
-
kTLSProtocol12
kTLSProtocol12
Указывает, что протокол TLS 1.2 предпочтен, но могут быть согласованы более низкие версии.
Доступный в OS X v10.8 и позже.
-
kSSLProtocol2
kSSLProtocol2
Указывает, что только может быть согласован протокол SSL 2.0. Осуждаемый в iOS.
Доступный в OS X v10.2 и позже.
-
kSSLProtocol3Only
kSSLProtocol3Only
Указывает, что только может быть согласован протокол SSL 3.0; сбои, если коллега пытается согласовать протокол SSL 2.0. Осуждаемый в iOS.
Доступный в OS X v10.2 и позже.
-
kTLSProtocol1Only
kTLSProtocol1Only
Указывает, что только может быть согласован протокол TLS 1.0. Осуждаемый в iOS.
Доступный в OS X v10.2 и позже.
-
kSSLProtocolAll
kSSLProtocolAll
Указывает все поддерживаемые версии. Осуждаемый в iOS.
Доступный в OS X v10.3 и позже.
Обсуждение
Описания, данные здесь, применяются к функциям
SSLSetProtocolVersion
иSSLGetProtocolVersion
. Для функцийSSLSetProtocolVersionEnabled
иSSLGetProtocolVersionEnabled
, только следующие значения используются. Для этих функций, каждой константы кромеkSSLProtocolAll
указывает версию отдельного протокола.kSSLProtocol2
kSSLProtocol3
kTLSProtocol1
kSSLProtocolAll
Оператор импорта
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;
Константы
-
kSSLIdle
kSSLIdle
Никакой I/O еще не был выполнен.
Доступный в OS X v10.2 и позже.
-
kSSLHandshake
kSSLHandshake
Квитирование SSL происходит.
Доступный в OS X v10.2 и позже.
-
kSSLConnected
kSSLConnected
Квитирование SSL завершено; соединение готово к нормальному I/O.
Доступный в OS X v10.2 и позже.
-
kSSLClosed
kSSLClosed
Соединение обычно закрывалось.
Доступный в OS X v10.2 и позже.
-
kSSLAborted
kSSLAborted
Соединение прервалось.
Доступный в 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;
Константы
-
kSSLSessionOptionBreakOnServerAuth
kSSLSessionOptionBreakOnServerAuth
Позволяет возвратиться из
SSLHandshake
(с результатомerrSSLServerAuthCompleted
) когда часть аутентификации сервера квитирования завершена, чтобы позволить Вашему приложению выполнять свою собственную проверку сертификата.Обратите внимание на то, что в iOS (все версии) и OS X 10.8 и позже, устанавливая эту опцию отключает автоматическую проверку Безопасного Транспорта сертификатов сервера.
При установке этой опции приложение должно выполнить свою собственную проверку сертификата когда
errSSLServerAuthCompleted
возвращается прежде, чем продолжить квитирование.Доступный в OS X v10.6 и позже.
-
kSSLSessionOptionBreakOnCertRequested
kSSLSessionOptionBreakOnCertRequested
Позволяет возвратиться из
SSLHandshake
(с результатомerrSSLClientCertRequested
) когда запросы к серверу клиентский сертификат.Доступный в OS X v10.6 и позже.
-
kSSLSessionOptionBreakOnClientAuth
kSSLSessionOptionBreakOnClientAuth
Позволяет возвратиться из
SSLHandshake
(с результатомerrSSLClientAuthCompleted
) когда часть аутентификации клиента квитирования завершена, чтобы позволить Вашему приложению выполнять свою собственную проверку сертификата.Обратите внимание на то, что в iOS (все версии) и OS X 10.8 и позже, устанавливая эту опцию отключает автоматическую проверку Безопасного Транспорта клиентских сертификатов.
При установке этой опции приложение должно выполнить свою собственную проверку сертификата когда
errSSLClientAuthCompleted
возвращается прежде, чем продолжить квитирование.Доступный в OS X v10.8 и позже.
-
kSSLSessionOptionFalseStart
kSSLSessionOptionFalseStart
Когда включено, если соответствующий набор шифров согласовывается, Неудачное начало TLS используется.
Доступный в OS X v10.9 и позже.
-
kSSLSessionOptionSendOneByteRecord
kSSLSessionOptionSendOneByteRecord
Включает
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;
Константы
-
kSSLServerSide
kSSLServerSide
Серверная сторона.
Доступный в OS X v10.8 и позже.
-
kSSLClientSide
kSSLClientSide
Клиентская сторона.
Доступный в 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;
Константы
-
kSSLStreamType
kSSLStreamType
Коммуникация на основе потоков (TCP).
Доступный в OS X v10.8 и позже.
-
kSSLDatagramType
kSSLDatagramType
Основанная на дейтаграмме коммуникация (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 и позже.