2 * Copyright (c) 2015 Rodger Combs <rodger.combs@gmail.com>
4 * This file is part of FFmpeg.
6 * FFmpeg is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
11 * FFmpeg is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
16 * You should have received a copy of the GNU General Public License along
17 * with FFmpeg; if not, write to the Free Software Foundation, Inc.,
18 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
22 #include "libavutil/aes.h"
23 #include "libavutil/aes_internal.h"
24 #include "libavutil/internal.h"
28 void checkasm_check_aes(void)
32 uint8_t pt
[MAX_COUNT
* 16];
33 uint8_t temp
[2][MAX_COUNT
* 16];
36 for (d
= 0; d
<= 1; d
++) {
37 for (i
= 128; i
<= 256; i
+= 64) {
38 av_aes_init(&b
, (const uint8_t*)"PI=3.1415926535897932384626433..", i
, d
);
39 if (check_func(b
.crypt
, "aes_%scrypt_%i", d
? "de" : "en", i
)) {
40 declare_func(void, AVAES
*a
, uint8_t *dst
, const uint8_t *src
,
41 int count
, uint8_t *iv
, int rounds
);
42 int count
= (rnd() & (MAX_COUNT
- 1)) + 1;
43 for (j
= 0; j
< 16 * MAX_COUNT
; j
++)
45 for (j
= 0; j
< 16; j
++)
46 iv
[0][j
] = iv
[1][j
] = rnd();
47 call_ref(&b
, temp
[0], pt
, count
, iv
[0], b
.rounds
);
48 call_new(&b
, temp
[1], pt
, count
, iv
[1], b
.rounds
);
49 if (memcmp(temp
[0], temp
[1], sizeof(16 * count
)))
51 if (memcmp(iv
[0], iv
[1], sizeof(iv
[0])))
53 call_ref(&b
, temp
[0], pt
, count
, NULL
, b
.rounds
);
54 call_new(&b
, temp
[1], pt
, count
, NULL
, b
.rounds
);
55 if (memcmp(temp
[0], temp
[1], sizeof(16 * count
)))
57 if (memcmp(iv
[0], iv
[1], sizeof(iv
[0])))
59 bench_new(&b
, temp
[1], pt
, MAX_COUNT
, NULL
, b
.rounds
);
62 report("%scrypt", d
? "de" : "en");