(use srfi-1 srfi-4 test siphash numbers) (define key '#u8(0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15)) (define outputs '#("726fdb47dd0e0e31" "74f839c593dc67fd" "0d6c8009d9a94f5a" "85676696d7fb7e2d" "cf2794e0277187b7" "18765564cd99a68d" "cbc9466e58fee3ce" "ab0200f58b01d137" "93f5f5799a932462" "9e0082df0ba9e4b0" "7a5dbbc594ddb9f3" "f4b32f46226bada7" "751e8fbc860ee5fb" "14ea5627c0843d90" "f723ca908e7af2ee" "a129ca6149be45e5" "3f2acc7f57c29bdb" "699ae9f52cbe4794" "4bc1b3f0968dd39c" "bb6dc91da77961bd" "bed65cf21aa2ee98" "d0f2cbb02e3b67c7" "93536795e3a33e88" "a80c038ccd5ccec8" "b8ad50c6f649af94" "bce192de8a85b8ea" "17d835b85bbb15f3" "2f2e6163076bcfad" "de4daaaca71dc9a5" "a6a2506687956571" "ad87a3535c49ef28" "32d892fad841c342" "7127512f72f27cce" "a7f32346f95978e3" "12e0b01abb051238" "15e034d40fa197ae" "314dffbe0815a3b4" "027990f029623981" "cadcd4e59ef40c4d" "9abfd8766a33735c" "0e3ea96b5304a7d0" "ad0c42d6fc585992" "187306c89bc215a9" "d4a60abcf3792b95" "f935451de4f21df2" "a9538f0419755787" "db9acddff56ca510" "d06c98cd5c0975eb" "e612a3cb9ecba951" "c766e62cfcadaf96" "ee64435a9752fe72" "a192d576b245165a" "0a8787bf8ecb74b2" "81b3e73d20b49b6f" "7fa8220ba3b2ecea" "245731c13ca42499" "b78dbfaf3a8d83bd" "ea1ad565322a1a0b" "60e61c23a3795013" "6606d7e446282b93" "6ca4ecb15c5f91e1" "9f626da15c9625f3" "e51b38608ef25f57" "958a324ceb064572")) (test-begin "siphash") (test-assert "(make-siphash c d)" (procedure? (make-siphash 1 2))) (test-assert "(siphash-c-d key)" (procedure? ((make-siphash 1 2) key))) (test-assert "(siphash-c-d key message)" (integer? ((make-siphash 1 2) key key))) (test-error "(siphash-2-4 short-key)" (siphash-2-4 (u8vector 0 1 2 3 4 5 6 7))) (test "(siphash-2-4 string)" 3144613055062689994 (siphash-2-4 key "a")) (test "(siphash-2-4 bytevector)" 3144613055062689994 (siphash-2-4 key (u8vector 97))) (do ((i 0 (+ i 1))) ((= i 64)) (let ((expected (vector-ref outputs i))) (test (format "(siphash-2-4 key <~s bytes>) => ~a" i expected) (string->number expected 16) (siphash-2-4 key (list->u8vector (iota i)))))) (test-end "siphash") (test-exit)