1 // SPDX-License-Identifier: GPL-2.0-or-later
2 /* Data for Kerberos library self-testing
3  *
4  * Copyright (C) 2025 Red Hat, Inc. All Rights Reserved.
5  * Written by David Howells (dhowells@redhat.com)
6  */
7 
8 #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
9 
10 #include "internal.h"
11 
12 /*
13  * Pseudo-random function tests.
14  */
15 const struct krb5_prf_test krb5_prf_tests[] = {
16 	/* rfc8009 Appendix A */
17 	{
18 		.etype	= KRB5_ENCTYPE_AES128_CTS_HMAC_SHA256_128,
19 		.name	= "prf",
20 		.key	= "3705D96080C17728A0E800EAB6E0D23C",
21 		.octet	= "74657374",
22 		.prf	= "9D188616F63852FE86915BB840B4A886FF3E6BB0F819B49B893393D393854295",
23 	}, {
24 		.etype	= KRB5_ENCTYPE_AES256_CTS_HMAC_SHA384_192,
25 		.name	= "prf",
26 		.key	= "6D404D37FAF79F9DF0D33568D320669800EB4836472EA8A026D16B7182460C52",
27 		.octet	= "74657374",
28 		.prf	=
29 		"9801F69A368C2BF675E59521E177D9A07F67EFE1CFDE8D3C8D6F6A0256E3B17D"
30 		"B3C1B62AD1B8553360D17367EB1514D2",
31 	},
32 	{/* END */}
33 };
34 
35 /*
36  * Key derivation tests.
37  */
38 const struct krb5_key_test krb5_key_tests[] = {
39 	/* rfc8009 Appendix A */
40 	{
41 		.etype	= KRB5_ENCTYPE_AES128_CTS_HMAC_SHA256_128,
42 		.name	= "key",
43 		.key	= "3705D96080C17728A0E800EAB6E0D23C",
44 		.Kc.use	= 0x00000002,
45 		.Kc.key	= "B31A018A48F54776F403E9A396325DC3",
46 		.Ke.use	= 0x00000002,
47 		.Ke.key	= "9B197DD1E8C5609D6E67C3E37C62C72E",
48 		.Ki.use	= 0x00000002,
49 		.Ki.key	= "9FDA0E56AB2D85E1569A688696C26A6C",
50 	}, {
51 		.etype	= KRB5_ENCTYPE_AES256_CTS_HMAC_SHA384_192,
52 		.name	= "key",
53 		.key	= "6D404D37FAF79F9DF0D33568D320669800EB4836472EA8A026D16B7182460C52",
54 		.Kc.use	= 0x00000002,
55 		.Kc.key	= "EF5718BE86CC84963D8BBB5031E9F5C4BA41F28FAF69E73D",
56 		.Ke.use	= 0x00000002,
57 		.Ke.key	= "56AB22BEE63D82D7BC5227F6773F8EA7A5EB1C825160C38312980C442E5C7E49",
58 		.Ki.use	= 0x00000002,
59 		.Ki.key	= "69B16514E3CD8E56B82010D5C73012B622C4D00FFC23ED1F",
60 	},
61 	/* rfc6803 sec 10 */
62 	{
63 		.etype	= KRB5_ENCTYPE_CAMELLIA128_CTS_CMAC,
64 		.name	= "key",
65 		.key	= "57D0297298FFD9D35DE5A47FB4BDE24B",
66 		.Kc.use	= 0x00000002,
67 		.Kc.key	= "D155775A209D05F02B38D42A389E5A56",
68 		.Ke.use	= 0x00000002,
69 		.Ke.key	= "64DF83F85A532F17577D8C37035796AB",
70 		.Ki.use	= 0x00000002,
71 		.Ki.key	= "3E4FBDF30FB8259C425CB6C96F1F4635",
72 	},
73 	{
74 		.etype	= KRB5_ENCTYPE_CAMELLIA256_CTS_CMAC,
75 		.name	= "key",
76 		.key	= "B9D6828B2056B7BE656D88A123B1FAC68214AC2B727ECF5F69AFE0C4DF2A6D2C",
77 		.Kc.use	= 0x00000002,
78 		.Kc.key	= "E467F9A9552BC7D3155A6220AF9C19220EEED4FF78B0D1E6A1544991461A9E50",
79 		.Ke.use	= 0x00000002,
80 		.Ke.key	= "412AEFC362A7285FC3966C6A5181E7605AE675235B6D549FBFC9AB6630A4C604",
81 		.Ki.use	= 0x00000002,
82 		.Ki.key	= "FA624FA0E523993FA388AEFDC67E67EBCD8C08E8A0246B1D73B0D1DD9FC582B0",
83 	},
84 	{/* END */}
85 };
86 
87 /*
88  * Encryption tests.
89  */
90 const struct krb5_enc_test krb5_enc_tests[] = {
91 	/* rfc8009 Appendix A */
92 	{
93 		.etype	= KRB5_ENCTYPE_AES128_CTS_HMAC_SHA256_128,
94 		.name	= "enc no plain",
95 		.plain	= "",
96 		.conf	= "7E5895EAF2672435BAD817F545A37148",
97 		.Ke	= "9B197DD1E8C5609D6E67C3E37C62C72E",
98 		.Ki	= "9FDA0E56AB2D85E1569A688696C26A6C",
99 		.ct	= "EF85FB890BB8472F4DAB20394DCA781DAD877EDA39D50C870C0D5A0A8E48C718",
100 	}, {
101 		.etype	= KRB5_ENCTYPE_AES128_CTS_HMAC_SHA256_128,
102 		.name	= "enc plain<block",
103 		.plain	= "000102030405",
104 		.conf	= "7BCA285E2FD4130FB55B1A5C83BC5B24",
105 		.Ke	= "9B197DD1E8C5609D6E67C3E37C62C72E",
106 		.Ki	= "9FDA0E56AB2D85E1569A688696C26A6C",
107 		.ct	= "84D7F30754ED987BAB0BF3506BEB09CFB55402CEF7E6877CE99E247E52D16ED4421DFDF8976C",
108 	}, {
109 		.etype	= KRB5_ENCTYPE_AES128_CTS_HMAC_SHA256_128,
110 		.name	= "enc plain==block",
111 		.plain	= "000102030405060708090A0B0C0D0E0F",
112 		.conf	= "56AB21713FF62C0A1457200F6FA9948F",
113 		.Ke	= "9B197DD1E8C5609D6E67C3E37C62C72E",
114 		.Ki	= "9FDA0E56AB2D85E1569A688696C26A6C",
115 		.ct	= "3517D640F50DDC8AD3628722B3569D2AE07493FA8263254080EA65C1008E8FC295FB4852E7D83E1E7C48C37EEBE6B0D3",
116 	}, {
117 		.etype	= KRB5_ENCTYPE_AES128_CTS_HMAC_SHA256_128,
118 		.name	= "enc plain>block",
119 		.plain	= "000102030405060708090A0B0C0D0E0F1011121314",
120 		.conf	= "A7A4E29A4728CE10664FB64E49AD3FAC",
121 		.Ke	= "9B197DD1E8C5609D6E67C3E37C62C72E",
122 		.Ki	= "9FDA0E56AB2D85E1569A688696C26A6C",
123 		.ct	= "720F73B18D9859CD6CCB4346115CD336C70F58EDC0C4437C5573544C31C813BCE1E6D072C186B39A413C2F92CA9B8334A287FFCBFC",
124 	}, {
125 		.etype	= KRB5_ENCTYPE_AES256_CTS_HMAC_SHA384_192,
126 		.name	= "enc no plain",
127 		.plain	= "",
128 		.conf	= "F764E9FA15C276478B2C7D0C4E5F58E4",
129 		.Ke	= "56AB22BEE63D82D7BC5227F6773F8EA7A5EB1C825160C38312980C442E5C7E49",
130 		.Ki	= "69B16514E3CD8E56B82010D5C73012B622C4D00FFC23ED1F",
131 		.ct	= "41F53FA5BFE7026D91FAF9BE959195A058707273A96A40F0A01960621AC612748B9BBFBE7EB4CE3C",
132 	}, {
133 		.etype	= KRB5_ENCTYPE_AES256_CTS_HMAC_SHA384_192,
134 		.name	= "enc plain<block",
135 		.plain	= "000102030405",
136 		.conf	= "B80D3251C1F6471494256FFE712D0B9A",
137 		.Ke	= "56AB22BEE63D82D7BC5227F6773F8EA7A5EB1C825160C38312980C442E5C7E49",
138 		.Ki	= "69B16514E3CD8E56B82010D5C73012B622C4D00FFC23ED1F",
139 		.ct	= "4ED7B37C2BCAC8F74F23C1CF07E62BC7B75FB3F637B9F559C7F664F69EAB7B6092237526EA0D1F61CB20D69D10F2",
140 	}, {
141 		.etype	= KRB5_ENCTYPE_AES256_CTS_HMAC_SHA384_192,
142 		.name	= "enc plain==block",
143 		.plain	= "000102030405060708090A0B0C0D0E0F",
144 		.conf	= "53BF8A0D105265D4E276428624CE5E63",
145 		.Ke	= "56AB22BEE63D82D7BC5227F6773F8EA7A5EB1C825160C38312980C442E5C7E49",
146 		.Ki	= "69B16514E3CD8E56B82010D5C73012B622C4D00FFC23ED1F",
147 		.ct	= "BC47FFEC7998EB91E8115CF8D19DAC4BBBE2E163E87DD37F49BECA92027764F68CF51F14D798C2273F35DF574D1F932E40C4FF255B36A266",
148 	}, {
149 		.etype	= KRB5_ENCTYPE_AES256_CTS_HMAC_SHA384_192,
150 		.name	= "enc plain>block",
151 		.plain	= "000102030405060708090A0B0C0D0E0F1011121314",
152 		.conf	= "763E65367E864F02F55153C7E3B58AF1",
153 		.Ke	= "56AB22BEE63D82D7BC5227F6773F8EA7A5EB1C825160C38312980C442E5C7E49",
154 		.Ki	= "69B16514E3CD8E56B82010D5C73012B622C4D00FFC23ED1F",
155 		.ct	= "40013E2DF58E8751957D2878BCD2D6FE101CCFD556CB1EAE79DB3C3EE86429F2B2A602AC86FEF6ECB647D6295FAE077A1FEB517508D2C16B4192E01F62",
156 	},
157 	/* rfc6803 sec 10 */
158 	{
159 		.etype	= KRB5_ENCTYPE_CAMELLIA128_CTS_CMAC,
160 		.name	= "enc no plain",
161 		.plain	= "",
162 		.conf	= "B69822A19A6B09C0EBC8557D1F1B6C0A",
163 		.K0	= "1DC46A8D763F4F93742BCBA3387576C3",
164 		.usage	= 0,
165 		.ct	= "C466F1871069921EDB7C6FDE244A52DB0BA10EDC197BDB8006658CA3CCCE6EB8",
166 	}, {
167 		.etype	= KRB5_ENCTYPE_CAMELLIA128_CTS_CMAC,
168 		.name	= "enc 1 plain",
169 		.plain	= "'1",
170 		.conf	= "6F2FC3C2A166FD8898967A83DE9596D9",
171 		.K0	= "5027BC231D0F3A9D23333F1CA6FDBE7C",
172 		.usage	= 1,
173 		.ct	= "842D21FD950311C0DD464A3F4BE8D6DA88A56D559C9B47D3F9A85067AF661559B8",
174 	}, {
175 		.etype	= KRB5_ENCTYPE_CAMELLIA128_CTS_CMAC,
176 		.name	= "enc 9 plain",
177 		.plain	= "'9 bytesss",
178 		.conf	= "A5B4A71E077AEEF93C8763C18FDB1F10",
179 		.K0	= "A1BB61E805F9BA6DDE8FDBDDC05CDEA0",
180 		.usage	= 2,
181 		.ct	= "619FF072E36286FF0A28DEB3A352EC0D0EDF5C5160D663C901758CCF9D1ED33D71DB8F23AABF8348A0",
182 	}, {
183 		.etype	= KRB5_ENCTYPE_CAMELLIA128_CTS_CMAC,
184 		.name	= "enc 13 plain",
185 		.plain	= "'13 bytes byte",
186 		.conf	= "19FEE40D810C524B5B22F01874C693DA",
187 		.K0	= "2CA27A5FAF5532244506434E1CEF6676",
188 		.usage	= 3,
189 		.ct	= "B8ECA3167AE6315512E59F98A7C500205E5F63FF3BB389AF1C41A21D640D8615C9ED3FBEB05AB6ACB67689B5EA",
190 	}, {
191 		.etype	= KRB5_ENCTYPE_CAMELLIA128_CTS_CMAC,
192 		.name	= "enc 30 plain",
193 		.plain	= "'30 bytes bytes bytes bytes byt",
194 		.conf	= "CA7A7AB4BE192DABD603506DB19C39E2",
195 		.K0	= "7824F8C16F83FF354C6BF7515B973F43",
196 		.usage	= 4,
197 		.ct	= "A26A3905A4FFD5816B7B1E27380D08090C8EC1F304496E1ABDCD2BDCD1DFFC660989E117A713DDBB57A4146C1587CBA4356665591D2240282F5842B105A5",
198 	}, {
199 		.etype	= KRB5_ENCTYPE_CAMELLIA256_CTS_CMAC,
200 		.name	= "enc no plain",
201 		.plain	= "",
202 		.conf	= "3CBBD2B45917941067F96599BB98926C",
203 		.K0	= "B61C86CC4E5D2757545AD423399FB7031ECAB913CBB900BD7A3C6DD8BF92015B",
204 		.usage	= 0,
205 		.ct	= "03886D03310B47A6D8F06D7B94D1DD837ECCE315EF652AFF620859D94A259266",
206 	}, {
207 		.etype	= KRB5_ENCTYPE_CAMELLIA256_CTS_CMAC,
208 		.name	= "enc 1 plain",
209 		.plain	= "'1",
210 		.conf	= "DEF487FCEBE6DE6346D4DA4521BBA2D2",
211 		.K0	= "1B97FE0A190E2021EB30753E1B6E1E77B0754B1D684610355864104963463833",
212 		.usage	= 1,
213 		.ct	= "2C9C1570133C99BF6A34BC1B0212002FD194338749DB4135497A347CFCD9D18A12",
214 	}, {
215 		.etype	= KRB5_ENCTYPE_CAMELLIA256_CTS_CMAC,
216 		.name	= "enc 9 plain",
217 		.plain	= "'9 bytesss",
218 		.conf	= "AD4FF904D34E555384B14100FC465F88",
219 		.K0	= "32164C5B434D1D1538E4CFD9BE8040FE8C4AC7ACC4B93D3314D2133668147A05",
220 		.usage	= 2,
221 		.ct	= "9C6DE75F812DE7ED0D28B2963557A115640998275B0AF5152709913FF52A2A9C8E63B872F92E64C839",
222 	}, {
223 		.etype	= KRB5_ENCTYPE_CAMELLIA256_CTS_CMAC,
224 		.name	= "enc 13 plain",
225 		.plain	= "'13 bytes byte",
226 		.conf	= "CF9BCA6DF1144E0C0AF9B8F34C90D514",
227 		.K0	= "B038B132CD8E06612267FAB7170066D88AECCBA0B744BFC60DC89BCA182D0715",
228 		.usage	= 3,
229 		.ct	= "EEEC85A9813CDC536772AB9B42DEFC5706F726E975DDE05A87EB5406EA324CA185C9986B42AABE794B84821BEE",
230 	}, {
231 		.etype	= KRB5_ENCTYPE_CAMELLIA256_CTS_CMAC,
232 		.name	= "enc 30 plain",
233 		.plain	= "'30 bytes bytes bytes bytes byt",
234 		.conf	= "644DEF38DA35007275878D216855E228",
235 		.K0	= "CCFCD349BF4C6677E86E4B02B8EAB924A546AC731CF9BF6989B996E7D6BFBBA7",
236 		.usage	= 4,
237 		.ct	= "0E44680985855F2D1F1812529CA83BFD8E349DE6FD9ADA0BAAA048D68E265FEBF34AD1255A344999AD37146887A6C6845731AC7F46376A0504CD06571474",
238 	},
239 	{/* END */}
240 };
241 
242 /*
243  * Checksum generation tests.
244  */
245 const struct krb5_mic_test krb5_mic_tests[] = {
246 	/* rfc8009 Appendix A */
247 	{
248 		.etype	= KRB5_ENCTYPE_AES128_CTS_HMAC_SHA256_128,
249 		.name	= "mic",
250 		.plain	= "000102030405060708090A0B0C0D0E0F1011121314",
251 		.Kc	= "B31A018A48F54776F403E9A396325DC3",
252 		.mic	= "D78367186643D67B411CBA9139FC1DEE",
253 	}, {
254 		.etype	= KRB5_ENCTYPE_AES256_CTS_HMAC_SHA384_192,
255 		.name	= "mic",
256 		.plain	= "000102030405060708090A0B0C0D0E0F1011121314",
257 		.Kc	= "EF5718BE86CC84963D8BBB5031E9F5C4BA41F28FAF69E73D",
258 		.mic	= "45EE791567EEFCA37F4AC1E0222DE80D43C3BFA06699672A",
259 	},
260 	/* rfc6803 sec 10 */
261 	{
262 		.etype	= KRB5_ENCTYPE_CAMELLIA128_CTS_CMAC,
263 		.name	= "mic abc",
264 		.plain	= "'abcdefghijk",
265 		.K0	= "1DC46A8D763F4F93742BCBA3387576C3",
266 		.usage	= 7,
267 		.mic	= "1178E6C5C47A8C1AE0C4B9C7D4EB7B6B",
268 	}, {
269 		.etype	= KRB5_ENCTYPE_CAMELLIA128_CTS_CMAC,
270 		.name	= "mic ABC",
271 		.plain	= "'ABCDEFGHIJKLMNOPQRSTUVWXYZ",
272 		.K0	= "5027BC231D0F3A9D23333F1CA6FDBE7C",
273 		.usage	= 8,
274 		.mic	= "D1B34F7004A731F23A0C00BF6C3F753A",
275 	}, {
276 		.etype	= KRB5_ENCTYPE_CAMELLIA256_CTS_CMAC,
277 		.name	= "mic 123",
278 		.plain	= "'123456789",
279 		.K0	= "B61C86CC4E5D2757545AD423399FB7031ECAB913CBB900BD7A3C6DD8BF92015B",
280 		.usage	= 9,
281 		.mic	= "87A12CFD2B96214810F01C826E7744B1",
282 	}, {
283 		.etype	= KRB5_ENCTYPE_CAMELLIA256_CTS_CMAC,
284 		.name	= "mic !@#",
285 		.plain	= "'!@#$%^&*()!@#$%^&*()!@#$%^&*()",
286 		.K0	= "32164C5B434D1D1538E4CFD9BE8040FE8C4AC7ACC4B93D3314D2133668147A05",
287 		.usage	= 10,
288 		.mic	= "3FA0B42355E52B189187294AA252AB64",
289 	},
290 	{/* END */}
291 };
292