mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-13 06:29:32 +02:00
57 lines
1.2 KiB
ObjectPascal
57 lines
1.2 KiB
ObjectPascal
program sha1test;
|
|
|
|
{$mode objfpc}
|
|
{$h+}
|
|
|
|
uses
|
|
{$ifdef unix}
|
|
cwstring,
|
|
{$endif}
|
|
SysUtils, sha1;
|
|
|
|
function performTest: cardinal;
|
|
|
|
// Runs test and returns result code (0=success)
|
|
var
|
|
s, sdig: rawbytestring;
|
|
i: integer;
|
|
ctx: TSHA1Context;
|
|
d: TSHA1Digest;
|
|
begin
|
|
result := 0;
|
|
sdig := SHA1Print(SHA1String('abc'));
|
|
if sdig <> 'a9993e364706816aba3e25717850c26c9cd0d89d' then
|
|
result := result or 1;
|
|
|
|
sdig := SHA1Print(SHA1String('abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq'));
|
|
if sdig <> '84983e441c3bd26ebaae4aa1f95129e5e54670f1' then
|
|
result := result or 2;
|
|
|
|
// SHA-1 of a million 'a' symbols
|
|
SetLength(s, 1000);
|
|
for i := 1 to 1000 do s[i] := 'a';
|
|
SHA1Init(ctx);
|
|
for i := 0 to 999 do
|
|
SHA1Update(ctx, PAnsiChar(s)^, 1000);
|
|
SHA1Final(ctx, d);
|
|
sdig := SHA1Print(d);
|
|
if sdig <> '34aa973cd4c4daa4f61eeb2bdbad27316534016f' then
|
|
result := result or 4;
|
|
end;
|
|
|
|
var
|
|
StartTime, EndTime: TDateTime;
|
|
code: cardinal;
|
|
begin
|
|
writeln('Performing basic SHA-1 test...');
|
|
code:=performTest;
|
|
|
|
if code = 0 then
|
|
writeln('Basic SHA-1 tests passed')
|
|
else
|
|
begin
|
|
writeln('SHA-1 tests failed: ', code);
|
|
end;
|
|
Halt(code);
|
|
end.
|