File: VectorsUMAC.hs

package info (click to toggle)
haskell-nettle 0.2.0-3
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 1,780 kB
  • ctags: 58
  • sloc: haskell: 3,233; ansic: 249; makefile: 3
file content (170 lines) | stat: -rw-r--r-- 8,639 bytes parent folder | download
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")
--		])
	]