Криптографическая ссылка служб синтаксиса сообщения
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 = CMSEncoderObjective C
typedef struct _CMSEncoder *CMSEncoderRef;Обсуждение
Это - объект, совместимо с Базовой Основой и использует стандартную Базовую семантику Основы. Избавьтесь от него с
CFReleaseфункция.Оператор импорта
Objective C
@import Security;Swift
import SecurityДоступность
Доступный в OS X v10.5 и позже.
-
Непрозрачная ссылка на объект декодера CMS.
Объявление
Swift
typealias CMSDecoderRef = CMSDecoderObjective C
typedef struct _CMSDecoder *CMSDecoderRef;Обсуждение
Это - объект, совместимо с Базовой Основой и использует стандартную Базовую семантику Основы. Избавьтесь от него с
CFReleaseфункция.Оператор импорта
Objective C
@import Security;Swift
import SecurityДоступность
Доступный в OS X v10.5 и позже.
-
Дополнительные атрибуты, которые могут быть указаны с
CMSEncoderAddSignedAttributesфункция.Объявление
Swift
typealias CMSSignedAttributes = UInt32Objective C
enum { kCMSAttrNone = 0x0000, kCMSAttrSmimeCapabilities = 0x0001, kCMSAttrSmimeEncryptionKeyPrefs = 0x0002, kCMSAttrSmimeMSEncryptionKeyPrefs = 0x0004, kCMSAttrSigningTime = 0x0008 }; typedef uint32_t CMSSignedAttributes;Константы
-
kCMSAttrNonekCMSAttrNoneНикакие атрибуты.
Доступный в OS X v10.5 и позже.
-
kCMSAttrSmimeCapabilitieskCMSAttrSmimeCapabilitiesДобавляет информация к сообщению со знаком, идентифицирующему подпись, шифрование и алгоритмы выборки сообщений, поддерживаемые кодером. Добавление этого атрибута не изменяет путь, которым кодируется сообщение. Посмотрите RFC 2311: раздел S/MIME Version 2 Message Specification (http://www .ietf.org/rfc/rfc2311.txt) 2.5.2 для получения дополнительной информации об атрибуте возможностей.
Доступный в OS X v10.5 и позже.
-
kCMSAttrSmimeEncryptionKeyPrefskCMSAttrSmimeEncryptionKeyPrefsУказывает, что сертификат подписания, включенный с сообщением, является предпочтительным для шифрования S/MIME.
Доступный в OS X v10.5 и позже.
-
kCMSAttrSmimeMSEncryptionKeyPrefskCMSAttrSmimeMSEncryptionKeyPrefsТо же как
kCMSSmimeEncryptionKeyPrefs, использование идентификатора объекта атрибута (OID) предпочтено Microsoft.Доступный в OS X v10.5 и позже.
-
kCMSAttrSigningTimekCMSAttrSigningTimeЗаставляет кодер включать время подписания.
Доступный в OS X v10.5 и позже.
Обсуждение
Эти флаги заставляют кодер добавлять атрибуты к сообщению со знаком, которое может быть интерпретировано получателем. Эти атрибуты не используются для сообщений без знака.
Оператор импорта
Objective C
@import Security;Swift
import SecurityДоступность
Доступный в OS X v10.5 и позже.
-
-
Константы, которые могут быть установлены
CMSEncoderSetCertificateChainModeфункция для указания, что сертификаты включать в сообщение со знаком.Объявление
Swift
typealias CMSCertificateChainMode = UInt32Objective C
enum { kCMSCertificateNone = 0, kCMSCertificateSignerOnly, kCMSCertificateChain, kCMSCertificateChainWithRoot }; typedef uint32_t CMSCertificateChainMode;Константы
-
kCMSCertificateNonekCMSCertificateNoneНе включайте сертификаты.
Доступный в OS X v10.5 и позже.
-
kCMSCertificateSignerOnlykCMSCertificateSignerOnlyТолько включайте сертификаты подписывающего лица.
Доступный в OS X v10.5 и позже.
-
kCMSCertificateChainkCMSCertificateChainВключайте цепочку сертификата подписывающего лица до, но не включая корневой сертификат.
Доступный в OS X v10.5 и позже.
-
kCMSCertificateChainWithRootkCMSCertificateChainWithRootВключайте всю цепочку сертификата подписывающего лица, включая корневой сертификат.
Доступный в OS X v10.5 и позже.
Оператор импорта
Objective C
@import Security;Swift
import SecurityДоступность
Доступный в OS X v10.5 и позже.
-
-
Константы, указывающие состояние подписи и информации о подписывающем лице в сообщении со знаком, как получено
CMSDecoderCopySignerStatusфункция.Объявление
Swift
typealias CMSSignerStatus = UInt32Objective C
enum { kCMSSignerUnsigned = 0, kCMSSignerValid, kCMSSignerNeedsDetachedContent, kCMSSignerInvalidSignature, kCMSSignerInvalidCert, kCMSSignerInvalidIndex }; typedef uint32_t CMSSignerStatus;Константы
-
kCMSSignerUnsignedkCMSSignerUnsignedСообщение не было подписано.
Доступный в OS X v10.5 и позже.
-
kCMSSignerValidkCMSSignerValidСообщение было подписано, и и подпись и сертификат подписывающего лица были проверены.
Доступный в OS X v10.5 и позже.
-
kCMSSignerNeedsDetachedContentkCMSSignerNeedsDetachedContentСообщение было подписано, но отсоединило содержание. Необходимо вызвать
CMSDecoderSetDetachedContentфункция прежде, чем установить состояние подписи.Доступный в OS X v10.5 и позже.
-
kCMSSignerInvalidSignaturekCMSSignerInvalidSignatureСообщение было подписано, но подпись недопустима.
Доступный в OS X v10.5 и позже.
-
kCMSSignerInvalidCertkCMSSignerInvalidCertСообщение было подписано, но не мог быть проверен сертификат подписывающего лица.
Доступный в OS X v10.5 и позже.
-
kCMSSignerInvalidIndexkCMSSignerInvalidIndexУказанное значение для индекса подписывающего лица (
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 и позже.
