Криптографическая ссылка служб синтаксиса сообщения
Cryptographic Message Syntax Services является API, реализующий цифровые подписи Cryptographic Message Syntax (CMS) и шифрование для сообщений S/MIME.
Сообщение CMS может быть подписано, зашифровано, или оба. Сообщение может быть подписано произвольным числом подписывающих лиц и может быть зашифровано для произвольного числа получателей. В терминологии CMS этот модуль выполняет шифрование с помощью типа контента окутанных данных и подписывая использование типа контента данных со знаком.
Если сообщение и подписывается и шифруется, оно использует, вложил типы ContentInfo в терминологии CMS. В этом случае окутанное содержание данных содержит содержание данных со знаком; т.е. сообщение сначала подписывается, и затем содержание со знаком шифруется.
Криптографическое сообщение Синтаксис определяется в RFC 3852: Cryptographic Message Syntax (CMS) (http://www .ietf.org/rfc/rfc3852.txt).
S/MIME определяется в RFC 3851: Безопасные / Многоцелевые расширения почты в Интернете (S/MIME) сообщение Версии 3.1 Спецификация (http://www .ietf.org/rfc/rfc3851.txt)
-
Создает ссылку CMSEncoder.
Объявление
Swift
func CMSEncoderCreate(_
cmsEncoderOut
: UnsafeMutablePointer<Unmanaged<CMSEncoder>?>) -> OSStatusObjective C
OSStatus CMSEncoderCreate ( CMSEncoderRef *cmsEncoderOut );
Параметры
cmsEncoderOut
По возврату, точкам к ссылке CMSEncoder. Необходимо использовать
CFRelease
функционируйте для освобождения этой ссылки, когда Вы будете закончены с помощью нее.Возвращаемое значение
Код результата. Посмотрите Криптографические Коды Результата Служб сообщений.
Обсуждение
Это - первая функция в последовательности функций кодера, которые Вы вызываете, чтобы подписать или зашифровать сообщение. Другие функции в последовательности требуют, чтобы Вы передали в ссылке CMSEncoder, возвращенной этой функцией. Во многих случаях можно вызвать
CMSEncode
одна только функция вместо этой последовательности функций кодера.Оператор импорта
Objective C
@import Security;
Swift
import Security
Доступность
Доступный в OS X v10.5 и позже.
См. также
-
Указывает подписывающие лица сообщения.
Объявление
Swift
func CMSEncoderAddSigners(_
cmsEncoder
: CMSEncoder!, _signerOrArray
: AnyObject!) -> OSStatusObjective C
OSStatus CMSEncoderAddSigners ( CMSEncoderRef cmsEncoder, CFTypeRef signerOrArray );
Параметры
cmsEncoder
Ссылка CMSEncoder, возвращенная
CMSEncoderCreate
функция.signerOrArray
Объект идентификационных данных для идентификационных данных одного подписывающего лица, указанного как тип
SecIdentityRef
, или aCFArray
из объектов идентификационных данных типаSecIdentityRef
.Возвращаемое значение
Код результата. Посмотрите Криптографические Коды Результата Служб сообщений.
Обсуждение
Вызовите эту функцию, только если должно быть подписано сообщение. Можно вызвать эту функцию несколько раз для того же сообщения.
Если Вы действительно вызываете эту функцию, необходимо вызвать ее перед первым вызовом к
CMSEncoderUpdateContent
функция.Оператор импорта
Objective C
@import Security;
Swift
import Security
Доступность
Доступный в OS X v10.5 и позже.
-
Получает массив подписывающих лиц, указанных с
CMSEncoderAddSigners
функция.Объявление
Swift
func CMSEncoderCopySigners(_
cmsEncoder
: CMSEncoder!, _signersOut
: UnsafeMutablePointer<Unmanaged<CFArray>?>) -> OSStatusObjective C
OSStatus CMSEncoderCopySigners ( CMSEncoderRef cmsEncoder, CFArrayRef *signersOut );
Параметры
cmsEncoder
Ссылка CMSEncoder, возвращенная
CMSEncoderCreate
функция.signersOut
По возврату, точкам к массиву объектов идентификационных данных типа
SecIdentityRef
из подписывающих лиц сообщения. ЕслиCMSEncoderAddSigners
функция не была вызвана для этого сообщения, эта функция возвращает aNULL
массив. Необходимо использоватьCFRelease
функционируйте для освобождения этой ссылки, когда Вы будете закончены с помощью нее.Возвращаемое значение
Код результата. Посмотрите Криптографические Коды Результата Служб сообщений.
Оператор импорта
Objective C
@import Security;
Swift
import Security
Доступность
Доступный в OS X v10.5 и позже.
См. также
-
Указывает, что сообщение должно быть зашифровано и указывает получателей сообщения.
Объявление
Swift
func CMSEncoderAddRecipients(_
cmsEncoder
: CMSEncoder!, _recipientOrArray
: AnyObject!) -> OSStatusObjective C
OSStatus CMSEncoderAddRecipients ( CMSEncoderRef cmsEncoder, CFTypeRef recipientOrArray );
Параметры
cmsEncoder
Ссылка CMSEncoder, возвращенная
CMSEncoderCreate
функция.recipientOrArray
Любой единственный сертификат, содержащий общедоступный ключ шифрования для одного получателя сообщения, указанного как объект сертификата (тип
SecCertificateRef
), или ряд сертификатов, указанных как aCFArray
из объектов сертификата.Возвращаемое значение
Код результата. Посмотрите Криптографические Коды Результата Служб сообщений.
Обсуждение
Ваша цепочка для ключей должна содержать сертификат, поддерживающий шифрование для каждого получателя. Можно вызвать эту функцию несколько раз для того же сообщения.
Можно и подписать и зашифровать то же сообщение; однако, Вы не можете вызвать и эту функцию и
CMSEncoderSetHasDetachedContent
функция для того же сообщения.Если Вы действительно вызываете эту функцию, необходимо вызвать ее перед первым вызовом к
CMSEncoderUpdateContent
функция.Оператор импорта
Objective C
@import Security;
Swift
import Security
Доступность
Доступный в OS X v10.5 и позже.
-
Получает массив получателей, указанных с
CMSEncoderAddRecipients
функция.Объявление
Swift
func CMSEncoderCopyRecipients(_
cmsEncoder
: CMSEncoder!, _recipientsOut
: UnsafeMutablePointer<Unmanaged<CFArray>?>) -> OSStatusObjective C
OSStatus CMSEncoderCopyRecipients ( CMSEncoderRef cmsEncoder, CFArrayRef *recipientsOut );
Параметры
cmsEncoder
Ссылка CMSEncoder, возвращенная
CMSEncoderCreate
функция.recipientsOut
По возврату, точкам к массиву объектов сертификата типа
SecCertificateRef
из получателей сообщения. ЕслиCMSEncoderAddRecipients
функция не была вызвана для этого сообщения, эта функция возвращает aNULL
массив. Необходимо использоватьCFRelease
функционируйте для освобождения этой ссылки, когда Вы будете закончены с помощью нее.Возвращаемое значение
Код результата. Посмотрите Криптографические Коды Результата Служб сообщений.
Оператор импорта
Objective C
@import Security;
Swift
import Security
Доступность
Доступный в OS X v10.5 и позже.
См. также
-
Указывает, должны ли данные со знаком быть отдельными от сообщения.
Объявление
Swift
func CMSEncoderSetHasDetachedContent(_
cmsEncoder
: CMSEncoder!, _detachedContent
: Boolean) -> OSStatusObjective C
OSStatus CMSEncoderSetHasDetachedContent ( CMSEncoderRef cmsEncoder, Boolean detachedContent );
Параметры
cmsEncoder
Ссылка CMSEncoder, возвращенная
CMSEncoderCreate
функция.detachedContent
Указать
TRUE
если данные со знаком должны быть отдельными от сообщения;. т.е. которые будут подписаны, isnot для включения данных если сообщениеВозвращаемое значение
Код результата. Посмотрите Криптографические Коды Результата Служб сообщений.
Обсуждение
Сообщение CMS со знаком может дополнительно быть отправлено отдельно от данных со знаком. Значение по умолчанию, если эта функция не вызвана,
detachedContent=FALSE
; т.е. сообщение содержит данные, которые будут подписаны.Зашифрованные сообщения, включая тех, которые также подписываются, не могут использовать отсоединенное содержание.
Если Вы действительно вызываете эту функцию, необходимо вызвать ее перед первым вызовом к
CMSEncoderUpdateContent
функция.Оператор импорта
Objective C
@import Security;
Swift
import Security
Доступность
Доступный в OS X v10.5 и позже.
-
Указывает, должно ли сообщение отсоединить содержание.
Объявление
Swift
func CMSEncoderGetHasDetachedContent(_
cmsEncoder
: CMSEncoder!, _detachedContentOut
: UnsafeMutablePointer<Boolean>) -> OSStatusObjective C
OSStatus CMSEncoderGetHasDetachedContent ( CMSEncoderRef cmsEncoder, Boolean *detachedContentOut );
Параметры
cmsEncoder
Ссылка CMSEncoder, возвращенная
CMSEncoderCreate
функция.detachedContentOut
Возвраты
TRUE
если сообщение отсоединило содержание.Возвращаемое значение
Код результата. Посмотрите Криптографические Коды Результата Служб сообщений.
Обсуждение
Эта функция возвращает значение, указанное в
CMSEncoderSetHasDetachedContent
если была вызвана та функция; иначе это возвращаетсяFALSE
.Оператор импорта
Objective C
@import Security;
Swift
import Security
Доступность
Доступный в OS X v10.5 и позже.
-
Указывает идентификатор объекта для инкапсулированных данных сообщения со знаком.
Объявление
Swift
func CMSEncoderSetEncapsulatedContentTypeOID(_
cmsEncoder
: CMSEncoder!, _eContentTypeOID
: AnyObject!) -> OSStatusObjective C
OSStatus CMSEncoderSetEncapsulatedContentTypeOID ( CMSEncoderRef cmsEncoder, CFTypeRef eContentTypeOID );
Параметры
cmsEncoder
Ссылка CMSEncoder, возвращенная
CMSEncoderCreate
функция.eContentTypeOID
Идентификатор объекта для инкапсулированных данных в сообщении со знаком.
Возвращаемое значение
Код результата. Посмотрите Криптографические Коды Результата Служб сообщений.
Обсуждение
В сообщении со знаком данные со знаком состоят из любого типа содержания (называемый инкапсулированным содержанием, потому что это инкапсулируется в данных со знаком) плюс значения подписи. Можно указать тип контента инкапсулированных данных путем указания идентификатора объекта (OID) в
eContentTypeOID
параметр этой функции, в форме Базовой строки Основы —CFSTR("1.2.840.113549.1.7.1")
, например.Значение по умолчанию для OID (используемый, если эта функция не вызвана)
id-data
. Это - нормальный инкапсулированный тип контента для приложений, таких как S/MIME, использующий его для указания закодированного MIME содержания. Можно передать любое значение, которое значимо для приложения. Примеры CMS OIDs перечислены в http://www .imc.org/ietf-smime/other-smime-oids.asn.Если Вы действительно вызываете эту функцию, необходимо вызвать ее перед первым вызовом к
CMSEncoderUpdateContent
функция.Оператор импорта
Objective C
@import Security;
Swift
import Security
Доступность
Доступный в OS X v10.7 и позже.
-
Указывает идентификатор объекта для инкапсулированных данных сообщения со знаком.
Объявление
Swift
func CMSEncoderSetEncapsulatedContentType(_
cmsEncoder
: CMSEncoder!, _eContentType
: UnsafePointer<CSSM_OID>) -> OSStatusObjective C
OSStatus CMSEncoderSetEncapsulatedContentType ( CMSEncoderRef cmsEncoder, const CSSM_OID *eContentType );
Параметры
cmsEncoder
Ссылка CMSEncoder, возвращенная
CMSEncoderCreate
функция.eContentType
Идентификатор объекта для инкапсулированных данных в сообщении со знаком.
Возвращаемое значение
Код результата. Посмотрите Криптографические Коды Результата Служб сообщений.
Обсуждение
В сообщении со знаком данные со знаком состоят из любого типа содержания (называемый инкапсулированным содержанием, потому что это инкапсулируется в данных со знаком) плюс значения подписи. Можно указать тип контента инкапсулированных данных путем указания идентификатора объекта (OID) в
eContentType
параметр этой функции. Значение по умолчанию для OID (используемый, если эта функция не вызвана)id-data
. Это - нормальный инкапсулированный тип контента для приложений, таких как S/MIME, использующий его для указания закодированного MIME содержания. Можно передать любое значение, которое значимо для приложения. Примеры CMS OIDs перечислены в http://www .imc.org/ietf-smime/other-smime-oids.asn.Если Вы действительно вызываете эту функцию, необходимо вызвать ее перед первым вызовом к
CMSEncoderUpdateContent
функция.Специальные замечания
Использовать
CMSEncoderSetEncapsulatedContentTypeOID
для новой разработки.Оператор импорта
Objective C
@import Security;
Swift
import Security
Доступность
Доступный в OS X v10.5 и позже.
-
Получает идентификатор объекта для инкапсулированных данных сообщения со знаком.
Объявление
Swift
func CMSEncoderCopyEncapsulatedContentType(_
cmsEncoder
: CMSEncoder!, _eContentTypeOut
: UnsafeMutablePointer<Unmanaged<CFData>?>) -> OSStatusObjective C
OSStatus CMSEncoderCopyEncapsulatedContentType ( CMSEncoderRef cmsEncoder, CFDataRef *eContentTypeOut );
Параметры
cmsEncoder
Ссылка CMSEncoder, возвращенная
CMSEncoderCreate
функция.eContentTypeOut
По возврату, точкам к идентификатору объекта для инкапсулированных данных в сообщении со знаком.
Возвращаемое значение
Код результата. Посмотрите Криптографические Коды Результата Служб сообщений.
Обсуждение
В сообщении со знаком данные со знаком состоят из любого типа данных (инкапсулированное содержание) плюс значения подписи. Эта функция возвращает идентификатор объекта (OID) инкапсулированного содержания, поскольку это было указано с
CMSEncoderSetEncapsulatedContentType
функция.Если
CMSEncoderSetEncapsulatedContentType
функция не была вызвана для этого сообщения, эта функция возвращает aNULL
указатель.Оператор импорта
Objective C
@import Security;
Swift
import Security
Доступность
Доступный в OS X v10.5 и позже.
-
Добавляют сертификаты сообщению.
Объявление
Swift
func CMSEncoderAddSupportingCerts(_
cmsEncoder
: CMSEncoder!, _certOrArray
: AnyObject!) -> OSStatusObjective C
OSStatus CMSEncoderAddSupportingCerts ( CMSEncoderRef cmsEncoder, CFTypeRef certOrArray );
Параметры
cmsEncoder
Ссылка CMSEncoder, возвращенная
CMSEncoderCreate
функция.certOrArray
Любой единственный сертификат, указанный как объект сертификата (тип
SecCertificateRef
), или ряд сертификатов, указанных как aCFArray
из объектов сертификата.Возвращаемое значение
Код результата. Посмотрите Криптографические Коды Результата Служб сообщений.
Обсуждение
Сообщение CMS может содержать произвольные наборы сертификатов кроме или в дополнение к тем, которые указывают идентификационные данные подписывающих лиц. Можно использовать эту функцию для добавления таких сертификатов сообщению. Не необходимо вызвать эту функцию для нормального сообщения со знаком. Когда Вы создаете сообщение со знаком, Криптографические Службы сообщений автоматически добавляет сертификаты подписывающего лица, и любые промежуточные сертификаты должны были проверить подписывающие лица.
Даже если Вы не подписываете или шифруете сообщение для переноса одного или более сертификатов, можно использовать эту функцию. Для этого вызовите
CMSEncoderCreate
получить aCMSEncoderRef
ссылка, вызватьCMSEncoderAddSupportingCerts
один или несколько раз, и затем вызовитеCMSEncoderCopyEncodedContent
завершать сообщение. Никакое дополнительное довольное потребность быть указанным.Если Вы действительно добавляете содержание к сообщению в дополнение к сертификатам, необходимо вызвать эту функцию перед первым вызовом к
CMSEncoderUpdateContent
функция.Оператор импорта
Objective C
@import Security;
Swift
import Security
Доступность
Доступный в OS X v10.5 и позже.
-
Получает сертификаты, добавленные к сообщению с
CMSEncoderAddSupportingCerts
.Объявление
Swift
func CMSEncoderCopySupportingCerts(_
cmsEncoder
: CMSEncoder!, _certsOut
: UnsafeMutablePointer<Unmanaged<CFArray>?>) -> OSStatusObjective C
OSStatus CMSEncoderCopySupportingCerts ( CMSEncoderRef cmsEncoder, CFArrayRef *certsOut );
Параметры
cmsEncoder
Ссылка CMSEncoder, возвращенная
CMSEncoderCreate
функция.certsOut
По возврату, точкам к CFArray
SecCertificateRef
объекты. Необходимо использоватьCFRelease
функционируйте для освобождения этой ссылки, когда Вы будете закончены с помощью нее.Возвращаемое значение
Код результата. Посмотрите Криптографические Коды Результата Служб сообщений.
Обсуждение
Сообщение CMS может содержать произвольные наборы сертификатов кроме или в дополнение к тем, которые указывают идентификационные данные подписывающих лиц. Можно использовать эту функцию для получения любых таких сертификатов, добавленных с
CMSEncoderAddSupportingCerts
функция. ЕслиCMSEncoderAddSupportingCerts
не был вызван, эта функция возвращает aNULL
значение дляcertsOut
. Обратите внимание на то, что эта функция не возвращает сертификаты подписания, если таковые имеются.Оператор импорта
Objective C
@import Security;
Swift
import Security
Доступность
Доступный в OS X v10.5 и позже.
-
Указывает атрибуты для сообщения со знаком.
Объявление
Swift
func CMSEncoderAddSignedAttributes(_
cmsEncoder
: CMSEncoder!, _signedAttributes
: CMSSignedAttributes) -> OSStatusObjective C
OSStatus CMSEncoderAddSignedAttributes ( CMSEncoderRef cmsEncoder, CMSSignedAttributes signedAttributes );
Параметры
cmsEncoder
Ссылка CMSEncoder, возвращенная
CMSEncoderCreate
функция.signedAttributes
Атрибут отмечает, как определено в Атрибутах Для сообщений Со знаком.
Возвращаемое значение
Код результата. Посмотрите Криптографические Коды Результата Служб сообщений.
Обсуждение
Атрибуты являются дополнительными для сообщений со знаком. Они не используются для других типов сообщений CMS. Использование атрибутов описано в разделе 2.5 из спецификации S/MIME 3.1.
Если Вы действительно вызываете эту функцию, необходимо вызвать ее перед первым вызовом к
CMSEncoderUpdateContent
функция.Оператор импорта
Objective C
@import Security;
Swift
import Security
Доступность
Доступный в OS X v10.5 и позже.
См. также
-
Указывает, какие сертификаты включать в CMS со знаком обмениваются сообщениями.
Объявление
Swift
func CMSEncoderSetCertificateChainMode(_
cmsEncoder
: CMSEncoder!, _chainMode
: CMSCertificateChainMode) -> OSStatusObjective C
OSStatus CMSEncoderSetCertificateChainMode ( CMSEncoderRef cmsEncoder, CMSCertificateChainMode chainMode );
Параметры
cmsEncoder
Ссылка CMSEncoder, возвращенная
CMSEncoderCreate
функция.chainMode
Константа, указывающая который сертификат или сертификаты для включения в сообщение. Посмотрите Константы Включения Сертификата.
Возвращаемое значение
Код результата. Посмотрите Криптографические Коды Результата Служб сообщений.
Обсуждение
Эта функция используется только для сообщений со знаком и дополнительная. Если Вы не вызываете эту функцию, значение по умолчанию,
kCMSCertificateChain
, используется. В этом случае сообщение включает сертификат подписывающего лица плюс все сертификаты, должен был проверить сертификат подписывающего лица, до, но не включая корневой сертификат.Если Вы действительно вызываете эту функцию, необходимо вызвать ее перед первым вызовом к
CMSEncoderUpdateContent
функция.Оператор импорта
Objective C
@import Security;
Swift
import Security
Доступность
Доступный в OS X v10.5 и позже.
-
Получает константу, указывающую, какие сертификаты должны быть включены в сообщение CMS со знаком.
Объявление
Swift
func CMSEncoderGetCertificateChainMode(_
cmsEncoder
: CMSEncoder!, _chainMode
: UnsafeMutablePointer<CMSCertificateChainMode>) -> OSStatusObjective C
OSStatus CMSEncoderGetCertificateChainMode ( CMSEncoderRef cmsEncoder, CMSCertificateChainMode *chainModeOut );
Параметры
cmsEncoder
Ссылка CMSEncoder, возвращенная
CMSEncoderCreate
функция.chainMode
По возврату, константа, указывающая, какой сертификат или сертификаты должны быть включены в сообщение. Посмотрите Константы Включения Сертификата.
Возвращаемое значение
Код результата. Посмотрите Криптографические Коды Результата Служб сообщений.
Оператор импорта
Objective C
@import Security;
Swift
import Security
Доступность
Доступный в OS X v10.5 и позже.
-
Байты содержания подачи в кодер.
Объявление
Swift
func CMSEncoderUpdateContent(_
cmsEncoder
: CMSEncoder!, _content
: UnsafePointer<Void>, _contentLen
: UInt) -> OSStatusObjective C
OSStatus CMSEncoderUpdateContent ( CMSEncoderRef cmsEncoder, const void *content, size_t contentLen );
Параметры
cmsEncoder
Ссылка CMSEncoder, возвращенная
CMSEncoderCreate
функция.content
Содержание, которое Вы хотите добавить к сообщению. Содержание должно соответствовать набору типа с
CMSEncoderSetEncapsulatedContentType
функция (или типid-data
если та функция не была вызвана).contentLen
Длина добавляемого содержания, в байтах.
Возвращаемое значение
Код результата. Посмотрите Криптографические Коды Результата Служб сообщений.
Обсуждение
Вы используете эту функцию для добавления содержания, которое должно быть подписано или зашифровано. Если сообщение является только контейнером для сертификатов, добавленных с
CMSEncoderAddSupportingCerts
функционируйте и не имеет никакого другого содержания, не вызывайте эту функцию. Эта функция может быть вызвана многократно.После того, как Вы будете закончены, добавляя содержание, вызовите
CMSEncoderCopyEncodedContent
функционируйте для завершения процесса создания сообщения.Ни одна из функций метода set (
CMSEncoderSetHasDetachedContent
,CMSEncoderSetEncapsulatedContentType
, илиCMSEncoderSetCertificateChainMode
) может быть вызван после того, как эта функция была вызвана.Оператор импорта
Objective C
@import Security;
Swift
import Security
Доступность
Доступный в OS X v10.5 и позже.
-
Концы, кодирующие сообщение и, получают закодированный результат.
Объявление
Swift
func CMSEncoderCopyEncodedContent(_
cmsEncoder
: CMSEncoder!, _encodedContentOut
: UnsafeMutablePointer<Unmanaged<CFData>?>) -> OSStatusObjective C
OSStatus CMSEncoderCopyEncodedContent ( CMSEncoderRef cmsEncoder, CFDataRef *encodedContentOut );
Параметры
cmsEncoder
Ссылка CMSEncoder, возвращенная
CMSEncoderCreate
функция.encodedContentOut
По возврату, точкам к закодированному сообщению. Необходимо использовать
CFRelease
функционируйте для освобождения этой ссылки, когда Вы будете закончены с помощью нее.Возвращаемое значение
Код результата. Посмотрите Криптографические Коды Результата Служб сообщений.
Обсуждение
Это - последняя функция в последовательности кодирования функций, которые Вы вызываете при создании или зашифрованного сообщения со знаком. Во многих случаях можно вызвать
CMSEncode
одна только функция вместо того, чтобы использовать последовательность кодирования функций.Оператор импорта
Objective C
@import Security;
Swift
import Security
Доступность
Доступный в OS X v10.5 и позже.
См. также
-
Кодирует сообщение и получает результат в одном высокоуровневом вызове функции.
Объявление
Swift
func CMSEncodeContent(_
signers
: AnyObject!, _recipients
: AnyObject!, _eContentTypeOID
: AnyObject!, _detachedContent
: Boolean, _signedAttributes
: CMSSignedAttributes, _content
: UnsafePointer<Void>, _contentLen
: UInt, _encodedContentOut
: UnsafeMutablePointer<Unmanaged<CFData>?>) -> OSStatusObjective C
OSStatus CMSEncodeContent ( CFTypeRef signers, CFTypeRef recipients, CFTypeRef eContentTypeOID, Boolean detachedContent, CMSSignedAttributes signedAttributes, const void *content, size_t contentLen, CFDataRef *encodedContentOut );
Параметры
signers
Объект идентификационных данных для идентификационных данных одного подписывающего лица, указанного как тип
SecIdentityRef
, или aCFArray
из объектов идентификационных данных типаSecIdentityRef
. ПередачаNULL
для этого параметра, если Вы не хотите подписывать сообщение.recipients
Сертификат, содержащий общедоступный ключ шифрования для одного получателя сообщения, указанного как объект сертификата (тип
SecCertificateRef
), или aCFArray
из объектов сертификата. Передайте NULL для этого параметра, если Вы не хотите шифровать сообщение.eContentTypeOID
Идентификатор объекта для инкапсулированных данных в сообщении со знаком, в форме Базовой строки Основы —
CFSTR("1.2.840.113549.1.7.1")
, например.Этот параметр является дополнительным. Если Вы передаете
NULL
, значениеid-data
используется. (Это - нормальный инкапсулированный тип контента для приложений, таких как S/MIME, использующий его для указания закодированного MIME содержания.) Можно передать любое значение, которое значимо для приложения.detachedContent
Указать
TRUE
если данные со знаком должны быть отдельными от сообщения;. Т.е. которые будут подписаны, isnot для включения данных если сообщение Вы не можете указатьTRUE
для этого параметра для зашифрованного сообщения.signedAttributes
Атрибут отмечает, как определено в Атрибутах Для сообщений Со знаком. Атрибуты являются дополнительными для сообщений со знаком и не используются в других типах сообщений CMS. Использование атрибутов описано в разделе 2.5 из спецификации S/MIME 3.1.
content
Содержание, которое Вы хотите добавить к сообщению. Содержание должно соответствовать типу, начинаются
CMSEncoderSetEncapsulatedContentType
параметр (или типid-data
если та функция не была вызвана).contentLen
Длина добавляемого содержания, в байтах.
encodedContentOut
По возврату, точкам к закодированному сообщению. Необходимо использовать
CFRelease
функционируйте для освобождения этой ссылки, когда Вы будете закончены с помощью нее.Обсуждение
При использовании этой функции необходимо включать содержание, и необходимо обеспечить допустимый не -
NULL
ввод для по крайней мере одного изsigners
иrecipients
параметры. Можно и зашифровать и подписать сообщение; однако, Вы не можете использовать отсоединенное содержание с зашифрованным сообщением. Если Вы хотите создать сообщение, содержащее сертификаты и никакое другое содержание, необходимо использоватьCMSEncoderAddSupportingCerts
функция вместо этого. Для получения большего количества контроля над процессом кодирования сообщения вызовите последовательность функций, начинающихсяCMSEncoderCreate
функция вместо этого.Оператор импорта
Objective C
@import Security;
Swift
import Security
Доступность
Доступный в OS X v10.7 и позже.
-
Кодирует сообщение и получает результат в одном высокоуровневом вызове функции.
Объявление
Swift
func CMSEncode(_
signers
: AnyObject!, _recipients
: AnyObject!, _eContentType
: UnsafePointer<CSSM_OID>, _detachedContent
: Boolean, _signedAttributes
: CMSSignedAttributes, _content
: UnsafePointer<Void>, _contentLen
: UInt, _encodedContentOut
: UnsafeMutablePointer<Unmanaged<CFData>?>) -> OSStatusObjective C
OSStatus CMSEncode ( CFTypeRef signers, CFTypeRef recipients, const CSSM_OID *eContentType, Boolean detachedContent, CMSSignedAttributes signedAttributes, const void *content, size_t contentLen, CFDataRef *encodedContentOut );
Параметры
signers
Объект идентификационных данных для идентификационных данных одного подписывающего лица, указанного как тип
SecIdentityRef
, или aCFArray
из объектов идентификационных данных типаSecIdentityRef
. ПередачаNULL
для этого параметра, если Вы не хотите подписывать сообщение.recipients
Сертификат, содержащий общедоступный ключ шифрования для одного получателя сообщения, указанного как объект сертификата (тип
SecCertificateRef
), или aCFArray
из объектов сертификата. Передайте NULL для этого параметра, если Вы не хотите шифровать сообщение.eContentType
Идентификатор объекта для инкапсулированных данных в сообщении со знаком. Этот параметр является дополнительным. Если Вы передаете
0
, значениеid-data
используется. (Это - нормальный инкапсулированный тип контента для приложений, таких как S/MIME, использующий его для указания закодированного MIME содержания.) Можно передать любое значение, которое значимо для приложения.detachedContent
Указать
TRUE
если данные со знаком должны быть отдельными от сообщения;. Т.е. которые будут подписаны, isnot для включения данных если сообщение Вы не можете указатьTRUE
для этого параметра для зашифрованного сообщения.signedAttributes
Атрибут отмечает, как определено в Атрибутах Для сообщений Со знаком. Атрибуты являются дополнительными для сообщений со знаком и не используются в других типах сообщений CMS. Использование атрибутов описано в разделе 2.5 из спецификации S/MIME 3.1.
content
Содержание, которое Вы хотите добавить к сообщению. Содержание должно соответствовать типу, начинаются
CMSEncoderSetEncapsulatedContentType
параметр (или типid-data
если та функция не была вызвана).contentLen
Длина добавляемого содержания, в байтах.
encodedContentOut
По возврату, точкам к закодированному сообщению. Необходимо использовать
CFRelease
функционируйте для освобождения этой ссылки, когда Вы будете закончены с помощью нее.Возвращаемое значение
Код результата. Посмотрите Криптографические Коды Результата Служб сообщений.
Обсуждение
При использовании этой функции необходимо включать содержание, и необходимо обеспечить допустимый не -
NULL
ввод для по крайней мере одного изsigners
иrecipients
параметры. Можно и зашифровать и подписать сообщение; однако, Вы не можете использовать отсоединенное содержание с зашифрованным сообщением. Если Вы хотите создать сообщение, содержащее сертификаты и никакое другое содержание, необходимо использоватьCMSEncoderAddSupportingCerts
функция вместо этого. Для получения большего количества контроля над процессом кодирования сообщения вызовите последовательность функций, начинающихсяCMSEncoderCreate
функция вместо этого.Специальные замечания
Использовать
CMSEncodeContent
для новой разработки.Оператор импорта
Objective C
@import Security;
Swift
import Security
Доступность
Доступный в OS X v10.5 и позже.
-
Создает ссылку CMSDecoder.
Объявление
Swift
func CMSDecoderCreate(_
cmsDecoderOut
: UnsafeMutablePointer<Unmanaged<CMSDecoder>?>) -> OSStatusObjective C
OSStatus CMSDecoderCreate ( CMSDecoderRef *cmsDecoderOut );
Параметры
cmsDecoderOut
По возврату, точкам к ссылке CMSDecoder. Необходимо использовать
CFRelease
функционируйте для освобождения этой ссылки, когда Вы будете закончены с помощью нее.Возвращаемое значение
Код результата. Посмотрите Криптографические Коды Результата Служб сообщений.
Обсуждение
Это - первая функция в последовательности функций декодера, которые Вы вызываете для получения информации из сообщения CMS. Другие функции в последовательности требуют, чтобы Вы передали в ссылке CMSDecoder, возвращенной этой функцией. Следующая функция в последовательности
CMSDecoderUpdateMessage
.Оператор импорта
Objective C
@import Security;
Swift
import Security
Доступность
Доступный в OS X v10.5 и позже.
См. также
-
Байты сырых данных подачи сообщения, которое будет декодироваться в декодер.
Объявление
Swift
func CMSDecoderUpdateMessage(_
cmsDecoder
: CMSDecoder!, _msgBytes
: UnsafePointer<Void>, _msgBytesLen
: UInt) -> OSStatusObjective C
OSStatus CMSDecoderUpdateMessage ( CMSDecoderRef cmsDecoder, const void *msgBytes, size_t msgBytesLen );
Параметры
cmsDecoder
Ссылка CMSDecoder, возвращенная
CMSDecoderCreate
функция.msgBytes
Указатель на данные, которые будут декодироваться.
msgBytesLen
Длина данных, в байтах.
Возвращаемое значение
Код результата. Возвраты
errSecUnknownFormat
после обнаружения неправильно отформатированного сообщения CMS. Посмотрите Криптографические Коды Результата Служб сообщений для других кодов результата.Обсуждение
Эта функция может быть вызвана многократно. Вызовите
CMSDecoderFinalizeMessage
функционируйте, когда у Вас больше не будет данных для декодирования.Оператор импорта
Objective C
@import Security;
Swift
import Security
Доступность
Доступный в OS X v10.5 и позже.
-
Указывает, что больше нет данных для декодирования.
Объявление
Swift
func CMSDecoderFinalizeMessage(_
cmsDecoder
: CMSDecoder!) -> OSStatusObjective C
OSStatus CMSDecoderFinalizeMessage ( CMSDecoderRef cmsDecoder );
Параметры
cmsDecoder
Ссылка CMSDecoder, возвращенная
CMSDecoderCreate
функция.Возвращаемое значение
Код результата. Возвраты
errSecUnknownFormat
после обнаружения неправильно отформатированного сообщения CMS. Посмотрите Криптографические Коды Результата Служб сообщений для других кодов результата.Обсуждение
Когда Вы вызываете эту функцию, декодер заканчивает декодировать сообщение. Если сообщение было зашифровано, и эта функция возвращает код результата
noErr
, сообщение было успешно дешифровано. ВызовитеCMSDecoderCopyContent
функция для получения содержимого сообщения. ВызовитеCMSDecoderGetNumSigners
функция, чтобы узнать, было ли сообщение подписано и, если так, сколькими там были подписывающие лица.Оператор импорта
Objective C
@import Security;
Swift
import Security
Доступность
Доступный в OS X v10.5 и позже.
-
Указывает отдельное содержание сообщения, если таковые имеются.
Объявление
Swift
func CMSDecoderSetDetachedContent(_
cmsDecoder
: CMSDecoder!, _detachedContent
: CFData!) -> OSStatusObjective C
OSStatus CMSDecoderSetDetachedContent ( CMSDecoderRef cmsDecoder, CFDataRef detachedContent );
Параметры
cmsDecoder
Ссылка CMSDecoder, возвращенная
CMSDecoderCreate
функция.detachedContent
Ссылка на отдельное содержание сообщения.
Возвращаемое значение
Код результата. Посмотрите Криптографические Коды Результата Служб сообщений.
Обсуждение
Данные сообщения CMS со знаком могут дополнительно быть отправлены отдельно от сообщения. Если содержание сообщения отсоединяется из сообщения, необходимо вызвать эту функцию для сообщения декодера, где найти содержимое сообщения.
Зашифрованные сообщения, включая тех, которые также подписываются, не могут использовать отсоединенное содержание.
Можно вызвать эту функцию или прежде или после декодирования сообщения (путем вызова
CMSDecoderUpdateMessage
иCMSDecoderFinalizeMessage
функции). Если сообщение со знаком отсоединило содержание, однако, необходимо вызвать эту функцию, прежде чем можно будет использоватьCMSDecoderCopySignerStatus
функция для установления состояния подписи.Оператор импорта
Objective C
@import Security;
Swift
import Security
Доступность
Доступный в OS X v10.5 и позже.
-
Получает отдельное содержание, указанное с
CMSDecoderSetDetachedContent
функция.Объявление
Swift
func CMSDecoderCopyDetachedContent(_
cmsDecoder
: CMSDecoder!, _detachedContentOut
: UnsafeMutablePointer<Unmanaged<CFData>?>) -> OSStatusObjective C
OSStatus CMSDecoderCopyDetachedContent ( CMSDecoderRef cmsDecoder, CFDataRef *detachedContentOut );
Параметры
cmsDecoder
Ссылка CMSDecoder, возвращенная
CMSDecoderCreate
функция.detachedContentOut
По возврату, точкам к ссылке на данные, указанной более ранним вызовом к
CMSDecoderSetDetachedContent
функция. Если никакое отдельное содержание не было указано, возвращает ссылку на данные NULL. Необходимо использоватьCFRelease
функционируйте для освобождения этой ссылки, когда Вы будете закончены с помощью нее.Возвращаемое значение
Код результата. Посмотрите Криптографические Коды Результата Служб сообщений.
Оператор импорта
Objective C
@import Security;
Swift
import Security
Доступность
Доступный в OS X v10.5 и позже.
-
Указывает цепочки для ключей для поиска промежуточных сертификатов, которые будут использоваться в проверке сертификатов подписывающего лица сообщения со знаком.
Объявление
Swift
func CMSDecoderSetSearchKeychain(_
cmsDecoder
: CMSDecoder!, _keychainOrArray
: AnyObject!) -> OSStatusObjective C
OSStatus CMSDecoderSetSearchKeychain ( CMSDecoderRef cmsDecoder, CFTypeRef keychainOrArray );
Параметры
cmsDecoder
Ссылка CMSDecoder, возвращенная
CMSDecoderCreate
функция.keychainOrArray
Любой единственная цепочка для ключей для поиска, указанный как объект цепочки для ключей (тип
SecKeychainRef
), или ряд цепочек для ключей, указанных как aCFArray
из объектов цепочки для ключей. Если Вы указываете пустоеCFArrayRef
, никакие цепочки для ключей не ищутся промежуточные сертификаты.Возвращаемое значение
Код результата. Посмотрите Криптографические Коды Результата Служб сообщений.
Обсуждение
Если Вы не вызываете эту функцию, декодер использует список поиска цепочки для ключей по умолчанию для поиска промежуточных сертификатов.
Если Вы действительно вызываете эту функцию, необходимо вызвать ее перед вызовом
CMSDecoderCopySignerStatus
функция.Оператор импорта
Objective C
@import Security;
Swift
import Security
Доступность
Доступный в OS X v10.5 и позже.
-
Получает число подписывающих лиц сообщения.
Объявление
Swift
func CMSDecoderGetNumSigners(_
cmsDecoder
: CMSDecoder!, _numSignersOut
: UnsafeMutablePointer<UInt>) -> OSStatusObjective C
OSStatus CMSDecoderGetNumSigners ( CMSDecoderRef cmsDecoder, size_t *numSignersOut );
Параметры
cmsDecoder
Ссылка CMSDecoder, возвращенная
CMSDecoderCreate
функция.numSignersOut
По возврату, числу подписывающих лиц сообщения. Нуль указывает, что не было подписано сообщение.
Возвращаемое значение
Код результата. Посмотрите Криптографические Коды Результата Служб сообщений.
Обсуждение
Вызовите
CMSDecoderCopySignerStatus
функция для определения состояния подписи.Вы не можете вызвать эту функцию после вызова
CMSDecoderFinalizeMessage
функция.Оператор импорта
Objective C
@import Security;
Swift
import Security
Доступность
Доступный в OS X v10.5 и позже.
-
Получает состояние подписи сообщения CMS.
Объявление
Swift
func CMSDecoderCopySignerStatus(_
cmsDecoder
: CMSDecoder!, _signerIndex
: UInt, _policyOrArray
: AnyObject!, _evaluateSecTrust
: Boolean, _signerStatusOut
: UnsafeMutablePointer<CMSSignerStatus>, _secTrustOut
: UnsafeMutablePointer<Unmanaged<SecTrust>?>, _certVerifyResultCodeOut
: UnsafeMutablePointer<OSStatus>) -> OSStatusObjective C
OSStatus CMSDecoderCopySignerStatus ( CMSDecoderRef cmsDecoder, size_t signerIndex, CFTypeRef policyOrArray, Boolean evaluateSecTrust, CMSSignerStatus *signerStatusOut, SecTrustRef *secTrustOut, OSStatus *certVerifyResultCodeOut );
Параметры
cmsDecoder
Ссылка CMSDecoder, возвращенная
CMSDecoderCreate
функция.signerIndex
Число, указывающее, который подписывающее лицо исследовать. Индексы подписывающего лица запускаются с 0. Используйте
CMSDecoderGetNumSigners
функция для определения общего количества подписывающих лиц для сообщения.policyOrArray
Доверительная политика или политики, которые будут использоваться для проверки сертификата подписывающего лица. Можно указать любого сингл
SecPolicyRef
объект или aCFArray
изSecPolicyRef
объекты. Доверительные политики обсуждены в Сертификате, Ключе и Понятиях Trust Services в Сертификате, Ключе и Руководстве по программированию Trust Services.evaluateSecTrust
Набор к
TRUE
заставить декодер вызыватьSecTrustEvaluate
функция для оценкиSecTrust
объект создается для оценки сертификата подписывающего лица. Набор кFALSE
если Вы намереваетесь вызватьSecTrustEvaluate
функция дляSecTrust
объект, возвращенныйsecTrustOut
параметр.signerStatusOut
Если Вы указываете
TRUE
дляevaluateSecTrust
параметр, по возврату этот параметр указывает состояние подписи. Посмотрите Константы Состояния Подписи для возможных результатов. Передача вNULL
если Вы не хотите возвращенное значение.secTrustOut
По возврату этот параметр указывает на a
SecTrust
объект. Если Вы указалиTRUE
дляevaluateTrust
параметр, это - доверительный объект, использовавшийся для проверки сертификата подписывающего лица. Если Вы указалиFALSE
дляevaluateTrust
параметр, можно вызватьSecTrustEvaluate
функция для оценкиSecTrust
объект. ПередачаNULL
если Вы не хотите этот возвращенный объект. Необходимо использоватьCFRelease
функционируйте для освобождения этой ссылки, когда Вы будете закончены с помощью нее.certVerifyResultCodeOut
Если Вы указываете
TRUE
дляevaluateSecTrust
параметр, по возврату этот параметр указывает результат проверки сертификата. Передача вNULL
если Вы не хотите возвращенное значение.Некоторые наиболее распространенные результаты возвратились в этом параметре, включайте:
CSSMERR_TP_INVALID_ANCHOR_CERT
Сертификат был проверен через цепочку сертификата к самоподписанному корневому сертификату, присутствовавшему в сообщении, но что корневой сертификат не является известным, корневым сертификатом, которому доверяют.
CSSMERR_TP_NOT_TRUSTED
Сертификат не мог быть проверен назад к корневому сертификату.
CSSMERR_TP_VERIFICATION_FAILURE
Корневой сертификат привел проверку к сбою.
CSSMERR_TP_VERIFY_ACTION_FAILED
Доверительные отношения не могли быть установлены согласно указанной доверительной политике.
CSSMERR_TP_INVALID_CERTIFICATE
Листовой сертификат подписывающего лица не был допустим.
CSSMERR_TP_CERT_EXPIRED
Сертификат в цепочке истек во время проверки.
CSSMERR_TP_CERT_NOT_VALID_YET
Сертификат в цепочке еще не был допустим во время проверки.
Возвращаемое значение
Код результата. Посмотрите Криптографические Коды Результата Служб сообщений. Результат
noErr
указывает только, что функция завершилась успешно; это не указывает, что подпись заверена, или сертификаты допустимы. ПосмотритеsignerStatusOut
иcertVerifyResultCodeOut
параметры для проверки и результатов проверки сертификата.Обсуждение
Вы не можете вызвать эту функцию после вызова
CMSDecoderFinalizeMessage
функция. Несмотря на то, что сообщение полностью декодировалось когдаCMSDecoderFinalizeMessage
функционируйте возвраты без ошибки, подпись не может быть проверена, или сертификаты проверяются, пока эта функция не вызвана.Сообщение CMS может быть подписано многократными подписывающими лицами; эта функция возвращает состояние, связанное с одним подписывающим лицом, как указано
signerIndex
параметр.Если Вы оба передача в
FALSE
дляevaluateSecTrust
параметр иNULL
дляsecTrustOut
параметр, никакая оценка сертификата подписывающего лица не может произойти.Оператор импорта
Objective C
@import Security;
Swift
import Security
Доступность
Доступный в OS X v10.5 и позже.
-
Получает адрес электронной почты указанного подписывающего лица сообщения CMS.
Объявление
Swift
func CMSDecoderCopySignerEmailAddress(_
cmsDecoder
: CMSDecoder!, _signerIndex
: UInt, _signerEmailAddressOut
: UnsafeMutablePointer<Unmanaged<CFString>?>) -> OSStatusObjective C
OSStatus CMSDecoderCopySignerEmailAddress ( CMSDecoderRef cmsDecoder, size_t signerIndex, CFStringRef *signerEmailAddressOut );
Параметры
cmsDecoder
Ссылка CMSDecoder, возвращенная
CMSDecoderCreate
функция.signerIndex
Число, указывающее, который адрес электронной почты подписывающего лица возвратиться. Индексы подписывающего лица запускаются с 0. Используйте
CMSDecoderGetNumSigners
функция для определения общего количества подписывающих лиц для сообщения.signerEmailAddressOut
По возврату, точкам на адрес электронной почты указанного подписывающего лица.
Возвращаемое значение
Код результата. Посмотрите Криптографические Коды Результата Служб сообщений. Возвраты
paramErr
(–50) если сообщение CMS не было подписано или еслиsignerIndex
больше, чем число подписывающих лиц сообщения минус одно (signerIndex > (numSigners – 1)
).Обсуждение
Вы не можете вызвать эту функцию после вызова
CMSDecoderFinalizeMessage
функция.Оператор импорта
Objective C
@import Security;
Swift
import Security
Доступность
Доступный в OS X v10.5 и позже.
-
Получает сертификат об указанном подписывающем лице сообщения CMS.
Объявление
Swift
func CMSDecoderCopySignerCert(_
cmsDecoder
: CMSDecoder!, _signerIndex
: UInt, _signerCertOut
: UnsafeMutablePointer<Unmanaged<SecCertificate>?>) -> OSStatusObjective C
OSStatus CMSDecoderCopySignerCert ( CMSDecoderRef cmsDecoder, size_t signerIndex, SecCertificateRef *signerCertOut );
Параметры
cmsDecoder
Ссылка CMSDecoder, возвращенная
CMSDecoderCreate
функция.signerIndex
Число, указывающее, который адрес электронной почты подписывающего лица возвратиться. Индексы подписывающего лица запускаются с 0. Используйте
CMSDecoderGetNumSigners
функция для определения общего количества подписывающих лиц для сообщения.signerCertOut
По возврату, точкам к сертификату об указанном подписывающем лице.
Возвращаемое значение
Код результата. Посмотрите Криптографические Коды Результата Служб сообщений. Возвраты
paramErr
(–50) если сообщение CMS не было подписано или еслиsignerIndex
больше, чем число подписывающих лиц сообщения минус одно (signerIndex> (numSigners – 1)).Обсуждение
Вы не можете вызвать эту функцию после вызова
CMSDecoderFinalizeMessage
функция.Оператор импорта
Objective C
@import Security;
Swift
import Security
Доступность
Доступный в OS X v10.5 и позже.
-
Определяет, было ли зашифровано сообщение CMS.
Объявление
Swift
func CMSDecoderIsContentEncrypted(_
cmsDecoder
: CMSDecoder!, _isEncryptedOut
: UnsafeMutablePointer<Boolean>) -> OSStatusObjective C
OSStatus CMSDecoderIsContentEncrypted ( CMSDecoderRef cmsDecoder, Boolean *isEncryptedOut );
Параметры
cmsDecoder
Ссылка CMSDecoder, возвращенная
CMSDecoderCreate
функция.isEncryptedOut
Возвраты
TRUE
если было зашифровано сообщение.Возвращаемое значение
Код результата. Посмотрите Криптографические Коды Результата Служб сообщений.
Обсуждение
Обратите внимание на то, что, если сообщение было зашифровано, и за декодированием следуются (
CMSDecoderFinalizeMessage
возвращенныйnoErr
), тогда сообщение было успешно дешифровано. ВызватьCMSDecoderCopyContent
получать дешифрованное содержание.Вы не можете вызвать эту функцию после вызова
CMSDecoderFinalizeMessage
функция.Оператор импорта
Objective C
@import Security;
Swift
import Security
Доступность
Доступный в OS X v10.5 и позже.
-
Получает идентификатор объекта для инкапсулированных данных сообщения со знаком.
Объявление
Swift
func CMSDecoderCopyEncapsulatedContentType(_
cmsDecoder
: CMSDecoder!, _eContentTypeOut
: UnsafeMutablePointer<Unmanaged<CFData>?>) -> OSStatusObjective C
OSStatus CMSDecoderCopyEncapsulatedContentType ( CMSDecoderRef cmsDecoder, CFDataRef *eContentTypeOut );
Параметры
cmsDecoder
Ссылка CMSDecoder, возвращенная
CMSDecoderCreate
функция.eContentTypeOut
По возврату, идентификатору объекта для инкапсулированных данных в сообщении со знаком. Возвраты
NULL
если не было подписано сообщение.Возвращаемое значение
Код результата. Посмотрите Криптографические Коды Результата Служб сообщений.
Обсуждение
В сообщении со знаком данные со знаком состоят из любого типа содержания (называемый инкапсулированным содержанием, потому что это инкапсулируется в данных со знаком) плюс значения подписи. Тип контента инкапсулированных данных обозначен идентификатором объекта. Значение по умолчанию для OID
id-data
, который указывает закодированное MIME содержание.Вы не можете вызвать эту функцию после вызова
CMSDecoderFinalizeMessage
функция.Оператор импорта
Objective C
@import Security;
Swift
import Security
Доступность
Доступный в OS X v10.5 и позже.
-
Получите массив всех сертификатов в сообщении.
Объявление
Swift
func CMSDecoderCopyAllCerts(_
cmsDecoder
: CMSDecoder!, _certsOut
: UnsafeMutablePointer<Unmanaged<CFArray>?>) -> OSStatusObjective C
OSStatus CMSDecoderCopyAllCerts ( CMSDecoderRef cmsDecoder, CFArrayRef *certsOut );
Параметры
cmsDecoder
Ссылка CMSDecoder, возвращенная
CMSDecoderCreate
функция.certsOut
По возврату, точкам к массиву
SecCertificateRef
объекты. ВозвратыNULL
если сообщение не содержит сертификатов (сообщение было зашифровано, но не подписалось); это не считают ошибкой. Необходимо использоватьCFRelease
функционируйте для освобождения этой ссылки, когда Вы будете закончены с помощью нее.Возвращаемое значение
Код результата. Посмотрите Криптографические Коды Результата Служб сообщений.
Обсуждение
Сообщение CMS может содержать произвольные наборы сертификатов кроме или в дополнение к тем, которые указывают идентификационные данные подписывающих лиц. Можно использовать эту функцию для получения таких сертификатов из сообщения. Если сообщение было подписано, оно содержит сертификаты подписывающего лица. Можно использовать
CMSDecoderGetNumSigners
иCMSDecoderCopySignerCert
функции для получения сертификатов для определенного подписывающего лица.Вы не можете вызвать эту функцию после вызова
CMSDecoderFinalizeMessage
функция.Оператор импорта
Objective C
@import Security;
Swift
import Security
Доступность
Доступный в OS X v10.5 и позже.
-
Получите содержимое сообщения, если таковые имеются.
Объявление
Swift
func CMSDecoderCopyContent(_
cmsDecoder
: CMSDecoder!, _contentOut
: UnsafeMutablePointer<Unmanaged<CFData>?>) -> OSStatusObjective C
OSStatus CMSDecoderCopyContent ( CMSDecoderRef cmsDecoder, CFDataRef *contentOut );
Параметры
cmsDecoder
Ссылка CMSDecoder, возвращенная
CMSDecoderCreate
функция.contentOut
По возврату, точкам к содержанию сообщения. Возвраты
NULL
если отсоединяется содержание. Необходимо использоватьCFRelease
функционируйте для освобождения этой ссылки, когда Вы будете закончены с помощью нее.Возвращаемое значение
Код результата. Посмотрите Криптографические Коды Результата Служб сообщений.
Обсуждение
Если сообщение отсоединило содержание, Вы ответственны за получение содержания. В этом случае Вы используете
CMSDecoderSetDetachedContent
функция, чтобы сказать декодеру расположение содержания.Вы не можете вызвать эту функцию после вызова
CMSDecoderFinalizeMessage
функция.Оператор импорта
Objective C
@import Security;
Swift
import Security
Доступность
Доступный в OS X v10.5 и позже.
-
Получает время подписания сообщения CMS, если существующий.
Объявление
Swift
func CMSDecoderCopySignerSigningTime(_
cmsDecoder
: CMSDecoder!, _signerIndex
: UInt, _signingTime
: UnsafeMutablePointer<CFAbsoluteTime>) -> OSStatusObjective C
OSStatus CMSDecoderCopySignerSigningTime ( CMSDecoderRef cmsDecoder, size_t signerIndex, CFAbsoluteTime *signingTime );
Параметры
cmsDecoder
Ссылка CMSDecoder, возвращенная
CMSDecoderCreate
функция.signerIndex
Число, указывающее, который подписывающее лицо исследовать. Индексы подписывающего лица запускаются с 0. Используйте
CMSDecoderGetNumSigners
функция для определения общего количества подписывающих лиц для сообщения.signingTime
Адрес абсолютной временной стоимости, где должен быть сохранен результат.
Возвращаемое значение
Код результата. Посмотрите Криптографические Коды Результата Служб сообщений. Как правило, эта функция возвраты
paramErr
если сообщение CMS не было подписано или еслиsignerIndex
выходит за пределы.Обсуждение
Метка времени является неаутентифицируемым временем, несмотря на то, что это - часть атрибутов со знаком сообщения.
Необходимо вызвать
CMSDecoderFinalizeMessage
прежде чем Вы вызовете эту функцию.Оператор импорта
Objective C
@import Security;
Swift
import Security
Доступность
Доступный в OS X v10.8 и позже.
-
Возвращает метку времени подписывающего лица сообщения CMS, если существующий.
Объявление
Swift
func CMSDecoderCopySignerTimestamp(_
cmsDecoder
: CMSDecoder!, _signerIndex
: UInt, _timestamp
: UnsafeMutablePointer<CFAbsoluteTime>) -> OSStatusObjective C
OSStatus CMSDecoderCopySignerTimestamp ( CMSDecoderRef cmsDecoder, size_t signerIndex, CFAbsoluteTime *timestamp );
Параметры
cmsDecoder
Ссылка CMSDecoder, возвращенная
CMSDecoderCreate
функция.signerIndex
Число, указывающее, который подписывающее лицо исследовать. Индексы подписывающего лица запускаются с 0. Используйте
CMSDecoderGetNumSigners
функция для определения общего количества подписывающих лиц для сообщения.timestamp
Адрес абсолютной временной стоимости, где должен быть сохранен результат.
Возвращаемое значение
Код результата. Посмотрите Криптографические Коды Результата Служб сообщений. Как правило, эта функция возвраты
paramErr
если сообщение CMS не было подписано или еслиsignerIndex
выходит за пределы.Обсуждение
Эта метка времени является аутентифицируемой меткой времени, предоставленной полномочиями добавления метки времени.
Необходимо вызвать
CMSDecoderFinalizeMessage
прежде чем Вы вызовете эту функцию.Оператор импорта
Objective C
@import Security;
Swift
import Security
Доступность
Доступный в OS X v10.8 и позже.
-
Возвращает массив, содержащий сертификаты от ответа метки времени.
Объявление
Swift
func CMSDecoderCopySignerTimestampCertificates(_
cmsDecoder
: CMSDecoder!, _signerIndex
: UInt, _certificateRefs
: UnsafeMutablePointer<Unmanaged<CFArray>?>) -> OSStatusObjective C
OSStatus CMSDecoderCopySignerTimestampCertificates ( CMSDecoderRef cmsDecoder, size_t signerIndex, CFArrayRef *certificateRefs );
Параметры
cmsDecoder
Ссылка CMSDecoder, возвращенная
CMSDecoderCreate
функция.signerIndex
Число, указывающее, который подписывающее лицо исследовать. Индексы подписывающего лица запускаются с 0. Используйте
CMSDecoderGetNumSigners
функция для определения общего количества подписывающих лиц для сообщения.certificateRefs
Адрес Базовой ссылки на массив Основы, где должен быть сохранен полученный массив.
Возвращаемое значение
Код результата. Посмотрите Криптографические Коды Результата Служб сообщений. Как правило, эта функция возвраты
paramErr
если сообщение CMS не было подписано илиsignerIndex
выходит за пределы, и возвратыerrSecItemNotFound
если не были найдены никакие сертификаты.Обсуждение
Подпись должна содержать аутентифицируемую метку времени, предоставленную полномочиями добавления метки времени. Элементы возвращенного массива имеют тип
SecCertificateRef
. Вызывающая сторона ответственна за выпуск возвращенного массива путем вызоваCFRelease
.Необходимо вызвать
CMSDecoderFinalizeMessage
прежде чем Вы вызовете эту функцию.Оператор импорта
Objective C
@import Security;
Swift
import Security
Доступность
Доступный в OS X v10.8 и позже.
-
Возвращает метку времени подписывающего лица сообщения CMS, если существующий.
Объявление
Swift
func CMSEncoderCopySignerTimestamp(_
cmsEncoder
: CMSEncoder!, _signerIndex
: UInt, _timestamp
: UnsafeMutablePointer<CFAbsoluteTime>) -> OSStatusObjective C
OSStatus CMSEncoderCopySignerTimestamp ( CMSEncoderRef cmsEncoder, size_t signerIndex, CFAbsoluteTime *timestamp );
Параметры
cmsEncoder
Ссылка CMSEncoder, возвращенная
CMSEncoderCreate
функция.signerIndex
Число, указывающее, который подписывающее лицо исследовать. Индексы подписывающего лица запускаются с 0. Используйте
CMSDecoderGetNumSigners
функция для определения общего количества подписывающих лиц для сообщения.timestamp
Адрес абсолютной временной стоимости, где должен быть сохранен результат.
Возвращаемое значение
Код результата. Посмотрите Криптографические Коды Результата Служб сообщений. Как правило, эта функция возвраты
paramErr
если сообщение CMS не было подписано или еслиsignerIndex
выходит за пределы.Обсуждение
Эта метка времени является аутентифицируемой меткой времени, предоставленной полномочиями добавления метки времени.
Необходимо вызвать
CMSDecoderFinalizeMessage
прежде чем Вы вызовете эту функцию.Оператор импорта
Objective C
@import Security;
Swift
import Security
Доступность
Доступный в OS X v10.8 и позже.
-
Непрозрачная ссылка на объект кодера CMS.
Объявление
Swift
typealias CMSEncoderRef = CMSEncoder
Objective C
typedef struct _CMSEncoder *CMSEncoderRef;
Обсуждение
Это - объект, совместимо с Базовой Основой и использует стандартную Базовую семантику Основы. Избавьтесь от него с
CFRelease
функция.Оператор импорта
Objective C
@import Security;
Swift
import Security
Доступность
Доступный в OS X v10.5 и позже.
-
Непрозрачная ссылка на объект декодера CMS.
Объявление
Swift
typealias CMSDecoderRef = CMSDecoder
Objective C
typedef struct _CMSDecoder *CMSDecoderRef;
Обсуждение
Это - объект, совместимо с Базовой Основой и использует стандартную Базовую семантику Основы. Избавьтесь от него с
CFRelease
функция.Оператор импорта
Objective C
@import Security;
Swift
import Security
Доступность
Доступный в OS X v10.5 и позже.
-
Дополнительные атрибуты, которые могут быть указаны с
CMSEncoderAddSignedAttributes
функция.Объявление
Swift
typealias CMSSignedAttributes = UInt32
Objective C
enum { kCMSAttrNone = 0x0000, kCMSAttrSmimeCapabilities = 0x0001, kCMSAttrSmimeEncryptionKeyPrefs = 0x0002, kCMSAttrSmimeMSEncryptionKeyPrefs = 0x0004, kCMSAttrSigningTime = 0x0008 }; typedef uint32_t CMSSignedAttributes;
Константы
-
kCMSAttrNone
kCMSAttrNone
Никакие атрибуты.
Доступный в OS X v10.5 и позже.
-
kCMSAttrSmimeCapabilities
kCMSAttrSmimeCapabilities
Добавляет информация к сообщению со знаком, идентифицирующему подпись, шифрование и алгоритмы выборки сообщений, поддерживаемые кодером. Добавление этого атрибута не изменяет путь, которым кодируется сообщение. Посмотрите RFC 2311: раздел S/MIME Version 2 Message Specification (http://www .ietf.org/rfc/rfc2311.txt) 2.5.2 для получения дополнительной информации об атрибуте возможностей.
Доступный в OS X v10.5 и позже.
-
kCMSAttrSmimeEncryptionKeyPrefs
kCMSAttrSmimeEncryptionKeyPrefs
Указывает, что сертификат подписания, включенный с сообщением, является предпочтительным для шифрования S/MIME.
Доступный в OS X v10.5 и позже.
-
kCMSAttrSmimeMSEncryptionKeyPrefs
kCMSAttrSmimeMSEncryptionKeyPrefs
То же как
kCMSSmimeEncryptionKeyPrefs
, использование идентификатора объекта атрибута (OID) предпочтено Microsoft.Доступный в OS X v10.5 и позже.
-
kCMSAttrSigningTime
kCMSAttrSigningTime
Заставляет кодер включать время подписания.
Доступный в OS X v10.5 и позже.
Обсуждение
Эти флаги заставляют кодер добавлять атрибуты к сообщению со знаком, которое может быть интерпретировано получателем. Эти атрибуты не используются для сообщений без знака.
Оператор импорта
Objective C
@import Security;
Swift
import Security
Доступность
Доступный в OS X v10.5 и позже.
-
-
Константы, которые могут быть установлены
CMSEncoderSetCertificateChainMode
функция для указания, что сертификаты включать в сообщение со знаком.Объявление
Swift
typealias CMSCertificateChainMode = UInt32
Objective C
enum { kCMSCertificateNone = 0, kCMSCertificateSignerOnly, kCMSCertificateChain, kCMSCertificateChainWithRoot }; typedef uint32_t CMSCertificateChainMode;
Константы
-
kCMSCertificateNone
kCMSCertificateNone
Не включайте сертификаты.
Доступный в OS X v10.5 и позже.
-
kCMSCertificateSignerOnly
kCMSCertificateSignerOnly
Только включайте сертификаты подписывающего лица.
Доступный в OS X v10.5 и позже.
-
kCMSCertificateChain
kCMSCertificateChain
Включайте цепочку сертификата подписывающего лица до, но не включая корневой сертификат.
Доступный в OS X v10.5 и позже.
-
kCMSCertificateChainWithRoot
kCMSCertificateChainWithRoot
Включайте всю цепочку сертификата подписывающего лица, включая корневой сертификат.
Доступный в OS X v10.5 и позже.
Оператор импорта
Objective C
@import Security;
Swift
import Security
Доступность
Доступный в OS X v10.5 и позже.
-
-
Константы, указывающие состояние подписи и информации о подписывающем лице в сообщении со знаком, как получено
CMSDecoderCopySignerStatus
функция.Объявление
Swift
typealias CMSSignerStatus = UInt32
Objective C
enum { kCMSSignerUnsigned = 0, kCMSSignerValid, kCMSSignerNeedsDetachedContent, kCMSSignerInvalidSignature, kCMSSignerInvalidCert, kCMSSignerInvalidIndex }; typedef uint32_t CMSSignerStatus;
Константы
-
kCMSSignerUnsigned
kCMSSignerUnsigned
Сообщение не было подписано.
Доступный в OS X v10.5 и позже.
-
kCMSSignerValid
kCMSSignerValid
Сообщение было подписано, и и подпись и сертификат подписывающего лица были проверены.
Доступный в OS X v10.5 и позже.
-
kCMSSignerNeedsDetachedContent
kCMSSignerNeedsDetachedContent
Сообщение было подписано, но отсоединило содержание. Необходимо вызвать
CMSDecoderSetDetachedContent
функция прежде, чем установить состояние подписи.Доступный в OS X v10.5 и позже.
-
kCMSSignerInvalidSignature
kCMSSignerInvalidSignature
Сообщение было подписано, но подпись недопустима.
Доступный в OS X v10.5 и позже.
-
kCMSSignerInvalidCert
kCMSSignerInvalidCert
Сообщение было подписано, но не мог быть проверен сертификат подписывающего лица.
Доступный в OS X v10.5 и позже.
-
kCMSSignerInvalidIndex
kCMSSignerInvalidIndex
Указанное значение для индекса подписывающего лица (
signerIndex
параметр), больше, чем число подписывающих лиц сообщения минус одно (signerIndex > (numSigners – 1)
).Доступный в OS X v10.5 и позже.
Оператор импорта
Objective C
@import Security;
Swift
import Security
Доступность
Доступный в OS X v10.5 и позже.
-
Безопасность коды результата API определена в Security/Secbase.h и перечислена в таблице ниже. Присвоенное ошибочное пространство для безопасности APIs прерывисто: –25240 до –25279 и –25290 до –25329. Безопасность APIs может также возвратиться noErr
(0) или paramErr
(–50), или коды результата CSSM (см. Коллективную безопасность: CDSA и CSSM, версия 2 (с исправлениями) от Open Group (http://www .opengroup.org/security/cdsa.htm)).
-
Никакие доверительные результаты не доступны.
Значение
– 25291
Описание
Никакие доверительные результаты не доступны.
Доступный в OS X v10.2 и позже.
-
Ошибка только для чтения.
Значение
– 25292
Описание
Ошибка только для чтения.
Доступный в OS X v10.2 и позже.
-
Авторизация/Аутентификация перестала работать.
Значение
– 25293
Описание
Авторизация/Аутентификация перестала работать.
Доступный в OS X v10.2 и позже.
-
Цепочка для ключей не существует.
Значение
– 25294
Описание
Цепочка для ключей не существует.
Доступный в OS X v10.2 и позже.
-
Цепочка для ключей не допустима.
Значение
– 25295
Описание
Цепочка для ключей не допустима.
Доступный в OS X v10.2 и позже.
-
Цепочка для ключей с тем же именем уже существует.
Значение
– 25296
Описание
Цепочка для ключей с тем же именем уже существует.
Доступный в OS X v10.2 и позже.
-
Больше чем один обратный вызов того же имени существует.
Значение
– 25297
Описание
Больше чем один обратный вызов того же имени существует.
Доступный в OS X v10.2 и позже.
-
Обратный вызов не допустим.
Значение
– 25298
Описание
Обратный вызов не допустим.
Доступный в OS X v10.2 и позже.
-
Элемент уже существует.
Значение
– 25299
Описание
Элемент уже существует.
Доступный в OS X v10.2 и позже.
-
Элемент не может быть найден.
Значение
– 25300
Описание
Элемент не может быть найден.
Доступный в OS X v10.2 и позже.
-
Буфер является слишком маленьким.
Значение
– 25301
Описание
Буфер является слишком маленьким.
Доступный в OS X v10.2 и позже.
-
Данные являются слишком большими для определенного типа данных.
Значение
– 25302
Описание
Данные являются слишком большими для определенного типа данных.
Доступный в OS X v10.2 и позже.
-
Атрибут не существует.
Значение
– 25303
Описание
Атрибут не существует.
Доступный в OS X v10.2 и позже.
-
Ссылка элемента недопустима.
Значение
– 25304
Описание
Ссылка элемента недопустима.
Доступный в OS X v10.2 и позже.
-
Поисковая ссылка недопустима.
Значение
– 25305
Описание
Поисковая ссылка недопустима.
Доступный в OS X v10.2 и позже.
-
Класс элемента цепочки для ключей не существует.
Значение
– 25306
Описание
Класс элемента цепочки для ключей не существует.
Доступный в OS X v10.2 и позже.
-
Цепочка для ключей по умолчанию не существует.
Значение
– 25307
Описание
Цепочка для ключей по умолчанию не существует.
Доступный в OS X v10.2 и позже.
-
Взаимодействие с Сервером безопасности не позволяется.
Значение
– 25308
Описание
Взаимодействие с Сервером безопасности не позволяется.
Доступный в OS X v10.2 и позже.
-
Атрибут только для чтения.
Значение
– 25309
Описание
Атрибут только для чтения.
Доступный в OS X v10.2 и позже.
-
Версия является неправильной.
Значение
– 25310
Описание
Версия является неправильной.
Доступный в OS X v10.2 и позже.
-
Размер ключа не позволяется.
Значение
– 25311
Описание
Размер ключа не позволяется.
Доступный в OS X v10.2 и позже.
-
Нет никакого доступного модуля хранения.
Значение
– 25312
Описание
Нет никакого доступного модуля хранения.
Доступный в OS X v10.2 и позже.
-
Нет никакого доступного модуля сертификата.
Значение
– 25313
Описание
Нет никакого доступного модуля сертификата.
Доступный в OS X v10.2 и позже.
-
Нет никакого доступного модуля политики.
Значение
– 25314
Описание
Нет никакого доступного модуля политики.
Доступный в OS X v10.2 и позже.
-
Взаимодействие с пользователем требуется.
Значение
– 25315
Описание
Взаимодействие с пользователем требуется.
Доступный в OS X v10.2 и позже.
-
Данные не доступны.
Значение
– 25316
Описание
Данные не доступны.
Доступный в OS X v10.2 и позже.
-
Данные не являются модифицируемыми.
Значение
– 25317
Описание
Данные не являются модифицируемыми.
Доступный в OS X v10.2 и позже.
-
Попытка создать цепочку сертификата перестала работать.
Значение
– 25318
Описание
Попытка создать цепочку сертификата перестала работать.
Доступный в OS X v10.2 и позже.
-
Предпочтительный указанный домен недопустим. Эта ошибка доступна в OS X v10.3 и позже.
Значение
– 25319
Описание
Предпочтительный указанный домен недопустим. Эта ошибка доступна в OS X v10.3 и позже.
Доступный в OS X v10.3 и позже.
-
Список управления доступом не находится в стандартной простой форме.
Значение
– 25240
Описание
Список управления доступом не находится в стандартной простой форме.
Доступный в OS X v10.2 и позже.
-
Указанная политика не может быть найдена.
Значение
– 25241
Описание
Указанная политика не может быть найдена.
Доступный в OS X v10.2 и позже.
-
Доверительная установка недопустима.
Значение
– 25242
Описание
Доверительная установка недопустима.
Доступный в OS X v10.2 и позже.
-
Указанный элемент не имеет никакого управления доступом.
Значение
– 25243
Описание
Указанный элемент не имеет никакого управления доступом.
Доступный в OS X v10.2 и позже.
-
Недопустимая попытка изменить владельца элемента.
Значение
– 25244
Описание
Недопустимая попытка изменить владельца элемента.
Доступный в OS X v10.2 и позже.
-
Никакие доверительные результаты не доступны.
Значение
– 25245
Описание
Никакие доверительные результаты не доступны.
Доступный в OS X v10.3 и позже.
-
Указанный формат импорта или формат экспорта не поддерживаются.
Значение
– 25256
Описание
Указанный формат импорта или формат экспорта не поддерживаются.
Доступный в OS X v10.4 и позже.
-
Элемент, который Вы пытаетесь импортировать, имеет неизвестный формат.
Значение
– 25257
Описание
Элемент, который Вы пытаетесь импортировать, имеет неизвестный формат.
Доступный в OS X v10.4 и позже.
-
Ключ должен быть обернут, чтобы быть экспортированным.
Значение
– 25258
Описание
Ключ должен быть обернут, чтобы быть экспортированным.
Доступный в OS X v10.4 и позже.
-
Попытка была предпринята для импорта многократных закрытых ключей.
Значение
– 25259
Описание
Попытка была предпринята для импорта многократных закрытых ключей.
Доступный в OS X v10.4 и позже.
-
Пароль требуется для импорта или экспорта.
Значение
– 25260
Описание
Пароль требуется для импорта или экспорта.
Доступный в OS X v10.4 и позже.