12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- program sha1test;
- {$mode objfpc}{$h+}
- uses SysUtils, sha1;
- function performTest: cardinal;
- // Runs test and returns result code (0=success)
- var
- s, sdig: string;
- 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, PChar(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.
|