Модераторы: Snowy, Poseidon, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Загрузка сертификата с помощью openssl, Необходимо получить публичный ключ 
V
    Опции темы
JanryMayers
Дата 16.1.2016, 12:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 71
Регистрация: 11.6.2009
Где: Украина, г. Киев

Репутация: нет
Всего: нет



Добрый день!

Есть сервер. Есть клиент, платформа ios. Необходимо идентификацировать пользователя, который залогинился через game center, на сервере используя механизм описанный тут.

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

Код

class function TAuthorizationCommands.ReadPublicKey(const ACertificate: String): pEVP_PKEY;
var
  Keyfile: pBIO;
  X509: pX509;
  LResult: Int32;
  LRSA: TArray<Char>;
begin
  LRSA := ACertificate.ToCharArray;

  KeyFile := BIO_new(BIO_s_mem());
  LResult := BIO_puts(KeyFile, @LRSA[0]);
  X509 := d2i_X509_bio(KeyFile, nil);
  Result := X509_get_pubkey(X509);
end;


d2i_X509_bio все время возвращает nil.
PM MAIL   Вверх
libcpp
Дата 16.1.2016, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 0
Регистрация: 9.3.2013

Репутация: нет
Всего: нет



А сертификат у тебя в каком формате, PEM или DER ?

Этот ответ добавлен с нового Винграда - http://vingrad.com
PM MAIL   Вверх
JanryMayers
Дата 16.1.2016, 13:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 71
Регистрация: 11.6.2009
Где: Украина, г. Киев

Репутация: нет
Всего: нет



DER пример файла можно глянуть тут https://static.gc.apple.com/public-key/gc-prod-2.cer
PM MAIL   Вверх
JanryMayers
Дата 18.1.2016, 16:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 71
Регистрация: 11.6.2009
Где: Украина, г. Киев

Репутация: нет
Всего: нет



Разобрался, вот такой вариант работает.

Код

class function TAuthorizationCommands.ReadPublicKey(const ACertificate: TBytes): pEVP_PKEY;
var
  Keyfile: pBIO;
  X509: pX509;
begin
  Keyfile := BIO_new_mem_buf(@ACertificate[0], Length(ACertificate));
  X509 := d2i_X509_bio(KeyFile, nil);
  Result := X509_get_pubkey(X509);
end;


Использовать string нельзя, при конвертации происходит потеря данных.

Это сообщение отредактировал(а) JanryMayers - 18.1.2016, 16:58
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.1157 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.