iOS: SecRSAPublicKeyCopyPublicSerialization?

Я пытаюсь подключить открытый ключ. У меня есть SecKeyRef , и я хочу сериализовать его с помощью SecRSAPublicKeyCopyPublicSerialization . SecRSAPublicKeyCopyPublicSerialization будет сериализоваться в PKCS # 1 (т. е. SubjectPublicKeyInfo ), а функция документирована на http://www.opensource.apple.com/source/Security/Security-55163.44/sec/Security/SecRSAKey.c .

PKCS # 1 представляет собой кодировку ASN.1 открытого ключа (т. Е. <Код> SubjectPublicKeyInfo ). Этот формат подходит для закрепления. Для тех, кто не знаком, привязка - это белый список ожидаемых сертификатов или открытых ключей для хоста. Они обычно взаимозаменяемы при идентификации хоста, но есть случаи, когда они не являются. Например, открытые ключи Google являются статическими (фиксированными), но Google вращает «внешний» сертификат X509. В этом случае вы будете связывать открытый ключ, а не сертификат.

Каковы правильные заголовки и рамки для SecRSAPublicKeyCopyPublicSerialization ? Я включил Security.framework , но декларация для SecRSAPublicKeyCopyPublicSerialization отсутствует, а функция отсутствует во время ссылки. Я попытался включить SecRSAKey.h .

Извините за крахмальные теги.

Джефф

2
nl ja de

1 ответы

static OSStatus SecRSAPublicKeyCopyPublicSerialization(SecKeyRef key, CFDataRef* serialized)

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

Посмотрите SecItemExport . Эта функция может преобразовывать SecKeyRef в различные внешние представления.

Update: I had missed the tag in the question. SecItemExport is available only on OSX 10.7 and later, but not on iOS.

В iOS (я думаю) вам нужно добавить ключ к KeyChain ( SecItemAdd ), а затем использовать SecItemCopyMatching() (с помощью kSecReturnData ) на YES ) для извлечения необработанных данных.

Метод getPublicKeyRef в SecKeyWrapper.m из примера пробного проекта «CryptoExercise».

2
добавлено
Спасибо Мартину. SecKeyRef поступает из NSURLConnection connection: didReceiveAuthenticationChallenge: . Я использую SecTrustCopyPublicKey , чтобы получить SecKeyRef в делегате. Означает ли это, что я должен поместить SecKeyRef в KeyChain, прежде чем я смогу извлечь публичный показатель и модуль? (Я пытаюсь не писать собственный анализатор ASN.1 для этого).
добавлено автор jww, источник
Благодарю. Я нахожусь на тропе, но это может быть неуловимо. stackoverflow.com/questions/12934743/… , stackoverflow.com/questions/3840005/… и lists.apple.com/archives/apple-cdsa/2011/Sep/msg00009.html , Apple сделала это слишком сложно.
добавлено автор jww, источник
У Apple это притворное настроение. SecItemExport недоступен в iOS (только для Mac OS X), и я даже не могу понять, как перейти от SecKeyRef к NSData , поэтому Я могу разобрать его сам.
добавлено автор jww, источник
@noloader: Я не уверен. Возможно, вам следует обновить свой вопрос информацией о том, чего вы действительно пытаетесь достичь. - Вы можете попробовать, если вы можете использовать один из форматов SecItemExport (например, kSecFormatOpenSSL). У меня была противоположная проблема: Создайте SecKeyRef по показателю и модулю, и я не нашел лучшего решения, кроме ASN.1, закодировать экспонента и ключ.
добавлено автор Martin R, источник
@noloader: Сравнить stackoverflow.com/questions/5988735/… . Кажется, что вам нужно добавить SecKeyRef в KeyChain, получить байты с помощью SecItemCopyMatching() и проанализировать данные ASN.1.
добавлено автор Martin R, источник
@noloader: Здесь является публикация со ссылкой на проект github для кодирования/декодирования BER на iOS. Возможно, вы можете это использовать. - Но просто извлечение экспоненты и модулей из ASN.1 не должно быть слишком сложным.
добавлено автор Martin R, источник
@noloader: К сожалению, я пропустил тэг [ios]. Я соответствующим образом обновлю ответ.
добавлено автор Martin R, источник
Mobile Dev Jobs — вакансии и аналитика
Mobile Dev Jobs — вакансии и аналитика
6 187 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению iOS, Android, Xamarin и т.д. ВАЖНО: Правила публикации и правила канала: Ссылка – https://telegra.ph/Pravila-oformleniya-vakansij-i-rezyume-11-09-2

iOS Developers — русскоговорящее сообщество
iOS Developers — русскоговорящее сообщество
2 400 участник(ов)

Общаемся на темы, посвященным iOS-разработке, Swift, Objective-C, SDK, Rx, Cocoa и т.д.

Кибербезопасность АСУ ТП: RUSCADASEC Community
Кибербезопасность АСУ ТП: RUSCADASEC Community
1 389 участник(ов)

Группа открытого независимого сообщества специалистов по кибербезопасности АСУ ТП / RUSCADASEC для интерактивного обмена информацией по теме Подробнее: www.ruscadasec.ru Наш канал для основных новостей и материалов @RUSCADASECnews

secinfosec
secinfosec
697 участник(ов)

Эта группа про информационную безопасность. Целевая аудитория: пентестеры, ресерчеры, ибшники всех мастей. Реклама, криминал, политика и прочая чушь карается родовыми проклятьями. Митапы: https://www.youtube.com/channel/UCagEjp1FmxY9gsVxi6_d4SQ

Linux Security
Linux Security
652 участник(ов)

Данная группа принципиально про безопасность и в частности про безопасность Linux. Прочие темы просим обсуждать в профильных чатах.

Chat Security / ИБач чат
Chat Security / ИБач чат
601 участник(ов)

Чат канала @ibach Обсуждение всего, что касается информационной безопасности Правила: https://t.me/chat_security/65