tsha1test.pp 1.2 KB

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