Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.12.2016, 18:39   #1
Winexcel
Форумчанин
 
Регистрация: 26.08.2013
Сообщений: 187
По умолчанию libeay32 не работает чтение публичного ключа

Доброго времени суток!
Делал всё по статье, https://habrahabr.ru/post/280302/, сгенерировал публичный и приватный ключ, сделал инициализацию софта, и пытаюсь загрузить приватный и публичный ключ в софт, но вот не задача, публичный ключ не загружается а приватный загружается, не могу понять что делаю не так, в логе вижу следующее:
Код:
error:02001002:system library:fopen:No such file or directory
error:20074002:BIO routines:FILE_CTRL:system lib
error:20068078:BIO routines:BIO_gets:uninitialized
error:0906D06C:PEM routines:PEM_read_bio:no start line
В данном случае ругается на публичный ключ, если заккоментить строчку с загрузкой публичного то ошибок нет.
Весь код:

Код:
procedure LoadSSL;
begin
  OpenSSL_add_all_algorithms;
  OpenSSL_add_all_ciphers;
  OpenSSL_add_all_digests;
  ERR_load_crypto_strings;
  ERR_load_RSA_strings;
end;

procedure FreeSSL;
begin
  EVP_cleanup;
  ERR_free_strings;
end;

function LoadPublicKey(KeyFile: string) :pEVP_PKEY ;
var
  mem: pBIO;
  k: pEVP_PKEY;
begin
  k := nil;
  mem := BIO_new(BIO_s_file());
  BIO_read_filename(mem, PAnsiChar(KeyFile));
  try
    result := PEM_read_bio_PubKey(mem, k, nil, nil);
  finally
    BIO_free_all(mem);
  end;
end;

function LoadPrivateKey(KeyFile: AnsiString) :pEVP_PKEY;
var
  mem: pBIO;
  k: pEVP_PKEY;
begin
  k := nil;
  mem := BIO_new(BIO_s_file());
  BIO_read_filename(mem, PAnsiChar(KeyFile));
  try
    result := PEM_read_bio_PrivateKey(mem, k, nil, nil);
  finally
    BIO_free_all(mem);
  end;
end;

procedure ReadKeys();
var
  FPublicKey: pEVP_PKEY;
  FPrivateKey: pEVP_PKEY;
  err: Cardinal;
begin
  FPublicKey := LoadPublicKey('C:\RSA\Public.key');
  FPrivateKey := LoadPrivateKey('C:\RSA\Private.key');

  if (FPublicKey = nil) or (FPrivateKey = nil)  then
  begin
    err := ERR_get_error;
    repeat
      FormMain.RSALog.Lines.Add(string(ERR_error_string(err, nil)));
      err := ERR_get_error;
    until err = 0;
    end;
end;


procedure TFormMain.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  FreeSSL();
end;

procedure TFormMain.FormCreate(Sender: TObject);
begin
  LoadSSL();
  Path := ExtractFilePath(Application.ExeName);
  ReadKeys();
end;
Помогите кто знает что не так делаю.
Winexcel вне форума Ответить с цитированием
Старый 07.12.2016, 19:14   #2
Winexcel
Форумчанин
 
Регистрация: 26.08.2013
Сообщений: 187
По умолчанию

Проблема решена, решение - использовать кодировку ANSI для передачи путей к ключам.
Winexcel вне форума Ответить с цитированием
Старый 08.12.2016, 17:03   #3
Winexcel
Форумчанин
 
Регистрация: 26.08.2013
Сообщений: 187
По умолчанию

От одной проблеме плавно перешли к другим:
Код:
error:02001005:system library:fopen:Input/output error
error:20074002:BIO routines:FILE_CTRL:system lib
error:20068078:BIO routines:BIO_gets:uninitialized
error:0906D06C:PEM routines:PEM_read_bio:no start line
Кто знает как решить?
Компилирую https://github.com/ddlencemc/RSA-via-OpenSSL-libeay32 в Delphi 10 Seattle
Winexcel вне форума Ответить с цитированием
Старый 08.12.2016, 17:22   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Положить правильные ключи в правильное место
p51x вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не работает чтение из файла. Pug_from_Mordor Помощь студентам 8 04.06.2015 21:11
Чтение ключа из ini файла NapalmRain C# (си шарп) 4 06.05.2011 01:27
ssleay32.dll libeay32.dll пауэрлифтинг Компоненты Delphi 4 22.05.2010 08:46
Чтение, чтение и еще раз чтение Alex Cones Общие вопросы Delphi 3 07.06.2009 15:28
TP7 чтение из файла, работает но не работает!? Qousio Помощь студентам 7 02.06.2009 09:37