Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Не прочесть открытый ключ RSA


Автор: ekzo 3.9.2014, 06:37

Юзаю Delphi XE6 (Firemonkey) + OpenSSL libs 1.0.1i (это под винду, под мак не надо, там свое) + заголовочные файлы Indy IdSSLOpenSSLHeaders, IdSSLOpenSSLHeaders_static.

Пытаюсь прочесть RSA открытый ключ, не получается, PEM_read_bio_RsaPublicKey возвращает 0 (nil). Точно такой же код для закрытого ключа (функция PEM_read_bio_RsaPrivateKey) работает нормально.


Код
function TForm1.ReadPublicKey(AFileName: TFileName): pRSA;
var
  keyfile: pBIO;
begin
  keyfile := BIO_new(BIO_s_file());
  BIO_read_filename(keyfile, PAnsiChar(UTF8Encode(AFileName)));
  result := PEM_read_bio_RsaPublicKey(keyfile, nil, nil, nil);
  if result = nil then
    raise Exception.Create('Unable to read public key. ' + GetErrorMessage);
end;



Ключи сгенерены так:

openssl genrsa -out private.pem 1024 
openssl rsa -in private.pem -outform PEM -pubout -out public.pem


Выглядят так:

-----BEGIN RSA PRIVATE KEY-----
MIICXgIBAAKBgQDyYSxGmR95H9tO2Be82RyFd0KzqCH64D0ssUtURbYw4qJTeKln
..cut..
fKcHkq+cl7KKVi+nocAO8sUzzzBFy9TlXbx8cgN/PIFwvw==
-----END RSA PRIVATE KEY----- 


-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDyYSxGmR95H9tO2Be82RyFd0Kz
..cut..
WdCa/uFKyfIJHsQiuwIDAQAB
-----END PUBLIC KEY-----


Знает кто, что тут не так? Или может другой способ расшифровывать текст зашифрованый с помощью php (openssl_public_encrypt /openssl_private_encrypt).
Смог поставить какую-то версию компонентов Lockbox - так оно не совместимо с OpenSSL ключами... Да, фишка в том, что мне нужно решение работающее на MacOS/Firemonkey.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)