sha1test.pp 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. program sha1test;
  2. {$mode objfpc}{$h+}
  3. uses SysUtils, sha1;
  4. function performTest: cardinal;
  5. // Runs test and returns result code (0=success)
  6. var
  7. s, sdig: string;
  8. i: integer;
  9. ctx: TSHA1Context;
  10. d: TSHA1Digest;
  11. begin
  12. result := 0;
  13. sdig := SHA1Print(SHA1String('abc'));
  14. if sdig <> 'a9993e364706816aba3e25717850c26c9cd0d89d' then
  15. result := result or 1;
  16. sdig := SHA1Print(SHA1String('abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq'));
  17. if sdig <> '84983e441c3bd26ebaae4aa1f95129e5e54670f1' then
  18. result := result or 2;
  19. // SHA-1 of a million 'a' symbols
  20. SetLength(s, 1000);
  21. for i := 1 to 1000 do s[i] := 'a';
  22. SHA1Init(ctx);
  23. for i := 0 to 999 do
  24. SHA1Update(ctx, PChar(s)^, 1000);
  25. SHA1Final(ctx, d);
  26. sdig := SHA1Print(d);
  27. if sdig <> '34aa973cd4c4daa4f61eeb2bdbad27316534016f' then
  28. result := result or 4;
  29. end;
  30. var
  31. StartTime, EndTime: TDateTime;
  32. code: cardinal;
  33. begin
  34. writeln('Performing basic SHA-1 test...');
  35. code:=performTest;
  36. if code = 0 then
  37. writeln('Basic SHA-1 tests passed')
  38. else
  39. begin
  40. writeln('SHA-1 tests failed: ', code);
  41. end;
  42. Halt(code);
  43. end.