Lines Matching refs:cs

188 static void generate_round_keys(AVCAMELLIA *cs, uint64_t Kl[2], uint64_t Kr[2], uint64_t Ka[2], uint64_t Kb[2])
196 cs->Kw[0] = Kl[0];
197 cs->Kw[1] = Kl[1];
198 if (cs->key_bits == 128) {
201 cs->K[2*i] = d[0];
202 cs->K[2*i+1] = d[1];
205 cs->K[9] = d[1];
207 cs->Ke[0] = d[0];
208 cs->Ke[1] = d[1];
210 cs->Ke[2] = d[0];
211 cs->Ke[3] = d[1];
213 cs->Kw[2] = d[0];
214 cs->Kw[3] = d[1];
218 cs->K[2*i] = d[0];
219 cs->K[2*i+1] = d[1];
222 cs->Ke[0] = d[0];
223 cs->Ke[1] = d[1];
225 cs->Ke[2] = d[0];
226 cs->Ke[3] = d[1];
228 cs->Ke[4] = d[0];
229 cs->Ke[5] = d[1];
231 cs->Kw[2] = d[0];
232 cs->Kw[3] = d[1];
236 static void camellia_encrypt(AVCAMELLIA *cs, uint8_t *dst, const uint8_t *src)
241 D1 ^= cs->Kw[0];
242 D2 ^= cs->Kw[1];
243 D2 ^= F(D1, cs->K[0]);
244 D1 ^= F(D2, cs->K[1]);
245 D2 ^= F(D1, cs->K[2]);
246 D1 ^= F(D2, cs->K[3]);
247 D2 ^= F(D1, cs->K[4]);
248 D1 ^= F(D2, cs->K[5]);
249 D1 = FL(D1, cs->Ke[0]);
250 D2 = FLINV(D2, cs->Ke[1]);
251 D2 ^= F(D1, cs->K[6]);
252 D1 ^= F(D2, cs->K[7]);
253 D2 ^= F(D1, cs->K[8]);
254 D1 ^= F(D2, cs->K[9]);
255 D2 ^= F(D1, cs->K[10]);
256 D1 ^= F(D2, cs->K[11]);
257 D1 = FL(D1, cs->Ke[2]);
258 D2 = FLINV(D2, cs->Ke[3]);
259 D2 ^= F(D1, cs->K[12]);
260 D1 ^= F(D2, cs->K[13]);
261 D2 ^= F(D1, cs->K[14]);
262 D1 ^= F(D2, cs->K[15]);
263 D2 ^= F(D1, cs->K[16]);
264 D1 ^= F(D2, cs->K[17]);
265 if (cs->key_bits != 128) {
266 D1 = FL(D1, cs->Ke[4]);
267 D2 = FLINV(D2, cs->Ke[5]);
268 D2 ^= F(D1, cs->K[18]);
269 D1 ^= F(D2, cs->K[19]);
270 D2 ^= F(D1, cs->K[20]);
271 D1 ^= F(D2, cs->K[21]);
272 D2 ^= F(D1, cs->K[22]);
273 D1 ^= F(D2, cs->K[23]);
275 D2 ^= cs->Kw[2];
276 D1 ^= cs->Kw[3];
281 static void camellia_decrypt(AVCAMELLIA *cs, uint8_t *dst, const uint8_t *src, uint8_t *iv)
286 D1 ^= cs->Kw[2];
287 D2 ^= cs->Kw[3];
288 if (cs->key_bits != 128) {
289 D2 ^= F(D1, cs->K[23]);
290 D1 ^= F(D2, cs->K[22]);
291 D2 ^= F(D1, cs->K[21]);
292 D1 ^= F(D2, cs->K[20]);
293 D2 ^= F(D1, cs->K[19]);
294 D1 ^= F(D2, cs->K[18]);
295 D1 = FL(D1, cs->Ke[5]);
296 D2 = FLINV(D2, cs->Ke[4]);
298 D2 ^= F(D1, cs->K[17]);
299 D1 ^= F(D2, cs->K[16]);
300 D2 ^= F(D1, cs->K[15]);
301 D1 ^= F(D2, cs->K[14]);
302 D2 ^= F(D1, cs->K[13]);
303 D1 ^= F(D2, cs->K[12]);
304 D1 = FL(D1, cs->Ke[3]);
305 D2 = FLINV(D2, cs->Ke[2]);
306 D2 ^= F(D1, cs->K[11]);
307 D1 ^= F(D2, cs->K[10]);
308 D2 ^= F(D1, cs->K[9]);
309 D1 ^= F(D2, cs->K[8]);
310 D2 ^= F(D1, cs->K[7]);
311 D1 ^= F(D2, cs->K[6]);
312 D1 = FL(D1, cs->Ke[1]);
313 D2 = FLINV(D2, cs->Ke[0]);
314 D2 ^= F(D1, cs->K[5]);
315 D1 ^= F(D2, cs->K[4]);
316 D2 ^= F(D1, cs->K[3]);
317 D1 ^= F(D2, cs->K[2]);
318 D2 ^= F(D1, cs->K[1]);
319 D1 ^= F(D2, cs->K[0]);
320 D2 ^= cs->Kw[0];
321 D1 ^= cs->Kw[1];
356 av_cold int av_camellia_init(AVCAMELLIA *cs, const uint8_t *key, int key_bits)
364 cs->key_bits = key_bits;
393 generate_round_keys(cs, Kl, Kr, Ka, Kb);
397 void av_camellia_crypt(AVCAMELLIA *cs, uint8_t *dst, const uint8_t *src, int count, uint8_t *iv, int decrypt)
402 camellia_decrypt(cs, dst, src, iv);
407 camellia_encrypt(cs, dst, dst);
410 camellia_encrypt(cs, dst, src);