1use binius_field::{AESTowerField32b, BinaryField32b};
3
4pub const NUM_ROUNDS: usize = 8;
6
7pub const AFFINE_FWD_AES: [AESTowerField32b; 32] = [
8 AESTowerField32b::new(0x2d08efeb),
9 AESTowerField32b::new(0xf36ccd71),
10 AESTowerField32b::new(0x0195e6c5),
11 AESTowerField32b::new(0x65904c9f),
12 AESTowerField32b::new(0x18b119fe),
13 AESTowerField32b::new(0x72ca1f14),
14 AESTowerField32b::new(0xb14b611c),
15 AESTowerField32b::new(0x3a669717),
16 AESTowerField32b::new(0x4e9348de),
17 AESTowerField32b::new(0x408cb48b),
18 AESTowerField32b::new(0x2403c51d),
19 AESTowerField32b::new(0xe7bf2994),
20 AESTowerField32b::new(0xcfd293df),
21 AESTowerField32b::new(0x2e5f7f42),
22 AESTowerField32b::new(0x42b307d4),
23 AESTowerField32b::new(0x64a7e57a),
24 AESTowerField32b::new(0x421b9978),
25 AESTowerField32b::new(0x7b118f37),
26 AESTowerField32b::new(0x30aa893a),
27 AESTowerField32b::new(0x3e021935),
28 AESTowerField32b::new(0xf5ec09d5),
29 AESTowerField32b::new(0xc18a0f95),
30 AESTowerField32b::new(0x4fc4e3c3),
31 AESTowerField32b::new(0x904b4c02),
32 AESTowerField32b::new(0xd15d6f2e),
33 AESTowerField32b::new(0x8d185c7c),
34 AESTowerField32b::new(0x504c17e3),
35 AESTowerField32b::new(0x37e777c2),
36 AESTowerField32b::new(0x30b10e92),
37 AESTowerField32b::new(0x6e1a825a),
38 AESTowerField32b::new(0x6ea14c5c),
39 AESTowerField32b::new(0x5a1b041f),
40];
41
42pub const AFFINE_FWD_CONST_AES: AESTowerField32b = AESTowerField32b::new(0x2c285aff);
43
44pub const AFFINE_INV_AES: [AESTowerField32b; 32] = [
45 AESTowerField32b::new(0x1af256ab),
46 AESTowerField32b::new(0xb00a31c8),
47 AESTowerField32b::new(0xd0a45bad),
48 AESTowerField32b::new(0x28ba0e84),
49 AESTowerField32b::new(0x981363ab),
50 AESTowerField32b::new(0x52a94dcf),
51 AESTowerField32b::new(0x812f70aa),
52 AESTowerField32b::new(0x41a33e37),
53 AESTowerField32b::new(0x08eacb1b),
54 AESTowerField32b::new(0x8c73b796),
55 AESTowerField32b::new(0x0844bf00),
56 AESTowerField32b::new(0x906fec10),
57 AESTowerField32b::new(0xaaeee482),
58 AESTowerField32b::new(0xe2ed2212),
59 AESTowerField32b::new(0x57f4ea4e),
60 AESTowerField32b::new(0x6cf3b0cb),
61 AESTowerField32b::new(0x0bd65b47),
62 AESTowerField32b::new(0xfd84d24c),
63 AESTowerField32b::new(0x5e786c25),
64 AESTowerField32b::new(0xdd3b0c42),
65 AESTowerField32b::new(0xe0f38b73),
66 AESTowerField32b::new(0x79593770),
67 AESTowerField32b::new(0xd7e66f93),
68 AESTowerField32b::new(0x9d32ed2c),
69 AESTowerField32b::new(0x7f6862a3),
70 AESTowerField32b::new(0x07083cf2),
71 AESTowerField32b::new(0x6ac71c0c),
72 AESTowerField32b::new(0xc06890e3),
73 AESTowerField32b::new(0xbf6f5d0a),
74 AESTowerField32b::new(0xddc3dfb0),
75 AESTowerField32b::new(0xf12411c0),
76 AESTowerField32b::new(0x3cb53f46),
77];
78
79pub const AFFINE_INV_CONST_AES: AESTowerField32b = AESTowerField32b::new(0x6ad86f94);
80
81#[rustfmt::skip]
82pub const ROUND_KEYS: [[BinaryField32b; 24]; 2 * NUM_ROUNDS + 1] = [
83 [
84 BinaryField32b::new(0x545e66a7), BinaryField32b::new(0x073fdd58), BinaryField32b::new(0x84362677), BinaryField32b::new(0x95fe8565),
85 BinaryField32b::new(0x06269cd8), BinaryField32b::new(0x9c17909e), BinaryField32b::new(0xf1f0adee), BinaryField32b::new(0x2694c698),
86 BinaryField32b::new(0x94b2788f), BinaryField32b::new(0x5eac14ad), BinaryField32b::new(0x21677a78), BinaryField32b::new(0x5755730b),
87 BinaryField32b::new(0x37cef9cf), BinaryField32b::new(0x2fb31ffe), BinaryField32b::new(0xfc0082ec), BinaryField32b::new(0x609c12f0),
88 BinaryField32b::new(0x102769ee), BinaryField32b::new(0x4732860d), BinaryField32b::new(0xf97935e0), BinaryField32b::new(0x36e77c02),
89 BinaryField32b::new(0xba9e70df), BinaryField32b::new(0x67b701d7), BinaryField32b::new(0x829d77a4), BinaryField32b::new(0xf6ec454d),
90 ],
91 [
92 BinaryField32b::new(0x73fa03e1), BinaryField32b::new(0x2551a651), BinaryField32b::new(0x0541031f), BinaryField32b::new(0xec1d59dc),
93 BinaryField32b::new(0x780f0b43), BinaryField32b::new(0x04843f97), BinaryField32b::new(0xd379e20b), BinaryField32b::new(0xbe4d1f58),
94 BinaryField32b::new(0xe4c2f8bb), BinaryField32b::new(0xf29aee17), BinaryField32b::new(0x228e51f2), BinaryField32b::new(0x840ee72b),
95 BinaryField32b::new(0x0cb3b70e), BinaryField32b::new(0xbacc914a), BinaryField32b::new(0x490bfa7e), BinaryField32b::new(0xc2c3018e),
96 BinaryField32b::new(0xf6d13bd2), BinaryField32b::new(0x6a4d1fe1), BinaryField32b::new(0x4c2bc742), BinaryField32b::new(0x4508cb46),
97 BinaryField32b::new(0xed63a2f1), BinaryField32b::new(0x1802f859), BinaryField32b::new(0xa00483b5), BinaryField32b::new(0x56e12e78),
98 ],
99 [
100 BinaryField32b::new(0xbace7a4a), BinaryField32b::new(0xc3a71400), BinaryField32b::new(0x5a29b316), BinaryField32b::new(0xeedc8d26),
101 BinaryField32b::new(0x51c14d7e), BinaryField32b::new(0x2add9be8), BinaryField32b::new(0xfec386f3), BinaryField32b::new(0x630765dc),
102 BinaryField32b::new(0xaef6c21b), BinaryField32b::new(0x8c98fc1a), BinaryField32b::new(0x3f9c4f9d), BinaryField32b::new(0x399e7231),
103 BinaryField32b::new(0xba238b04), BinaryField32b::new(0x787d67ec), BinaryField32b::new(0x313ad8af), BinaryField32b::new(0xdd622ac3),
104 BinaryField32b::new(0xe0a8d9b8), BinaryField32b::new(0xaa0e6306), BinaryField32b::new(0x29864574), BinaryField32b::new(0x67ee41da),
105 BinaryField32b::new(0x5502278d), BinaryField32b::new(0xa92e20b1), BinaryField32b::new(0x0fdc5328), BinaryField32b::new(0x74dbee7a),
106 ],
107 [
108 BinaryField32b::new(0x8bd2f341), BinaryField32b::new(0x59dc2758), BinaryField32b::new(0x5146c720), BinaryField32b::new(0x9df43021),
109 BinaryField32b::new(0x0d1c49ea), BinaryField32b::new(0x81d4b0a5), BinaryField32b::new(0xdbfae4d1), BinaryField32b::new(0xc3153118),
110 BinaryField32b::new(0x8a3aec81), BinaryField32b::new(0xeacd8854), BinaryField32b::new(0xdd4b2576), BinaryField32b::new(0x7dd5cee9),
111 BinaryField32b::new(0x5e9e77b7), BinaryField32b::new(0x6b6efd8d), BinaryField32b::new(0xf11db400), BinaryField32b::new(0x0e6258b7),
112 BinaryField32b::new(0x37b3b6e3), BinaryField32b::new(0xed884c61), BinaryField32b::new(0xb948717c), BinaryField32b::new(0x3d7554cf),
113 BinaryField32b::new(0x42419311), BinaryField32b::new(0x422d11d3), BinaryField32b::new(0x5392b2e7), BinaryField32b::new(0x79c1591d),
114 ],
115 [
116 BinaryField32b::new(0x27df48ae), BinaryField32b::new(0x948bc10e), BinaryField32b::new(0xcb079dc1), BinaryField32b::new(0xed183a37),
117 BinaryField32b::new(0x81dcc076), BinaryField32b::new(0x24cb0490), BinaryField32b::new(0x52d69fb8), BinaryField32b::new(0x8b576666),
118 BinaryField32b::new(0x7499fe4d), BinaryField32b::new(0x8f879e34), BinaryField32b::new(0xcb11780a), BinaryField32b::new(0x5e876b29),
119 BinaryField32b::new(0xb72d96ab), BinaryField32b::new(0xac28e621), BinaryField32b::new(0x18aeca7e), BinaryField32b::new(0xf3d30baf),
120 BinaryField32b::new(0xc7fca53f), BinaryField32b::new(0xf7b3281a), BinaryField32b::new(0xdaf5559f), BinaryField32b::new(0x27aca0b3),
121 BinaryField32b::new(0x9515d3ee), BinaryField32b::new(0xa39fd2e1), BinaryField32b::new(0xf61b52c2), BinaryField32b::new(0x83ec5a0f),
122 ],
123 [
124 BinaryField32b::new(0x89841f23), BinaryField32b::new(0x8bd0c3e1), BinaryField32b::new(0xde2dd62b), BinaryField32b::new(0x37799416),
125 BinaryField32b::new(0x558834c7), BinaryField32b::new(0x939df560), BinaryField32b::new(0xb1a9f457), BinaryField32b::new(0xcb24dadb),
126 BinaryField32b::new(0x4f702a2a), BinaryField32b::new(0x65ad5822), BinaryField32b::new(0x7ecf577d), BinaryField32b::new(0x728b4092),
127 BinaryField32b::new(0x89e4fa7d), BinaryField32b::new(0x10cd7556), BinaryField32b::new(0x1de77ab7), BinaryField32b::new(0x2374c530),
128 BinaryField32b::new(0x95b289d4), BinaryField32b::new(0xa6ad3862), BinaryField32b::new(0xc6b1a233), BinaryField32b::new(0xac501639),
129 BinaryField32b::new(0x3f6072a3), BinaryField32b::new(0xf8ae7cc4), BinaryField32b::new(0x622f4cf3), BinaryField32b::new(0xf7ccf75b),
130 ],
131 [
132 BinaryField32b::new(0xaedf6aac), BinaryField32b::new(0xd64356b2), BinaryField32b::new(0x1cbba169), BinaryField32b::new(0x688602ae),
133 BinaryField32b::new(0x6231b358), BinaryField32b::new(0x1fba8b86), BinaryField32b::new(0xf7b83f1c), BinaryField32b::new(0x465c4050),
134 BinaryField32b::new(0x4403e74c), BinaryField32b::new(0x5f51c2f3), BinaryField32b::new(0x1b114a4d), BinaryField32b::new(0x8f32bf48),
135 BinaryField32b::new(0x87990cfc), BinaryField32b::new(0x71b55cb1), BinaryField32b::new(0x73083164), BinaryField32b::new(0x2fbd58ae),
136 BinaryField32b::new(0x59bbcbbf), BinaryField32b::new(0xb0dc1eba), BinaryField32b::new(0xf2f169ff), BinaryField32b::new(0x54cc93e8),
137 BinaryField32b::new(0x975cfc83), BinaryField32b::new(0xbefc67cf), BinaryField32b::new(0xb841429b), BinaryField32b::new(0xff127d64),
138 ],
139 [
140 BinaryField32b::new(0xd6561783), BinaryField32b::new(0x88153c99), BinaryField32b::new(0x1a04e141), BinaryField32b::new(0x62631076),
141 BinaryField32b::new(0xb20b52a2), BinaryField32b::new(0x1df18264), BinaryField32b::new(0x05176f17), BinaryField32b::new(0x505b2752),
142 BinaryField32b::new(0x914a71aa), BinaryField32b::new(0x1b6cf96d), BinaryField32b::new(0x5a8b3b59), BinaryField32b::new(0x3ab885cc),
143 BinaryField32b::new(0xed662f24), BinaryField32b::new(0xa859f626), BinaryField32b::new(0xd91136bb), BinaryField32b::new(0x6da2d95b),
144 BinaryField32b::new(0x043fd679), BinaryField32b::new(0xb9e685e8), BinaryField32b::new(0xdf796fa5), BinaryField32b::new(0x53fc28a3),
145 BinaryField32b::new(0x0c15dc77), BinaryField32b::new(0x079255d2), BinaryField32b::new(0x3373a2a0), BinaryField32b::new(0xfc6b012e),
146 ],
147 [
148 BinaryField32b::new(0xb3359ff0), BinaryField32b::new(0xa471acdc), BinaryField32b::new(0x6ad3e18a), BinaryField32b::new(0x4f012f65),
149 BinaryField32b::new(0xebd4392f), BinaryField32b::new(0x25d3af23), BinaryField32b::new(0x7a68469c), BinaryField32b::new(0xd479ea57),
150 BinaryField32b::new(0xb55b6450), BinaryField32b::new(0x86ef0a15), BinaryField32b::new(0xeefd412f), BinaryField32b::new(0xc8e98f30),
151 BinaryField32b::new(0x61e0c12d), BinaryField32b::new(0x36c4680c), BinaryField32b::new(0xe818ab96), BinaryField32b::new(0xfcb765f2),
152 BinaryField32b::new(0xcbb47fea), BinaryField32b::new(0xc9e202a8), BinaryField32b::new(0xc762caec), BinaryField32b::new(0x366f08fd),
153 BinaryField32b::new(0x5e2f3a19), BinaryField32b::new(0x242c8397), BinaryField32b::new(0x638a0042), BinaryField32b::new(0x63f1c9c5),
154 ],
155 [
156 BinaryField32b::new(0x4e28a23c), BinaryField32b::new(0xdbe6f0db), BinaryField32b::new(0x9cf4faeb), BinaryField32b::new(0x2fde2616),
157 BinaryField32b::new(0x22dedea1), BinaryField32b::new(0x08ef118e), BinaryField32b::new(0xd7f16ae2), BinaryField32b::new(0xa13b30a8),
158 BinaryField32b::new(0x2ceb58c1), BinaryField32b::new(0xca587d86), BinaryField32b::new(0xf6d54fcd), BinaryField32b::new(0x9cd9f3f5),
159 BinaryField32b::new(0x9b0f94a2), BinaryField32b::new(0xdede0863), BinaryField32b::new(0xa608eb2d), BinaryField32b::new(0x4d3c4469),
160 BinaryField32b::new(0x53784235), BinaryField32b::new(0x4cf6aa1e), BinaryField32b::new(0xcb6ec0d5), BinaryField32b::new(0xf334b49e),
161 BinaryField32b::new(0xe5f7a67a), BinaryField32b::new(0x989658a2), BinaryField32b::new(0xa1a672ca), BinaryField32b::new(0x6fb7eced),
162 ],
163 [
164 BinaryField32b::new(0x2bbdf7b8), BinaryField32b::new(0xa8626256), BinaryField32b::new(0xd95bf688), BinaryField32b::new(0x43245a87),
165 BinaryField32b::new(0xc14af030), BinaryField32b::new(0x28e5933a), BinaryField32b::new(0x3aeb3e0d), BinaryField32b::new(0x169f7dea),
166 BinaryField32b::new(0x4cd4d1e4), BinaryField32b::new(0x8db556b5), BinaryField32b::new(0xdd1a49ea), BinaryField32b::new(0xe64eff5d),
167 BinaryField32b::new(0x8bd56648), BinaryField32b::new(0x2c3422be), BinaryField32b::new(0x5cffb53f), BinaryField32b::new(0x6b7aaa6e),
168 BinaryField32b::new(0xc2a8d1af), BinaryField32b::new(0x7e79bed4), BinaryField32b::new(0xd0b08e51), BinaryField32b::new(0x1861ba54),
169 BinaryField32b::new(0xb7d3c6b4), BinaryField32b::new(0x6a9bd7ca), BinaryField32b::new(0x129d3aa5), BinaryField32b::new(0x809e9413),
170 ],
171 [
172 BinaryField32b::new(0x52538d7d), BinaryField32b::new(0xdd441420), BinaryField32b::new(0x38a2e2d5), BinaryField32b::new(0xccd05f31),
173 BinaryField32b::new(0x2a49f3a6), BinaryField32b::new(0xe533cc9b), BinaryField32b::new(0xa18de92e), BinaryField32b::new(0x495f684a),
174 BinaryField32b::new(0x0028e3ae), BinaryField32b::new(0xd4072861), BinaryField32b::new(0x370fd7a3), BinaryField32b::new(0x728224bc),
175 BinaryField32b::new(0xa8b6b3d7), BinaryField32b::new(0xdada7046), BinaryField32b::new(0xea9e71df), BinaryField32b::new(0x914f7d53),
176 BinaryField32b::new(0x9b796ac9), BinaryField32b::new(0xe7f61a69), BinaryField32b::new(0x67a68f71), BinaryField32b::new(0x7eb15ce6),
177 BinaryField32b::new(0xeb9af9e1), BinaryField32b::new(0xa75f54b1), BinaryField32b::new(0x59210427), BinaryField32b::new(0x75093378),
178 ],
179 [
180 BinaryField32b::new(0x27866fea), BinaryField32b::new(0x3bd84dca), BinaryField32b::new(0x681d1d3a), BinaryField32b::new(0xe7fb7496),
181 BinaryField32b::new(0x86fd9bf8), BinaryField32b::new(0xc1f28786), BinaryField32b::new(0xb3f17a06), BinaryField32b::new(0x60c43dbe),
182 BinaryField32b::new(0x16fee1be), BinaryField32b::new(0xa8407554), BinaryField32b::new(0xca909e3b), BinaryField32b::new(0xb1fc461c),
183 BinaryField32b::new(0xd84d663e), BinaryField32b::new(0x2e7d669b), BinaryField32b::new(0x5b5b5a56), BinaryField32b::new(0x6c53d090),
184 BinaryField32b::new(0x236707a6), BinaryField32b::new(0x7f1f4e97), BinaryField32b::new(0xe95b23f3), BinaryField32b::new(0x8cd1e3dd),
185 BinaryField32b::new(0x928f3212), BinaryField32b::new(0x9c7c1c20), BinaryField32b::new(0x00eeebe3), BinaryField32b::new(0xc0572f52),
186 ],
187 [
188 BinaryField32b::new(0xd1504060), BinaryField32b::new(0x005d8a96), BinaryField32b::new(0x058e317a), BinaryField32b::new(0x30d9d3c6),
189 BinaryField32b::new(0xa585af56), BinaryField32b::new(0x084c5111), BinaryField32b::new(0x498da85e), BinaryField32b::new(0x0149987d),
190 BinaryField32b::new(0xe130153b), BinaryField32b::new(0x817cc725), BinaryField32b::new(0x75f726b1), BinaryField32b::new(0x23941339),
191 BinaryField32b::new(0x1f26e9dd), BinaryField32b::new(0xdb013723), BinaryField32b::new(0x81f36069), BinaryField32b::new(0xe4167ba1),
192 BinaryField32b::new(0x50d59f82), BinaryField32b::new(0xbf011350), BinaryField32b::new(0x3ae71f42), BinaryField32b::new(0x9966d041),
193 BinaryField32b::new(0xdbe09577), BinaryField32b::new(0xa830b8f0), BinaryField32b::new(0x0c018c2d), BinaryField32b::new(0x08beab4f),
194 ],
195 [
196 BinaryField32b::new(0x20898252), BinaryField32b::new(0xac8aa337), BinaryField32b::new(0x5c5bbcad), BinaryField32b::new(0x2fa58f41),
197 BinaryField32b::new(0xf2446068), BinaryField32b::new(0xfff46a79), BinaryField32b::new(0x0b1980d8), BinaryField32b::new(0x01b14c53),
198 BinaryField32b::new(0x4e432072), BinaryField32b::new(0xfc610a31), BinaryField32b::new(0x80ba5531), BinaryField32b::new(0xc14507a5),
199 BinaryField32b::new(0x2433c5d2), BinaryField32b::new(0x8a461cf3), BinaryField32b::new(0x187849cd), BinaryField32b::new(0x3d4f51e8),
200 BinaryField32b::new(0x3d9cd125), BinaryField32b::new(0xe15e09ca), BinaryField32b::new(0x8c6287c6), BinaryField32b::new(0xfa0ec2f4),
201 BinaryField32b::new(0x65435f29), BinaryField32b::new(0xd33a4f3d), BinaryField32b::new(0xd61bb963), BinaryField32b::new(0x991005f9),
202 ],
203 [
204 BinaryField32b::new(0x00d80bd4), BinaryField32b::new(0x3d8b3d56), BinaryField32b::new(0xcc18a7a9), BinaryField32b::new(0x0105e9bb),
205 BinaryField32b::new(0x71f0e736), BinaryField32b::new(0x4cc71fa4), BinaryField32b::new(0x1a2ec96b), BinaryField32b::new(0xe1b8b093),
206 BinaryField32b::new(0x329232ab), BinaryField32b::new(0xb4285526), BinaryField32b::new(0x02326fe9), BinaryField32b::new(0xe79accab),
207 BinaryField32b::new(0xd893b618), BinaryField32b::new(0x9bd74bd5), BinaryField32b::new(0x2062577c), BinaryField32b::new(0x94f82da9),
208 BinaryField32b::new(0xb551d97a), BinaryField32b::new(0x862483f0), BinaryField32b::new(0x5f8e4e3e), BinaryField32b::new(0x098d5e44),
209 BinaryField32b::new(0xbe326102), BinaryField32b::new(0x4f5f050e), BinaryField32b::new(0x1bd571d5), BinaryField32b::new(0xcdd8e583),
210 ],
211 [
212 BinaryField32b::new(0x1b525e1b), BinaryField32b::new(0x1cccb851), BinaryField32b::new(0x45b3c777), BinaryField32b::new(0x63cc9153),
213 BinaryField32b::new(0xdfa0fd4a), BinaryField32b::new(0x0cf20c06), BinaryField32b::new(0x72fdd2f3), BinaryField32b::new(0xf9b6f564),
214 BinaryField32b::new(0x9552a62b), BinaryField32b::new(0x1e848099), BinaryField32b::new(0x3ba1a5a6), BinaryField32b::new(0x17ff06e0),
215 BinaryField32b::new(0x8cae82ed), BinaryField32b::new(0xb5b29fbc), BinaryField32b::new(0x9322d5a6), BinaryField32b::new(0x77f40c4c),
216 BinaryField32b::new(0x0843ce60), BinaryField32b::new(0x86ddb97f), BinaryField32b::new(0xe5a12a04), BinaryField32b::new(0x9bd65cd6),
217 BinaryField32b::new(0x1b16bea6), BinaryField32b::new(0xf4066cee), BinaryField32b::new(0xdcb3c788), BinaryField32b::new(0x499b6483),
218 ],
219];