Преобразование NSData в SecKeyRef
У меня есть открытый ключ, который я получил с удаленного сервера, и я хочу выполнить шифрование RSA с помощью этого открытого ключа. Но проблема в том, что я получаю данные открытого ключа в виде байтового массива в буфере. Я могу конвертировать его в NSData, но я не могу конвертировать в SecKeyRef, поэтому я могу продолжать шифрование. Мой код шифрования выглядит так:}
+(NSString *)encryptRSA:(NSString *)plainTextString withKey:(SecKeyRef)publicKey {
size_t cipherBufferSize = SecKeyGetBlockSize(publicKey);
uint8_t *cipherBuffer = malloc(cipherBufferSize);
uint8_t *nonce = (uint8_t *)[plainTextString UTF8String];
SecKeyEncrypt(publicKey,
kSecPaddingOAEP,
nonce,
strlen( (char*)nonce ),
&cipherBuffer[0],
&cipherBufferSize);
NSData *encryptedData = [NSData dataWithBytes:cipherBuffer length:cipherBufferSize];
return [encryptedData base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength];
Как вы можете видеть, мне нужен тип объекта SecKeyRef для завершения моего шифрования. Но мой открытый ключ RSA находится в переменной NSData. Так как же я могу преобразовать NSData в тип объекта SecKeyRef. Заранее спасибо.