1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170
|
{-# LANGUAGE OverloadedStrings, Safe #-}
module VectorsUMAC
( umacTestVectors
) where
import HexUtils
import qualified Data.ByteString as B
-- repeat chunks of s until filled length bytes
repString :: Int -> B.ByteString -> Int -> [B.ByteString]
repString len s n = if len > B.length s then s:let l' = len - B.length s in l' `seq` repString l' s n else [B.take len s]
-- [(key, nonce, message-chunks, [(umac32, umac64, umac128)])]
-- umac96 is truncated umac128
umacTestVectors :: [(B.ByteString, Maybe B.ByteString, Int -> [B.ByteString], [(String, String, String)])]
umacTestVectors =
-- /* From RFC 4418 (except that it lacks the last 32 bits of 128-bit tags) */
[ ("abcdefghijklmnop", Just "bcdefghi", repString 0 "",
[ ("113145FB", "6E155FAD26900BE1", "32fedb100c79ad58f07ff7643cc60465")
])
, ("abcdefghijklmnop", Just "bcdefghi", repString 3 "a",
[ ("3B91D102", "44B5CB542F220104", "185e4fe905cba7bd85e4c2dc3d117d8d")
])
, ("abcdefghijklmnop", Just "bcdefghi", repString (2^(10::Int)) "a",
[ ("599B350B", "26BF2F5D60118BD9", "7a54abe04af82d60fb298c3cbd195bcb")
])
, ("abcdefghijklmnop", Just "bcdefghi", repString (2^(15::Int)) "aaaaaaaa",
[ ("58DCF532", "27F8EF643B0D118D", "7b136bd911e4b734286ef2be501f2c3c")
])
, ("abcdefghijklmnop", Just "bcdefghi", repString (2^(20::Int)) "aaaaaaaa",
[ ("DB6364D1", "A4477E87E9F55853", "f8acfa3ac31cfeea047f7b115b03bef5")
])
-- /* Needs POLY128 */
-- /* For the 'a' * 2^25 testcase, see errata http://fastcrypto.org/umac/rfc4418.errata.txt */
{- , ("abcdefghijklmnop", Just "bcdefghi", repString (2^(25::Int)) "aaaaaaaa",
[ ("85EE5CAE", "FACA46F856E9B45F", "a621c2457c0012e64f3fdae9e7e1870c")
]) -}
, ("abcdefghijklmnop", Just "bcdefghi", repString 3 "abc",
[ ("ABF3A3A0", "D4D7B9F6BD4FBFCF", "883c3d4b97a61976ffcf232308cba5a5")
])
, ("abcdefghijklmnop", Just "bcdefghi", repString 1500 "abc",
[ ("ABEB3C8B", "D4CF26DDEFD5C01A", "8824a260c53c66a36c9260a62cb83aa1")
])
, ("abcdefghijklmnop", Nothing, const ["zero"],
[ ("a0e94011", "a0e940111c9c2cd5", "a0e940111c9c2cd5fa59090e3ac2061f")
, ("8c6fea51", "6d8971434be8ee41", "cbbf18b799fd0f4afb9216e52a89f247")
, ("6d897143", "c9c9aef87e2be502", "c9c9aef87e2be50237716af8e24f8959")
, ("db1b28c5", "a0a112b593656107", "d6e96ef461f54d1c85aa66cbd76ca336")
, ("a75e23b7", "a75e23b7d419e03a", "a75e23b7d419e03a02d55ebf1ba62824")
, ("44ea26be", "950526f26a8cc07a", "2e63031d182a59b84f148d9a91de70a3")
])
, ("abcdefghijklmnop", Just "a", const ["nonce-a"],
[ ("81b4ac24", "b7e8aad0da6e7f99", "d7604bffb5e368da5fe564da0068d2cc")
, ("b7e8aad0", "138814c6a03bdadf", "138814c6a03bdadff7f1666e1bd881aa")
, ("f70246fe", "fb77dd1cd4c7074f", "86a016d9e67957c8ab5ebb78a673e4e9")
, ("0595f0bf", "0595f0bf8585c7e2", "0595f0bf8585c7e28dfab00598d4e612")
, ("a8e9fe85", "817c0b7757cb60f7", "3266ec16a9d85b4f0dc74ec8272238a9")
])
, ("abcdefghijklmnop", Just $ hs "beafcafe", const ["nonce-beaf-cafe"],
[ ("f19d9dc1", "9e878413aa079032", "9e878413aa0790329604f3b6ae980e58")
, ("4604a56a", "9cfd7af0bb107748", "f2b2dd5dab08bb3bc5e9a83e1b4ab2e7")
, ("4ba9420e", "4ba9420e55b6ba13", "4ba9420e55b6ba137d03443f6ee01734")
, ("da86ff71", "77facd797b686e24", "2721ca2e1bcda53a54ae65e0da139c0d")
, ("77facd79", "9000c0de4f5f7236", "9000c0de4f5f7236b81ae1a52e78a821")
])
-- /* Tests exercising various sizes of nonce and data: All nonce
-- lengths from 1 to 16 bytes. Data sizes chosen for testing for
-- various off-by-one errors,
-- 0, 1, 2, 3, 4,
-- 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027,
-- 2046, 2047, 2048, 2049, 2050
-- 16777212, 16777213, 16777214, 16777215, 16777216, 16777217,
-- 16778239, 16778240, 16778241, 16778242, 16778243, 16778244
-- */
, ("abcdefghijklmnop", Just "b", repString 0 "defdefdefdefdef",
[ ("3a58486b", "9e38f67da91a08d9", "9e38f67da91a08d9c980f4db4089c877")
])
, ("abcdefghijklmnop", Just "bc", repString 1 "defdefdefdefdef",
[ ("d86b1512", "fb0e207971b8e66a", "ef406c2ec70d0222f59e860eabb79ed0")
])
, ("abcdefghijklmnop", Just "bcd", repString 2 "defdefdefdefdef",
[ ("1ae6e02d", "1ae6e02d73aa9ab2", "1ae6e02d73aa9ab2a27fb89e014dc07b")
])
, ("abcdefghijklmnop", Just "bcde", repString 3 "defdefdefdefdef",
[ ("e8c1eb59", "c81cf22342e84302", "82626d0d575e01038e5e2cc6408216f5")
])
, ("abcdefghijklmnop", Just "bcdef", repString 4 "defdefdefdefdef",
[ ("8950f0d3", "aba003e7bd673cc3", "aba003e7bd673cc368ba8513cecf2e7c")
])
, ("abcdefghijklmnop", Just "bcdefg", repString 1020 "defdefdefdefdef",
[ ("7412167c", "f98828a161bb4ae3", "d8b4811f747d588d7a913360960de7cf")
])
, ("abcdefghijklmnop", Just "bcdefgh", repString 1021 "defdefdefdefdef",
[ ("2d54936b", "2d54936be5bff72d", "2d54936be5bff72d2e1052361163b474")
])
, ("abcdefghijklmnop", Just "bcdefghi", repString 1022 "defdefdefdefdef",
[ ("53ca8dd2", "2cee9784556387b3", "700513397f8a210a98938d3e7ac3bd88")
])
, ("abcdefghijklmnop", Just "bcdefghij", repString 1023 "defdefdefdefdef",
[ ("26cc58df", "24ac4284ca371f42", "24ac4284ca371f4280f60bd274633d67")
])
, ("abcdefghijklmnop", Just "bcdefghijk", repString 1024 "defdefdefdefdef",
[ ("3cada45a", "64c6a0fd14615a76", "abc223116cedd2db5af365e641a97539")
])
, ("abcdefghijklmnop", Just "bcdefghijkl", repString 1025 "defdefdefdefdef",
[ ("93251e18", "93251e18e56bbdc4", "93251e18e56bbdc457de556f95c59931")
])
, ("abcdefghijklmnop", Just "bcdefghijklm", repString 1026 "defdefdefdefdef",
[ ("24a4c3ab", "5d98bd8dfaf16352", "c1298672e52386753383a15ed58c0e42")
])
, ("abcdefghijklmnop", Just "bcdefghijklmn", repString 1027 "defdefdefdefdef",
[ ("e7e98945", "5b0557c9fdcf661b", "5b0557c9fdcf661b1758efc603516ebe")
])
, ("abcdefghijklmnop", Just "bcdefghijklmno", repString 2046 "defdefdefdefdef",
[ ("e12ddc9f", "65e85d47447c2277", "16bb5183017826ed47c9995c1e5834f3")
])
, ("abcdefghijklmnop", Just "bcdefghijklmnop", repString 2047 "defdefdefdefdef",
[ ("34d723a6", "34d723a6cb1676d3", "34d723a6cb1676d3547a5064dc5b0a37")
])
, ("abcdefghijklmnop", Just "bcdefghijklmnopq", repString 2048 "defdefdefdefdef",
[ ("21fd8802", "3968d5d0af147884", "84565620def1e3a614d274e87626f215")
])
, ("abcdefghijklmnop", Just "b", repString 2049 "defdefdefdefdef",
[ ("097e5abd", "ad1ee4ab606061c5", "ad1ee4ab606061c55e0d2ecfee59940a")
])
, ("abcdefghijklmnop", Just "bc", repString 2050 "defdefdefdefdef",
[ ("a03a7fe9", "835f4a8242100055", "971106d5f4a5e41dce40a91704cfe1f3")
])
, ("abcdefghijklmnop", Just "bcd", repString 16777212 "defdefdefdefdef",
[ ("7ef41cf3", "7ef41cf351960aaf", "7ef41cf351960aaf729bb19fcee7d8c4")
])
, ("abcdefghijklmnop", Just "bcde", repString 16777213 "defdefdefdefdef",
[ ("8bf81932", "ab250048807ff640", "e15b9f6695c9b441de035e9b10b8ac32")
])
, ("abcdefghijklmnop", Just "bcdef", repString 16777214 "defdefdefdefdef",
[ ("ddb2f0ab", "ff42039fcfe1248e", "ff42039fcfe1248e36c19efed14d7140")
])
, ("abcdefghijklmnop", Just "bcdefg", repString 16777215 "defdefdefdefdef",
[ ("e67ad507", "6be0ebda623d76df", "4adc426477fb64b1ce5afd76d505f048")
])
, ("abcdefghijklmnop", Just "bcdefgh", repString 16777216 "defdefdefdefdef",
[ ("42d8562a", "42d8562a224a9e9a", "42d8562a224a9e9a75c2f85d39462d07")
])
, ("abcdefghijklmnop", Just "bcdefghi", repString 16777217 "defdefdefdefdef",
[ ("486b138d", "374f09dbb0b84b88", "6ba48d669a51ed3195ebc2aa562ee71b")
])
, ("abcdefghijklmnop", Just "bcdefghij", repString 16778239 "defdefdefdefdef",
[ ("850cb2c5", "876ca89ed045777b", "876ca89ed045777bf7efa7934e1758c2")
])
, ("abcdefghijklmnop", Just "bcdefghijk", repString 16778240 "defdefdefdefdef",
[ ("b9fc4f81", "e1974b26fb35f2c6", "2e93c8ca83b97a6b1a21082e2a4c540d")
])
, ("abcdefghijklmnop", Just "bcdefghijkl", repString 16778241 "defdefdefdefdef",
[ ("ffced8f2", "ffced8f2494d85bf", "ffced8f2494d85bf0cb39408ddfe0295")
])
, ("abcdefghijklmnop", Just "bcdefghijklm", repString 16778242 "defdefdefdefdef",
[ ("1c99c5fb", "65a5bbdda3b85368", "f9148022bc6ab64f019e9db83704c17b")
])
, ("abcdefghijklmnop", Just "bcdefghijklmn", repString 16778243 "defdefdefdefdef",
[ ("ec304be9", "50dc9565fbfc4884", " 50dc9565fbfc48844a4be34403804605")
])
, ("abcdefghijklmnop", Just "bcdefghijklmno", repString 16778244 "defdefdefdefdef",
[ ("8034e26f", "04f163b7c2d5d849", "77a26f7387d1dcd39378a3220652cff7")
])
-- /* Test varying the alignment of the buffer eventually passed to _umac_nh and _umac_nh_n. */
-- , ("abcdefghijklmnop", Just "bcdefghijk", repString 1024 "defdefdefdefdef",
-- [ ("3cada45a", "64c6a0fd14615a76", "abc223116cedd2db5af365e641a97539")
-- ])
]
|