Spec-Zone .ru
спецификации, руководства, описания, API

Библиотека разработчика Mac

Разработчик

Ссылка SecCustomTransform.h

Опции
Развертывание Target:

На этой странице
Язык:

Ссылка SecCustomTransform.h

Пользовательскими преобразованиями является API, предоставляющий возможность для простого создания новых преобразований. Существенные функции преобразования создаются в наборе блоков. Эти блоки переопределяют стандартное поведение основного преобразования; пользовательское преобразование без переопределений является нулевым преобразованием, просто проходящим через поток данных.

Новый тип преобразования создается при вызывании функции SecTransformRegister, регистрирующей имя нового преобразования и устанавливающей его переопределения. Функция SecTransformCreate создает новый экземпляр зарегистрированного пользовательского преобразования.

Демонстрационное пользовательское преобразование предоставлено здесь, вместе с программой базового теста. Это преобразование создает шифр Цезаря, преобразовывают, тот, просто добавляющий значение к каждому байту простого текста.

-----сокращение здесь-----

  • //
  • // CaesarXform.c
  • //
  • // Copyright 2010 Apple Inc. All rights reserved.
  • //
  • //
  • #include <Security/SecCustomTransform.h>
  • #include <Security/SecTransform.h>
  • // This is the unique name for the custom transform type.
  • const CFStringRef kCaesarCipher = CFSTR("com.apple.caesarcipher");
  • // Name of the "key" attribute.
  • const CFStringRef kKeyAttributeName = CFSTR("key");
  • // Shortcut to return a CFError.
  • CFErrorRef invalid_input_error(void)
  • {
  • return CFErrorCreate(kCFAllocatorDefault, kSecTransformErrorDomain,
  • kSecTransformErrorInvalidInput, NULL);
  • }
  • // =========================================================================
  • // Implementation of the Transform instance
  • // =========================================================================
  • static SecTransformInstanceBlock CaesarImplementation(CFStringRef name,
  • SecTransformRef newTransform,
  • SecTransformImplementationRef ref)
  • {
  • SecTransformInstanceBlock instanceBlock =
  • ^{
  • CFErrorRef result = NULL;
  • // Every time a new instance of this custom transform class is
  • // created, this block is called. This behavior means that any
  • // block variables created in this block act like instance
  • // variables for the new custom transform instance.
  • __block int _key = 0;
  • result = SecTransformSetAttributeAction(ref,
  • kSecTransformActionAttributeNotification,
  • kKeyAttributeName,
  • ^(SecTransformAttributeRef name, CFTypeRef d)
  • {
  • CFNumberGetValue((CFNumberRef)d, kCFNumberIntType, &_key);
  • return d;
  • });
  • if (result)
  • return result;
  • // Create an override that will be called to process the input
  • // data into the output data
  • result = SecTransformSetDataAction(ref,
  • kSecTransformActionProcessData,
  • ^(CFTypeRef d)
  • {
  • if (NULL == d) // End of stream?
  • return (CFTypeRef) NULL; // Just return a null.
  • char *dataPtr = (char *)CFDataGetBytePtr((CFDataRef)d);
  • CFIndex dataLength = CFDataGetLength((CFDataRef)d);
  • // Do the processing in memory. There are better ways to do
  • // this but for showing how custom transforms work this is fine.
  • char *buffer = (char *)malloc(dataLength);
  • if (NULL == buffer)
  • return (CFTypeRef) invalid_input_error(); // Return a CFErrorRef
  • // Do the work of the caesar cipher (Rot(n))
  • CFIndex i;
  • for (i = 0; i < dataLength; i++)
  • buffer[i] = dataPtr[i] + _key;
  • return (CFTypeRef)CFDataCreateWithBytesNoCopy(NULL, (UInt8 *)buffer,
  • dataLength, kCFAllocatorMalloc);
  • });
  • return result;
  • };
  • return Block_copy(instanceBlock);
  • }
  • SecTransformRef CaesarTransformCreate(CFIndex k, CFErrorRef* error)
  • {
  • SecTransformRef caesarCipher;
  • __block Boolean result = 1;
  • static dispatch_once_t registeredOK = 0;
  • dispatch_once(&registeredOK,
  • ^{
  • result = SecTransformRegister(kCaesarCipher, &CaesarImplementation, error);
  • });
  • if (!result)
  • return NULL;
  • caesarCipher = SecTransformCreate(kCaesarCipher, error);
  • if (NULL != caesarCipher)
  • {
  • CFNumberRef keyNumber = CFNumberCreate(kCFAllocatorDefault,
  • kCFNumberIntType, &k);
  • SecTransformSetAttribute(caesarCipher, kKeyAttributeName,
  • keyNumber, error);
  • CFRelease(keyNumber);
  • }
  • return caesarCipher;
  • }
  • // The second function shows how to use custom transform defined in the
  • // previous function
  • // =========================================================================
  • // Use a custom ROT-N (caesar cipher) transform
  • // =========================================================================
  • CFDataRef TestCaesar(CFDataRef theData, int rotNumber)
  • {
  • CFDataRef result = NULL;
  • CFErrorRef error = NULL;
  • if (NULL == theData)
  • return result;
  • // Create an instance of the custom transform
  • SecTransformRef caesarCipher = CaesarTransformCreate(rotNumber, &error);
  • if (NULL == caesarCipher || NULL != error)
  • return result;
  • // Set the data to be transformed as the input to the custom transform
  • SecTransformSetAttribute(caesarCipher,
  • kSecTransformInputAttributeName, theData, &error);
  • if (NULL != error)
  • {
  • CFRelease(caesarCipher);
  • return result;
  • }
  • // Execute the transform synchronously
  • result = (CFDataRef)SecTransformExecute(caesarCipher, &error);
  • CFRelease(caesarCipher);
  • return result;
  • }
  • #include <CoreFoundation/CoreFoundation.h>
  • int main (int argc, const char *argv[])
  • {
  • CFDataRef testData, testResult;
  • UInt8 bytes[26];
  • int i;
  • // Create some test data, a string from A-Z
  • for (i = 0; i < sizeof(bytes); i++)
  • bytes[i] = 'A' + i;
  • testData = CFDataCreate(kCFAllocatorDefault, bytes, sizeof(bytes));
  • CFRetain(testData);
  • CFShow(testData);
  • // Encrypt the test data
  • testResult = TestCaesar(testData, 3);
  • CFShow(testResult);
  • CFRelease(testData);
  • CFRelease(testResult);
  • return 0;
  • }

Включенные заголовки

  • <Security/SecTransform.h>

Функции

  • Позвольте пользовательскому преобразованию получать значение атрибута

    Объявление

    Objective C

    CFTypeRef SecTranformCustomGetAttribute ( SecTransformImplementationRef ref, SecTransformStringOrAttributeRef attribute, SecTransformMetaAttributeType type );

    Параметры

    ref

    SecTransformImplementationRef, связывающийся с экземпляром пользовательского преобразования.

    attribute

    Имя или дескриптор атрибута атрибута, значение которого должно быть получено.

    type

    Тип данных, которые будут получены для атрибута. Посмотрите обсуждение SecTransformMetaAttributeType для подробных данных.

    Возвращаемое значение

    Значение атрибута.

    Оператор импорта

    Objective C

    @import Security;

    Доступность

    Доступный в OS X v10.7 и позже.

    Осуждаемый в OS X v10.8.

  • Создает объект вычисления преобразования.

    Объявление

    Swift

    func SecTransformCreate(_ name: CFString!, _ error: UnsafeMutablePointer<Unmanaged<CFError>?>) -> Unmanaged<SecTransform>!

    Objective C

    SecTransformRef SecTransformCreate ( CFStringRef name, CFErrorRef *error );

    Параметры

    name

    Тип преобразования для создания, должно быть, был зарегистрирован SecTransformRegister, или быть предопределенной системой преобразовывают тип.

    error

    Указатель на CFErrorRef. Если ошибка произошла, этот указатель установлен. Если Вы не хотите возвращенной ошибки, этим значением может быть NULL.

    Возвращаемое значение

    Указатель на объект SecTransformRef. Этот объект должен быть выпущен с CFRelease, когда Вы сделаны с ним. Если ошибка произошла, эта функция возвращает NULL.

    Оператор импорта

    Objective C

    @import Security;

    Swift

    import Security

    Доступность

    Доступный в OS X v10.7 и позже.

  • Позвольте пользовательскому преобразованию получать значение атрибута

    Объявление

    Swift

    func SecTransformCustomGetAttribute(_ ref: SecTransformImplementation!, _ attribute: SecTransformStringOrAttribute!, _ type: SecTransformMetaAttributeType) -> Unmanaged<AnyObject>!

    Objective C

    CFTypeRef SecTransformCustomGetAttribute ( SecTransformImplementationRef ref, SecTransformStringOrAttributeRef attribute, SecTransformMetaAttributeType type );

    Параметры

    ref

    SecTransformImplementationRef, связывающийся с экземпляром пользовательского преобразования.

    attribute

    Имя или дескриптор атрибута атрибута, значение которого должно быть получено.

    type

    Тип данных, которые будут получены для атрибута. Посмотрите обсуждение SecTransformMetaAttributeType для подробных данных.

    Возвращаемое значение

    Значение атрибута.

    Оператор импорта

    Objective C

    @import Security;

    Swift

    import Security

    Доступность

    Доступный в OS X v10.8 и позже.

  • Позвольте пользовательскому преобразованию устанавливать значение атрибута

    Объявление

    Swift

    func SecTransformCustomSetAttribute(_ ref: SecTransformImplementation!, _ attribute: SecTransformStringOrAttribute!, _ type: SecTransformMetaAttributeType, _ value: AnyObject!) -> Unmanaged<AnyObject>!

    Objective C

    CFTypeRef SecTransformCustomSetAttribute ( SecTransformImplementationRef ref, SecTransformStringOrAttributeRef attribute, SecTransformMetaAttributeType type, CFTypeRef value );

    Параметры

    ref

    SecTransformImplementationRef, связывающийся с экземпляром пользовательского преобразования.

    attribute

    Имя или дескриптор атрибута атрибута, значение которого должно быть установлено.

    type

    Тип данных, которые будут получены для атрибута. Посмотрите обсуждение SecTransformMetaAttributeType для подробных данных.

    value

    Новое значение для атрибута

    Возвращаемое значение

    CFErrorRef, если ошибка произошла, NULL иначе.

    Обсуждение

    В то время как преобразование выполняется, в отличие от SecTransformSetAttribute API этот API может установить значения атрибута. Эти значения ограничиваются пользовательским экземпляром преобразования, связывающимся с касательно параметра.

    Оператор импорта

    Objective C

    @import Security;

    Swift

    import Security

    Доступность

    Доступный в OS X v10.7 и позже.

  • Возвраты поддерживают CFTypeRef из переопределения processData, говорящего, что, в то время как никакие данные не возвращаются, преобразование является все еще активными и ждущими данными.

    Объявление

    Swift

    func SecTransformNoData() -> Unmanaged<AnyObject>!

    Objective C

    CFTypeRef SecTransformNoData ( void );

    Возвращаемое значение

    'Специальное' значение, признающее, что указывает, что преобразование является все еще активными и ждущими данными.

    Обсуждение

    Стандартное поведение для переопределения ProcessData состоит в том, что оно получит CFDataRef, и оно обрабатывает те данные и возвращает CFDataRef, содержащий обработанные данные. То, когда больше нет данных для обработки блока переопределения ProcessData, вызывают в один прошлый раз с NULL CFDataRef. Блок ProcessData должен возвратить NULL CFDataRef для завершения обработки. Эта модель не работает хорошо на некоторые преобразования. Например, обзор преобразовывает потребности видеть ALL данных, переваривающихся, прежде чем это сможет отослать значение обзора.

    Если блок ProcessData не имеет никаких данных для возврата, он может возвратить SecTransformNoData (), который сообщает системе преобразования, что нет никаких данных для передачи к следующему преобразованию.

    Оператор импорта

    Objective C

    @import Security;

    Swift

    import Security

    Доступность

    Доступный в OS X v10.7 и позже.

  • Допускает откладывание единственного значения для определенного атрибута. Это остановит поток данных в указанный атрибут, пока любой атрибут не будет изменен для экземпляра преобразования, связанного с касательно параметра.

    Объявление

    Swift

    func SecTransformPushbackAttribute(_ ref: SecTransformImplementation!, _ attribute: SecTransformStringOrAttribute!, _ value: AnyObject!) -> Unmanaged<AnyObject>!

    Objective C

    CFTypeRef SecTransformPushbackAttribute ( SecTransformImplementationRef ref, SecTransformStringOrAttributeRef attribute, CFTypeRef value );

    Параметры

    ref

    SecTransformImplementationRef, связывающийся с экземпляром пользовательского преобразования.

    attribute

    Имя или дескриптор атрибута атрибута, значение которого должно быть пододвинуто обратно.

    value

    Пододвигаемое обратно значение.

    Возвращаемое значение

    CFErrorRef, если ошибка произошла, NULL иначе.

    Оператор импорта

    Objective C

    @import Security;

    Swift

    import Security

    Доступность

    Доступный в OS X v10.7 и позже.

  • Зарегистрируйте новое пользовательское преобразование так, чтобы оно могло использоваться для обработки данных

    Объявление

    Swift

    func SecTransformRegister(_ uniqueName: CFString!, _ createTransformFunction: SecTransformCreateFP, _ error: UnsafeMutablePointer<Unmanaged<CFError>?>) -> Boolean

    Objective C

    Boolean SecTransformRegister ( CFStringRef uniqueName, SecTransformCreateFP createTransformFunction, CFErrorRef *error );

    Параметры

    uniqueName

    Уникальное имя для этого пользовательского преобразования. Рекомендуется, чтобы обратное имя DNS использовалось для имени Вашего пользовательского преобразования

    createTransformFunction

    Указатель функции SecTransformCreateFP. Функция должна возвратить блок SecTransformInstanceBlock, что к block_copy обратились прежде, чем возвратить блок. Отказ вызвать block_copy вызовет неопределенное поведение.

    error

    Если ошибка произошла, этот указатель установлен. Если Вы не хотите возвращенной ошибки, этим значением может быть NULL.

    Возвращаемое значение

    Истина, если пользовательское преобразование было зарегистрировано ложь иначе

    Оператор импорта

    Objective C

    @import Security;

    Swift

    import Security

    Доступность

    Доступный в OS X v10.7 и позже.

  • Будьте уведомлены, когда будет установлен атрибут. Когда атрибут установлен, предоставленный блок вызывают. Это может быть сделано для определенного именованного атрибута или всех атрибутов.

    Объявление

    Swift

    func SecTransformSetAttributeAction(_ ref: SecTransformImplementation!, _ action: CFString!, _ attribute: SecTransformStringOrAttribute!, _ newAction: SecTransformAttributeActionBlock!) -> Unmanaged<CFError>!

    Objective C

    CFErrorRef SecTransformSetAttributeAction ( SecTransformImplementationRef ref, CFStringRef action, SecTransformStringOrAttributeRef attribute, SecTransformAttributeActionBlock newAction );

    Параметры

    ref

    SecTransformImplementationRef, связывающийся с экземпляром пользовательского преобразования.

    action

    Поведение, которое будет установлено. Это может быть одним из следующих действий:

    kSecTransformActionAttributeNotification - добавьте блок, который вызывают, когда установлен атрибут. Если именем является NULL, то предоставленный блок вызывают для всех атрибутов набора за исключением, имеющих определенный блок как обработчик.

    Например, если существует обработчик для атрибута «foo» и для всех атрибутов, «foo» обработчик вызывают, когда атрибут «foo» установлен, но все другие наборы атрибута вызовут обработчик NULL.

    kSecTransformActionProcessData действие является особым случаем действия SecTransformSetAttributeAction. Если это вызовут на входном атрибуте тогда, то он перезапишет любой установленный kSecTransformActionProcessData.

    kSecTransformActionAttributeValidation Добавляют блок, который вызывают для проверки ввода к атрибуту.

    attribute

    Имя атрибута, который будет обработан. Ссылка на атрибут может также быть дана здесь. Имя NULL указывает, что предоставленное действие для всех атрибутов.

    newAction

    SecTransformAttributeActionBlock, реализующий поведение.

    Возвращаемое значение

    CFErrorRef, если ошибка произошла NULL иначе.

    Обсуждение

    Когда параметром атрибута является NULL, эта функция может быть вызвана многократно или для именованного атрибута или для всех атрибутов. Каждый раз, когда API вызывают, это перезаписывает то, что было там ранее.

    Оператор импорта

    Objective C

    @import Security;

    Swift

    import Security

    Доступность

    Доступный в OS X v10.7 и позже.

  • Измените способ, которым пользовательское преобразование сделает обработку данных. То, когда параметр действия будет kSecTransformActionProcessData, блок newAction изменит путь, которые вводят данные, обрабатывается для становления выходными данными. Когда параметр действия будет kSecTransformActionInternalizeExtraData, это изменит способ, которым пользовательское преобразование читает в данных, которые будут импортированы в преобразование.

    Объявление

    Swift

    func SecTransformSetDataAction(_ ref: SecTransformImplementation!, _ action: CFString!, _ newAction: SecTransformDataBlock!) -> Unmanaged<CFError>!

    Objective C

    CFErrorRef SecTransformSetDataAction ( SecTransformImplementationRef ref, CFStringRef action, SecTransformDataBlock newAction );

    Параметры

    ref

    SecTransformImplementationRef, связывающийся с экземпляром пользовательского преобразования.

    action

    Переопределяемое действие. Это значение должно быть одним из следующего: Изменение kSecTransformActionProcessData путь, которые вводят данные, обрабатывается в выходные данные. Поведение по умолчанию состоит в том, чтобы просто скопировать входные данные в выходной атрибут.

    kSecTransformActionProcessData действие является действительно особым случаем действия SecTransformSetAttributeAction. При вызове этого метода с kSecTransformActionProcessData, это перезаписало бы любое kSecTransformActionAttributeNotification действие, установленное proviously

    kSecTransformActionInternalizeExtraData Изменяют способ, которым пользовательские воплощенные данные импортируются в преобразование. Поведение по умолчанию ничего не состоит в том, чтобы сделать.

    newAction

    SecTransformDataBlock, реализующий поведение.

    Если параметр действия будет kSecTransformActionProcessData тогда, то этот блок вызовут для обработки входных данных в выходные данные.

    если параметр действия будет kSecTransformActionInternalizeExtraData тогда, то этот блок будет вызванный для ввода пользовательских данных в преобразование.

    Возвращаемое значение

    CFErrorRef является ошибкой, произошедшей NULL иначе.

    Обсуждение

    Этот API можно вызвать многократно. Каждый раз, когда API вызывают, это перезаписывает то, что было там ранее.

    Оператор импорта

    Objective C

    @import Security;

    Swift

    import Security

    Доступность

    Доступный в OS X v10.7 и позже.

Обратные вызовы

  • Блок, переопределяющий поведение по умолчанию пользовательского преобразования.

    Объявление

    Swift

    typealias SecTransformActionBlock = () -> Unmanaged<AnyObject>!

    Objective C

    typedef CFTypeRef (^ SecTransformActionBlock )( void);

    Возвращаемое значение

    Если этот блок привык к сверхъязю kSecTransformActionExternalizeExtraData действие тогда, блок должен возвратить CFDictinaryRef пользовательских элементов, которые будут экспортироваться. Для всех других действий блок должен возвратить NULL. Если ошибка происходит для какого-либо действия, блок должен возвратить CFErrorRef.

    Обсуждение

    Блок SecTransformTransformActionBlock используется для переопределения поведения по умолчанию пользовательского преобразования. Этот блок связан с блоком SecTransformOverrideTransformAction.

    Способы поведения, которые могут быть переопределены:

    kSecTransformActionCanExecute Определяют, имеет ли преобразование все данные, должен был работать.

    kSecTransformActionStartingExecution, Вызванный прежде, чем выполнить ProcessData.

    kSecTransformActionFinalize, Вызванный прежде, чем удалить пользовательское преобразование.

    kSecTransformActionExternalizeExtraData, Вызванный для обеспечения выписывания пользовательских данных, которые будут экспортироваться.

    Пример:

    • SecTransformImplementationRef ref;
    • CFErrorRef error = NULL;
    • error = SecTransformSetTransformAction(ref, kSecTransformActionStartingExecution,
    • ^{
    • // This is where the work to initialize any data needed
    • // before running
    • CFErrorRef result = DoMyInitialization();
    • return result;
    • });
    • SecTransformTransformActionBlock actionBlock =
    • ^{
    • // This is where the work to clean up any existing data
    • // before running
    • CFErrorRef result = DoMyFinalization();
    • return result;
    • };
    • error = SecTransformSetTransformAction(ref, kSecTransformActionFinalize,
    • actionBlock);

    Оператор импорта

    Objective C

    @import Security;

    Swift

    import Security

    Доступность

    Доступный в OS X v10.7 и позже.

  • Блок раньше переопределял обработку атрибута по умолчанию для того, когда установлен атрибут.

    Объявление

    Swift

    typealias SecTransformAttributeActionBlock = (SecTransformAttribute!, AnyObject!) -> Unmanaged<AnyObject>!

    Objective C

    typedef CFTypeRef (^SecTransformAttributeActionBlock)( SecTransformAttributeRef attribute, CFTypeRef value);

    Параметры

    attribute

    Атрибут, значение по умолчанию которого переопределяется или NULL, если это - универсальное переопределение уведомления

    value

    Предложенное новое значение для атрибута.

    Возвращаемое значение

    Новое значение атрибута в случае успеха. Если ошибка произошла тогда, CFErrorRef возвращается. Если преобразование должно иметь CFErrorRef как значение атрибута, то CFErrorRef должен быть размещен в контейнер, такой как CFArrayRef, CFDictionaryRef и т.д.

    Обсуждение

    Посмотрите пример программы в этом заголовке для большего количества подробных данных.

    Оператор импорта

    Objective C

    @import Security;

    Swift

    import Security

    Доступность

    Доступный в OS X v10.7 и позже.

  • Указатель функции к функции, которая создаст новый экземпляр пользовательского преобразования.

    Объявление

    Swift

    typealias SecTransformCreateFP = CFunctionPointer<((CFString!, SecTransform!, SecTransformImplementation!) -> SecTransformInstanceBlock!)>

    Objective C

    typedef SecTransformInstanceBlock ( *SecTransformCreateFP)( CFStringRef name, SecTransformRef newTransform, SecTransformImplementationRef ref);

    Параметры

    name

    Имя нового пользовательского преобразования. Это имя MUST быть уникальным.

    newTransform

    Недавно создаваемый преобразовывают Касательно.

    ref

    Ссылка, связывающаяся с экземпляром пользовательского преобразования.

    Возвращаемое значение

    SecTransformInstanceBlock, использующийся для создания нового экземпляра пользовательского преобразования.

    Обсуждение

    Функция CreateTransform создает новое преобразование. SecTransformInstanceBlock, возвращающийся из этой функции, обеспечивает реализацию всех переопределений, необходимых для создания пользовательского преобразования. Это возвратилось, SecTransformInstanceBlock также, где могут быть определены переменные «экземпляра» для пользовательского преобразования. Посмотрите пример в разделе заголовка этого файла для большего количества подробности.

    Оператор импорта

    Objective C

    @import Security;

    Swift

    import Security

    Доступность

    Доступный в OS X v10.7 и позже.

  • Блок, используемый для переопределения обработки данных по умолчанию для преобразования.

    Объявление

    Swift

    typealias SecTransformDataBlock = (AnyObject!) -> Unmanaged<AnyObject>!

    Objective C

    typedef CFTypeRef (^SecTransformDataBlock)( CFTypeRef data);

    Параметры

    data

    Данные, которые будут обработаны. Когда этот блок привык к реализовать kSecTransformActionProcessData действие, данные являются входными данными, которые должны быть обработаны в выходные данные. Когда этот блок используется для реализации kSecTransformActionInternalizeExtraData действия, данными является CFDictionaryRef, содержащий данные, которые должны быть импортированы.

    Возвращаемое значение

    То, когда этот блок привык к implment kSecTransformActionProcessData действие, значение возвратилось, должно быть данными, которые будут переданы выходному атрибуту. Если бы ошибка произошла при обработке входных данных тогда, то блок должен возвратить CFErrorRef.

    Когда этот блок используется для реализации kSecTransformActionInternalizeExtraData действия тогда, этот блок должен возвратить NULL или CFErrorRef, если бы произошла ошибка.

    Обсуждение

    Дополнительную информацию см. в примере программы.

    Оператор импорта

    Objective C

    @import Security;

    Swift

    import Security

    Доступность

    Доступный в OS X v10.7 и позже.

  • Это - блок, возвращающийся из реализации функции CreateTransform.

    Объявление

    Swift

    typealias SecTransformInstanceBlock = () -> Unmanaged<CFError>!

    Objective C

    typedef CFErrorRef (^ SecTransformInstanceBlock )( void);

    Возвращаемое значение

    CFErrorRef, если ошибка произошла или NULL.

    Обсуждение

    Блок экземпляра, возвращающийся от разработчиков функция CreateTransform, определяет поведение пользовательского атрибута. Посмотрите пример во главе этого файла.

    Оператор импорта

    Objective C

    @import Security;

    Swift

    import Security

    Доступность

    Доступный в OS X v10.7 и позже.

Типы данных

Посмотрите раздел Overview выше для документации уровня заголовка.

  • Прямая ссылка к атрибуту. Используя ссылку на атрибут ускоряет использование значения атрибута путем устранения необходимости искать его по имени.

    Объявление

    Swift

    typealias SecTransformAttributeRef = SecTransformAttribute

    Objective C

    typedef CFTypeRef SecTransformAttributeRef;

    Оператор импорта

    Objective C

    @import Security;

    Swift

    import Security

    Доступность

    Доступный в OS X v10.7 и позже.

  • SecTransformImplementationRef является указателем на блок, реализующий экземпляр преобразования.

    Объявление

    Swift

    typealias SecTransformImplementationRef = SecTransformImplementation

    Objective C

    typedef const struct OpaqueSecTransformImplementation* SecTransformImplementationRef;

    Оператор импорта

    Objective C

    @import Security;

    Swift

    import Security

    Доступность

    Доступный в OS X v10.7 и позже.

  • Этот тип показывает, что могут использоваться или CFStringRef или SecTransformAttributeRef.

    Объявление

    Swift

    typealias SecTransformStringOrAttributeRef = SecTransformStringOrAttribute

    Objective C

    typedef CFTypeRef SecTransformStringOrAttributeRef;

    Оператор импорта

    Objective C

    @import Security;

    Swift

    import Security

    Доступность

    Доступный в OS X v10.7 и позже.

Константы

Посмотрите раздел Overview выше для документации уровня заголовка.

  • Объявление

    Swift

    let kSecTransformActionAttributeNotification: CFString! let kSecTransformActionAttributeValidation: CFString! let kSecTransformActionCanExecute: CFString! let kSecTransformActionExternalizeExtraData: CFString! let kSecTransformActionFinalize: CFString! let kSecTransformActionInternalizeExtraData: CFString! let kSecTransformActionProcessData: CFString! let kSecTransformActionStartingExecution: CFString!

    Objective C

    CF_EXPORT const CFStringRef kSecTransformActionAttributeNotification; CF_EXPORT const CFStringRef kSecTransformActionAttributeValidation; CF_EXPORT const CFStringRef kSecTransformActionCanExecute; CF_EXPORT const CFStringRef kSecTransformActionExternalizeExtraData; CF_EXPORT const CFStringRef kSecTransformActionFinalize; CF_EXPORT const CFStringRef kSecTransformActionInternalizeExtraData; CF_EXPORT const CFStringRef kSecTransformActionProcessData; CF_EXPORT const CFStringRef kSecTransformActionStartingExecution; CF_EXPORT const CFStringRef kSecTransformActionAttributeNotification;

    Константы

    • kSecTransformActionAttributeNotification

      kSecTransformActionAttributeNotification

      Когда атрибут установлен, позволяет блоку быть вызванным. Это допускает кэширование значения как основная переменная в блоке экземпляра или превращении данных, которые будут установлены. Это действие состоит в том, где пользовательское преобразование было бы в состоянии сделать обработку за пределами обработки ввода для вывода, как обрабатывают данные, делает. Один данные были обработаны, блок действия может вызвать SecTransformCustomSetAttribute для обновления и другой атрибут.

      Доступный в OS X v10.7 и позже.

    • kSecTransformActionAttributeValidation

      kSecTransformActionAttributeValidation

      Позволяет блоку быть вызванным для проверки нового значения для атрибута. Значение по умолчанию не является никакой проверкой, и любой CFTypeRef может использоваться в качестве нового значения. Если значение в порядке для установки на атрибуте или CFErrorRef иначе, блок должен возвратить NULL.

      Доступный в OS X v10.7 и позже.

    • kSecTransformActionCanExecute

      kSecTransformActionCanExecute

      Переопределяет стандартное поведение, проверяющее, чтобы видеть, были ли все требуемые атрибуты или установлены или подключены к другим, преобразовывают. При переопределении поведения по умолчанию разработчик может решенный, что необходимые данные должны иметь для преобразования, которое будут считать 'готовыми работать'. Возврат NULL означает, что преобразование готово быть выполненным. Если преобразование не готово работать тогда, переопределение должно возвратить CFErrorRef, предусматривающий ошибку.

      Доступный в OS X v10.7 и позже.

    • kSecTransformActionExternalizeExtraData

      kSecTransformActionExternalizeExtraData

      Допускает добавление к данным, хранящимся с помощью переопределения для блока kSecTransformActionExternalizeExtraData. Вывод этого переопределения является словарем, содержащим пользовательские воплощенные данные. Общее использование этого переопределения должно выписать номер версии пользовательского преобразования.

      Доступный в OS X v10.7 и позже.

    • kSecTransformActionFinalize

      kSecTransformActionFinalize

      Переопределяет стандартное поведение, происходящее прежде, чем удалить пользовательское преобразование. Это обычно переопределяется для обеспечения памяти, очищают пользовательского преобразования. Это используется с блоком SecTransformOverrideTransformAction.

      Доступный в OS X v10.7 и позже.

    • kSecTransformActionInternalizeExtraData

      kSecTransformActionInternalizeExtraData

      Переопределяет стандарт, обрабатывающий, который происходит, когда воплощенные данные используются для создания преобразования. Это близко связывается к переопределению kSecTransformActionExternalizeExtraData. 'Нормальные' атрибуты читаются в новое преобразование, и затем это вызывают для чтения в элементах, выписанных с помощью kSecTransformActionExternalizeExtraData переопределение. Общее использование этого переопределения должно было бы читать в номере версии воплощенного пользовательского преобразования.

      Доступный в OS X v10.7 и позже.

    • kSecTransformActionProcessData

      kSecTransformActionProcessData

      Переопределяет стандартную обработку данных для атрибута. Это почти исключительно используется для обработки входного атрибута, поскольку возвращаемое значение их блока устанавливает выходной атрибут. Это используется с блоком SecTransformOverrideAttributeAction.

      Доступный в OS X v10.7 и позже.

    • kSecTransformActionStartingExecution

      kSecTransformActionStartingExecution

      Переопределяет стандартное поведение, происходящее как раз перед стартовым выполнением пользовательского преобразования. Это обычно переопределяется для обеспечения инициализации. Это используется с блоком SecTransformOverrideTransformAction.

      Доступный в OS X v10.7 и позже.

    • SecTransformActionAttributeNotification

      SecTransformActionAttributeNotification

      Когда атрибут установлен, позволяет блоку быть вызванным. Это допускает кэширование значения как основная переменная в блоке экземпляра или превращении данных, которые будут установлены. Это действие состоит в том, где пользовательское преобразование было бы в состоянии сделать обработку за пределами обработки ввода для вывода, как обрабатывают данные, делает. Один данные были обработаны, блок действия может вызвать SecTransformCustomSetAttribute для обновления и другой атрибут.

  • Объявление

    Swift

    var kSecTransformMetaAttributeValue: Int { get } var kSecTransformMetaAttributeName: Int { get } var kSecTransformMetaAttributeRef: Int { get } var kSecTransformMetaAttributeRequired: Int { get } var kSecTransformMetaAttributeRequiresOutboundConnection: Int { get } var kSecTransformMetaAttributeDeferred: Int { get } var kSecTransformMetaAttributeStream: Int { get } var kSecTransformMetaAttributeCanCycle: Int { get } var kSecTransformMetaAttributeExternalize: Int { get } var kSecTransformMetaAttributeHasOutboundConnections: Int { get } var kSecTransformMetaAttributeHasInboundConnection: Int { get }

    Objective C

    enum { kSecTransformMetaAttributeValue, kSecTransformMetaAttributeName, kSecTransformMetaAttributeRef, kSecTransformMetaAttributeRequired, kSecTransformMetaAttributeRequiresOutboundConnection, kSecTransformMetaAttributeDeferred, kSecTransformMetaAttributeStream, kSecTransformMetaAttributeCanCycle, kSecTransformMetaAttributeExternalize, kSecTransformMetaAttributeHasOutboundConnections, kSecTransformMetaAttributeHasInboundConnection };

    Константы

    • kSecTransformMetaAttributeValue

      kSecTransformMetaAttributeValue

      Фактическое значение атрибута. Значение атрибута имеет значение по умолчанию NULL.

      Доступный в OS X v10.7 и позже.

    • kSecTransformMetaAttributeName

      kSecTransformMetaAttributeName

      Имя атрибута. Название атрибута только для чтения и не может использоваться с блоком SecTransformSetAttributeBlock.

      Доступный в OS X v10.7 и позже.

    • kSecTransformMetaAttributeRef

      kSecTransformMetaAttributeRef

      Прямая ссылка к значению атрибута. Эта ссылка допускает прямой доступ к атрибуту, не имея необходимость искать атрибут по имени. Если преобразование обычно использует атрибут, с помощью расчетные скорости использование того атрибута. Ссылки на атрибут не видимы или допустимы от за пределами определенного экземпляра преобразования.

      Доступный в OS X v10.7 и позже.

    • kSecTransformMetaAttributeRequired

      kSecTransformMetaAttributeRequired

      Указывает, должен ли атрибут иметь не набор Значения Нулевого или иметь входящее соединение, прежде чем преобразование начнет выполняться. Эти метаданные имеют значение по умолчанию истины для входного атрибута, но лжи для всех других атрибутов.

      Доступный в OS X v10.7 и позже.

    • kSecTransformMetaAttributeRequiresOutboundConnection

      kSecTransformMetaAttributeRequiresOutboundConnection

      Указывает, должен ли атрибут иметь исходящее соединение. Эти метаданные имеют значение по умолчанию истины для выходного атрибута, но являются ложью для всех других атрибутов.

      Доступный в OS X v10.7 и позже.

    • kSecTransformMetaAttributeDeferred

      kSecTransformMetaAttributeDeferred

      Определяет, задерживаются ли уведомление AttributeSetNotification или блоки ProcessData, пока SecExecuteTransform не вызывают. Это значение метаданных имеет значение по умолчанию истины для входного атрибута, но является ложью для всех других атрибутов.

      Доступный в OS X v10.7 и позже.

    • kSecTransformMetaAttributeStream

      kSecTransformMetaAttributeStream

      Указывает, должен ли атрибут ожидать, что серия значений, заканчивающихся NULL, укажет конец потока данных. Эти метаданные имеют значение по умолчанию истины для атрибутов ввода и вывода, но являются ложью для всех других атрибутов.

      Доступный в OS X v10.7 и позже.

    • kSecTransformMetaAttributeCanCycle

      kSecTransformMetaAttributeCanCycle

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

      Доступный в OS X v10.7 и позже.

    • kSecTransformMetaAttributeExternalize

      kSecTransformMetaAttributeExternalize

      Указывает, должен ли этот атрибут быть выписан при создании внешнего представления этого преобразования. Эти метаданные имеют значение по умолчанию истины.

      Доступный в OS X v10.7 и позже.

    • kSecTransformMetaAttributeHasOutboundConnections

      kSecTransformMetaAttributeHasOutboundConnections

      Если атрибут имеет исходящее соединение, это значение метаданных является истиной. Эти метаданные только для чтения.

      Доступный в OS X v10.7 и позже.

    • kSecTransformMetaAttributeHasInboundConnection

      kSecTransformMetaAttributeHasInboundConnection

      Если атрибут имеет входящее соединение, это значение метаданных является истиной. Эти метаданные только для чтения.

      Доступный в OS X v10.7 и позже.

    Обсуждение

    В преобразовании каждый из его атрибутов является набором «атрибутов метаданных», из которых называют, и текущая стоимость два. Значение непосредственно видимо извне; другие метаданные приписывают прямой поведение преобразования и его функции в его группе. Каждый атрибут может быть адаптирован путем установки его метаданных.