Чтение файлов
К проще доступу make-файла безопасность преобразовывает API, обеспечивает, чтение преобразовывает тот возврат содержание файла в a CFData
объект. Путем объединения в цепочку этого преобразования с другими преобразованиями можно эффективно использовать читаемый поток файла, как введено для любых других, преобразовывают.
Если Вы уже не имеете потока чтения, создаете или получаете a
CFURLRef
объект для исходного файла.Например, для чтения файла
encrypt2_key
в текущем рабочем каталоге Вы могли записать код как следующее:CFURLRef url = CFURLCreateFromFileSystemRepresentation (
kCFAllocatorDefault,
"encrypt2_key",
12,
false);
Если у Вас уже нет потока чтения, создайте a
CFReadStreamRef
объект от этогоCFURLRef
.Например:
CFReadStreamRef cfrs = CFReadStreamCreateWithFile(
kCFAllocatorDefault,
url);
Вызвать
SecTransformCreateReadTransformWithReadStream
для создания чтения преобразовывают.Например:
SecTransformRef readTransform = SecTransformCreateReadTransformWithReadStream(cfrs);
Если Ваш ключ шифрования является рядом необработанных байтов, можно теперь получить содержание файла как a CFData
объект путем вызова SecTransformExecute
или SecTransformExecuteAsync
на преобразовании возражают следующим образом:
CFDataRef cfdatacryptokey = SecTransformExecute(readTransform, &error); |
Если Ваш ключ шифрования находится в кодировании Base64, можно счесть полезным сгруппировать это преобразование с объектом декодера Base64. Например:
/* Create the Base64 encoder object. */ |
SecTransformRef decoder = SecDecodeTransformCreate(kSecBase64Encoding, &error); |
if (error) { CFShow(error); exit(-1); } |
/* Create the group transform object. */ |
SecGroupTransformRef group = SecTransformCreateGroupTransform(); |
/* Connect the output of the read transform |
to the input of the decoder using the |
group transform object. */ |
SecTransformConnectTransforms(readTransform, kSecTransformOutputAttributeName, |
decoder, kSecTransformInputAttributeName, group, &error); |
/* Perform the group transform. */ |
CFDataRef cfdatacryptokey = SecTransformExecute(group, &error); |