source upload
This commit is contained in:
107
contrib/mORMot/SQLite3/Samples/33 - ECC/ECC.dpr
Normal file
107
contrib/mORMot/SQLite3/Samples/33 - ECC/ECC.dpr
Normal file
@@ -0,0 +1,107 @@
|
||||
program ECC;
|
||||
|
||||
{$APPTYPE CONSOLE}
|
||||
|
||||
(*
|
||||
|
||||
Synopse mORMot framework
|
||||
|
||||
Sample 33 - ECC command line tool
|
||||
Manage certificate-based public-key cryptography using ECC-secp256r1,
|
||||
i.e. public/private key pairs, ECDSA digital signatures and ECIES encryption,
|
||||
as implemented in SynECC.
|
||||
Symetric encryption is also available from aeadcrypt/aeaddecrypt commands.
|
||||
|
||||
|
||||
Version 1.18
|
||||
- Initial Release
|
||||
|
||||
|
||||
first line of uses clause below must be {$I SynDprUses.inc} to enable FastMM4
|
||||
|
||||
*)
|
||||
|
||||
uses
|
||||
{$I SynDprUses.inc}
|
||||
SysUtils,
|
||||
SynCommons,
|
||||
SynTable,
|
||||
SynCrypto,
|
||||
SynEcc,
|
||||
ECCProcess;
|
||||
|
||||
{$R *.res}
|
||||
|
||||
function ProcessCommandLine: TECCCommandError;
|
||||
var cmd: RawUTF8;
|
||||
main: TECCCommand;
|
||||
sw: ICommandLine;
|
||||
begin
|
||||
cmd := StringToUTF8(ParamStr(1));
|
||||
main := TECCCommand(GetEnumNameValueTrimmed(TypeInfo(TECCCommand),pointer(cmd),length(cmd)));
|
||||
if main=ecChain then
|
||||
sw := TCommandLine.CreateAsArray({firstparam=}2) else
|
||||
sw := TCommandLine.Create;
|
||||
result := ECCCommand(main,sw);
|
||||
if result=eccUnknownCommand then begin
|
||||
TextColor(ccLightGreen);
|
||||
writeln(#13#10'Synopse ECC certificate-based public-key cryptography'+
|
||||
#13#10'-----------------------------------------------------');
|
||||
TextColor(ccGreen);
|
||||
writeln('Using mORMot''s SynECC rev. ' + {$I SynopseCommit.inc} + #13#10);
|
||||
TextColor(ccLightGray);
|
||||
writeln(ExeVersion.ProgramName,
|
||||
' help');
|
||||
writeln(ExeVersion.ProgramName,
|
||||
' new -auth key.private -authpass authP@ssW0rd -authrounds 60000'#13#10+
|
||||
' -issuer toto@toto.com -start 2016-10-30 -days 30'#13#10+
|
||||
' -newpass P@ssw0RD@ -newrounds 60000'); // -splitfiles 1');
|
||||
writeln(ExeVersion.ProgramName,
|
||||
' rekey -auth key.private -authpass P@ssW0rd -authrounds 60000'#13#10+
|
||||
' -newpass newP@ssw0RD@ -newrounds 60000');
|
||||
writeln(ExeVersion.ProgramName,
|
||||
' sign -file some.doc -auth key.private -pass P@ssW0rd -rounds 60000');
|
||||
writeln(ExeVersion.ProgramName,
|
||||
' verify -file some.doc -auth key.public');
|
||||
writeln(ExeVersion.ProgramName,
|
||||
' source -auth key.private -pass P@ssW0rd -rounds 60000'#13#10+
|
||||
' -const MY_PRIVKEY -comment "My Private Key"');
|
||||
writeln(ExeVersion.ProgramName,
|
||||
' infopriv -auth key.private -pass P@ssW0rd -rounds 60000 [-json key.json]');
|
||||
writeln(ExeVersion.ProgramName,
|
||||
' chain file1.public file2.public file3.public ...');
|
||||
writeln(ExeVersion.ProgramName,
|
||||
' chainall');
|
||||
writeln(ExeVersion.ProgramName,
|
||||
' crypt -file some.doc -out some.doc.synecc -auth key.public'#13#10+
|
||||
' -saltpass salt -saltrounds 60000 [-algo 0]');
|
||||
writeln(ExeVersion.ProgramName,
|
||||
' decrypt -file some.doc.synecc -out some.doc -auth key.private'#13#10+
|
||||
' -authpass P@ssW0rd -authrounds 60000 -saltpass salt -saltrounds 60000');
|
||||
writeln(ExeVersion.ProgramName,
|
||||
' infocrypt -file some.doc.synecc [-rawfile some.raw][-json some.json]');
|
||||
writeln(ExeVersion.ProgramName,
|
||||
' aeadcrypt -file some.doc -out some.doc.synaead -pass P@ssW0rd -salt salt'#13#10+
|
||||
' -rounds 60000');
|
||||
writeln(ExeVersion.ProgramName,
|
||||
' aeaddecrypt -file some.doc -out some.doc.synaead -pass P@ssW0rd -salt salt'#13#10+
|
||||
' -rounds 60000');
|
||||
writeln(ExeVersion.ProgramName,
|
||||
' cheatinit -newpass MasterP@ssw0RD@ -newrounds 100000');
|
||||
writeln(ExeVersion.ProgramName,
|
||||
' cheat -auth key.private -authpass MasterP@ssw0RD@ -authrounds 100000');
|
||||
writeln(#10'Note that you can add the -noprompt switch for no console interactivity.');
|
||||
end;
|
||||
end;
|
||||
|
||||
begin
|
||||
ExitCode := ord(ProcessCommandLine);
|
||||
{$ifndef FPC}
|
||||
{$WARNINGS OFF}
|
||||
{$ifdef MSWINDOWS}
|
||||
if DebugHook<>0 then
|
||||
readln;
|
||||
{$endif}
|
||||
{$WARNINGS ON}
|
||||
{$endif}
|
||||
end.
|
Reference in New Issue
Block a user