src/Pure/General/sha1_samples.ML
changeset 62666 00aff1da05ae
parent 62665 a78ce0c6e191
child 62667 254582abf067
equal deleted inserted replaced
62665:a78ce0c6e191 62666:00aff1da05ae
     1 (*  Title:      Pure/General/sha1_samples.ML
       
     2     Author:     Makarius
       
     3 
       
     4 Some SHA1 samples found in the wild.
       
     5 *)
       
     6 
       
     7 signature SHA1_SAMPLES =
       
     8 sig
       
     9   val test: unit -> unit
       
    10 end;
       
    11 
       
    12 structure SHA1_Samples: SHA1_SAMPLES =
       
    13 struct
       
    14 
       
    15 fun check (msg, key) =
       
    16   let val key' = SHA1.rep (SHA1.digest msg) in
       
    17     if key = key' then ()
       
    18     else
       
    19       raise Fail ("SHA1 library integrity test failed on " ^ quote msg ^ ":\n" ^
       
    20         key ^ " expected, but\n" ^ key' ^ " was found")
       
    21   end;
       
    22 
       
    23 fun test () =
       
    24   List.app check
       
    25    [("", "da39a3ee5e6b4b0d3255bfef95601890afd80709"),
       
    26     ("a", "86f7e437faa5a7fce15d1ddcb9eaeaea377667b8"),
       
    27     ("abc", "a9993e364706816aba3e25717850c26c9cd0d89d"),
       
    28     ("abcdefghijklmnopqrstuvwxyz", "32d10c7b8cf96570ca04ce37f2a19d84240d3a89"),
       
    29     ("The quick brown fox jumps over the lazy dog", "2fd4e1c67a2d28fced849ee1bb76e7391b93eb12"),
       
    30     (replicate_string 100 "\000", "ed4a77d1b56a118938788fc53037759b6c501e3d"),
       
    31     ("a\000b", "4a3dec2d1f8245280855c42db0ee4239f917fdb8"),
       
    32     ("\000\001", "3f29546453678b855931c174a97d6c0894b8f546")];
       
    33 
       
    34 val _ = test ();
       
    35 
       
    36 end;