Recent

Author Topic: Generating OpenSSL keys using TProcess  (Read 1795 times)

torbente

  • Sr. Member
  • ****
  • Posts: 325
    • Noso Main Page
Generating OpenSSL keys using TProcess
« on: June 23, 2018, 07:00:47 pm »
I created this function:

Code: Pascal  [Select][+][-]
  1. Function CreateKeysPair(KeyBits:Integer):Boolean;
  2. var
  3.   MyProcess, MyProcess2 : TProcess;
  4. Begin
  5. //Generates the private
  6. MyProcess:= TProcess.Create(nil);
  7. MyProcess.Executable := 'c:\OpenSSL-Win32\bin\openssl.exe';
  8. MyProcess.Parameters.Add('genrsa');
  9. MyProcess.Parameters.Add('-out');
  10. MyProcess.Parameters.Add('DATA/private.pem');
  11. MyProcess.Parameters.Add(IntToStr(KeyBits));
  12. MyProcess.Options := MyProcess.Options + [poWaitOnExit, poUsePipes, poNoConsole];
  13. MyProcess.Execute;
  14. // Extract public key
  15. MyProcess2:= TProcess.Create(nil);
  16. MyProcess2.Executable := 'c:\OpenSSL-Win32\bin\openssl.exe';
  17. MyProcess2.Parameters.Add('rsa');
  18. MyProcess2.Parameters.Add('-in DATA/private.pem');
  19. MyProcess2.Parameters.Add('-pubout');
  20. MyProcess2.Parameters.Add('-out DATA/public.pem');
  21. MyProcess2.Options := MyProcess2.Options + [poWaitOnExit, poUsePipes, poNoConsole];
  22. MyProcess2.Execute;
  23. if ((FileExists('DATA/private.pem')) and (FileExists('DATA/public.pem'))) then result := true
  24. else result := false;
  25. End;

The private key is created as expected, but the public is not extracted. I tried with TProcess.Environment values for OpenSSL but i was unable to figure out a solution. I also tried with AppFolder/data/private.pem but nothing.

EDIT: I added
Code: Pascal  [Select][+][-]
  1. mainmemo.lines.LoadFromStream(MyProcess2.Stderr);  

And got this error:
rsa: Unknown cipher in DATA/private.pem
rsa: Use -help for summary.
 :o
« Last Edit: June 23, 2018, 08:12:01 pm by torbente »
Noso Cryptocurrency Main Developer
https://github.com/DevTeamNoso/NosoWallet

fred

  • Full Member
  • ***
  • Posts: 201
Re: Generating OpenSSL keys using TProcess
« Reply #1 on: June 23, 2018, 08:26:45 pm »
Don't know of it is the problem but .Add uses only 1 value so '-in DATA/private.pem' would be one parameter "-in DATA/privatie.pem" instead of two.

try for line 18:
Code: Pascal  [Select][+][-]
  1. MyProcess2.Parameters.Add('-in');
  2. MyProcess2.Parameters.Add('DATA/private.pem');
( and for line 20 also for -out )

torbente

  • Sr. Member
  • ****
  • Posts: 325
    • Noso Main Page
Re: Generating OpenSSL keys using TProcess
« Reply #2 on: June 24, 2018, 06:43:35 am »
Quote
Don't know of it is the problem but .Add uses only 1 value so '-in DATA/private.pem' would be one parameter "-in DATA/privatie.pem" instead of two.

My fail. Thank you for your time. Its fixed now.
Noso Cryptocurrency Main Developer
https://github.com/DevTeamNoso/NosoWallet

 

TinyPortal © 2005-2018