Delphi LockBox3, ошибка Asymetric_Engine.createFromStream

РЕДАКТИРОВАТЬ: поскольку я не мог заставить этот код работать, я сделал небольшое обходное решение: теперь я вызываю консоль openssl через ShellExecute (не очень безопасно, но работает).

Доброе утро всем, у меня болит голова, чтобы заставить работать этот код delphi:

(included uTPLb_* libraries)
function Crypto.encodeRSA(msg:String;test:Boolean = False):String;
  var
    file_path:String;
    keyStream:TMemoryStream;
    res:String;
    Codec:TCodec;
    wasAborted:Boolean;
    KeyPair:TAsymetricKeyPair;
    Key:TSymetricKey;
    lib:TCryptographicLibrary;
    signatory:TSignatory;
  begin
    codec:=TCodec.Create(nil);
    signatory:=TSignatory.Create(nil);
    lib:=TCryptoGraphicLibrary.Create(nil);
    try
     if test then
        begin
          file_path:=PUBLIC_KEY_TEST_FILE;
        end
      else
        begin
          file_path:=PUBLIC_KEY_FILE;
        end;
      file_path:=GetCurrentDir+'\'+file_path;
      keyStream:=TMemoryStream.Create;
      keyStream.LoadFromFile(file_path);

      codec.Reset;
      codec.CryptoLibrary:=lib;
      codec.ChainModeId:=ECB_ProgID;
      codec.StreamCipherId:='native.RSA';
      Codec.StreamCipherId:=RSA_ProgID;

      signatory.Codec:=codec;
      signatory.LoadKeysFromStream(keyStream,[partPublic]);


      //stuff to do...
      Result:=res;

    finally
      lib.Free;
      codec.Free;
    end;
  end;

Проблема в том, что «подписавший.LoadKeysFromStream (keyStream, [partPublic]);» процедура продолжает завершаться ошибкой с исключением «Ошибка потока»; файл правильно открыт в режиме чтения.

Содержимое файла открытого ключа

-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsU4LA0ZLWO+twuoReM41
...
-----END PUBLIC KEY-----

(у меня есть полный ключ, но я предпочитаю не разглашать)

Кто-нибудь может мне помочь? Я читал о заполнении pkcs # 1 и команде openssl (Lockbox 3 загрузить открытый ключ невозможно - ошибка чтения потока)

openssl rsa -pubin -in yourpublickey -RSAPublicKey_out -out publicpkcs1

но «-RSAPublicKey_out» не распознается (OpenSSL 0.9.8zh, 14 января 2016 г.). Еще у меня есть закрытый ключ.

Спасибо всем, кто может мне помочь!

обновление: я пытался также сгенерировать криптографические ключи, но я не могу их прочитать.

signatory.storeKeysToStream

результат тот же.

Я скачал библиотеку здесь: https://github.com/TurboPack/LockBox


person Marco P    schedule 12.07.2016    source источник
comment
LockBox3 несовместим с OpenSSL. OpenSSL 0.9.8 устарел и содержит ошибки. Используйте последнюю версию (1.0.x)   -  person smooty86    schedule 12.07.2016
comment
Я запускаю это приложение с версией 1.0.2h, спасибо за предложение.   -  person Marco P    schedule 12.07.2016