History

avutil/tests/aes_ctr: also check the encrypted buffer

The test in its current form is just ensuring the plain text output is the same as the plain text input, not bothering to check if anything was done with the latter. av_aes_ctr_crypt() could be a simple memcpy under the hood and this test would still succeed. To check the integrity of the encrypted buffer, both the IV and the key need to be fixed. As such, and in order to not remove the existing randomization of the input IV, do two runs, one with random initialization data, and one with static data.

James Almer committed 1 year ago

Commit 19085281 parent 0a34f001 file · +23 −0Browse files

Unified · Split

libavutil/tests/aes_ctr.c+23−0
@@ -26,6 +26,16 @@ static const DECLARE_ALIGNED(8, uint8_t, plain)[] = { · 25 unmodified lines
2626 0x6d, 0x6f, 0x73, 0x74, 0x20, 0x72, 0x61, 0x6e, 0x64, 0x6f,
2727 0x6d, 0x6f, 0x73, 0x74, 0x20, 0x72, 0x61, 0x6e, 0x64, 0x6f
2828 };
29+
30+static const DECLARE_ALIGNED(8, uint8_t, encrypted)[] = {
31+ 0x95, 0xcd, 0x9a, 0x8a, 0x83, 0xa2, 0x1a, 0x84, 0x92, 0xed,
32+ 0xd6, 0xf2, 0x57, 0x2f, 0x61, 0x98, 0xbc, 0x20, 0x98, 0xee
33+};
34+
35+static const DECLARE_ALIGNED(8, uint8_t, fixed_iv)[] = {
36+ 0xde, 0xad, 0xbe, 0xef, 0xde, 0xad, 0xbe, 0xef
37+};
38+
2939 static DECLARE_ALIGNED(8, uint8_t, tmp)[20];
3040
3141 int main (void)
@@ -34,6 +44,7 @@ int main (void) · 2 unmodified lines
3444 struct AVAESCTR *ae, *ad;
3545 const uint8_t *iv;
3646
47+ for (int i = 0; i < 2; i++) {
3748 ae = av_aes_ctr_alloc();
3849 ad = av_aes_ctr_alloc();
3950
@@ -46,11 +57,18 @@ int main (void) · 6 unmodified lines
4657 if (av_aes_ctr_init(ad, (const uint8_t*)"0123456789abcdef") < 0)
4758 goto ERROR;
4859
60+ if (i)
61+ av_aes_ctr_set_iv(ae, fixed_iv);
62+ else
4963 av_aes_ctr_set_random_iv(ae);
5064 iv = av_aes_ctr_get_iv(ae);
5165 av_aes_ctr_set_full_iv(ad, iv);
5266
5367 av_aes_ctr_crypt(ae, tmp, plain, sizeof(tmp));
68+ if (i && memcmp(tmp, encrypted, sizeof(tmp)) != 0) {
69+ av_log(NULL, AV_LOG_ERROR, "test failed\n");
70+ goto ERROR;
71+ }
5472 av_aes_ctr_crypt(ad, tmp, tmp, sizeof(tmp));
5573
5674 if (memcmp(tmp, plain, sizeof(tmp)) != 0){
@@ -58,6 +76,11 @@ int main (void) · 1 unmodified line
5876 goto ERROR;
5977 }
6078
79+ av_aes_ctr_free(ae);
80+ av_aes_ctr_free(ad);
81+ ae = ad = NULL;
82+ }
83+
6184 av_log(NULL, AV_LOG_INFO, "test passed\n");
6285 ret = 0;
6386

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t