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