From: James Almer <jamrial@gmail.com> To: ffmpeg-devel@ffmpeg.org Subject: [FFmpeg-devel] [PATCH 4/6] avutil/test/aes_ctr: also check the encrypted buffer Date: Thu, 3 Apr 2025 17:59:01 -0300 Message-ID: <20250403205903.1390-1-jamrial@gmail.com> (raw) In-Reply-To: <20250401151637.2021-1-jamrial@gmail.com> 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. Signed-off-by: James Almer <jamrial@gmail.com> --- libavutil/tests/aes_ctr.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/libavutil/tests/aes_ctr.c b/libavutil/tests/aes_ctr.c index 65b49ee7fe..94b0201c7b 100644 --- a/libavutil/tests/aes_ctr.c +++ b/libavutil/tests/aes_ctr.c @@ -26,6 +26,16 @@ static const DECLARE_ALIGNED(8, uint8_t, plain)[] = { 0x6d, 0x6f, 0x73, 0x74, 0x20, 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x6f, 0x73, 0x74, 0x20, 0x72, 0x61, 0x6e, 0x64, 0x6f }; + +static const DECLARE_ALIGNED(8, uint8_t, encrypted)[] = { + 0x95, 0xcd, 0x9a, 0x8a, 0x83, 0xa2, 0x1a, 0x84, 0x92, 0xed, + 0xd6, 0xf2, 0x57, 0x2f, 0x61, 0x98, 0xbc, 0x20, 0x98, 0xee +}; + +static const DECLARE_ALIGNED(8, uint8_t, fixed_iv)[] = { + 0xde, 0xad, 0xbe, 0xef, 0xde, 0xad, 0xbe, 0xef +}; + static DECLARE_ALIGNED(8, uint8_t, tmp)[20]; int main (void) @@ -34,6 +44,7 @@ int main (void) struct AVAESCTR *ae, *ad; const uint8_t *iv; + for (int i = 0; i < 2; i++) { ae = av_aes_ctr_alloc(); ad = av_aes_ctr_alloc(); @@ -46,11 +57,18 @@ int main (void) if (av_aes_ctr_init(ad, (const uint8_t*)"0123456789abcdef") < 0) goto ERROR; + if (i) + av_aes_ctr_set_iv(ae, fixed_iv); + else av_aes_ctr_set_random_iv(ae); iv = av_aes_ctr_get_iv(ae); av_aes_ctr_set_full_iv(ad, iv); av_aes_ctr_crypt(ae, tmp, plain, sizeof(tmp)); + if (i && memcmp(tmp, encrypted, sizeof(tmp)) != 0) { + av_log(NULL, AV_LOG_ERROR, "test failed\n"); + goto ERROR; + } av_aes_ctr_crypt(ad, tmp, tmp, sizeof(tmp)); if (memcmp(tmp, plain, sizeof(tmp)) != 0){ @@ -58,6 +76,11 @@ int main (void) goto ERROR; } + av_aes_ctr_free(ae); + av_aes_ctr_free(ad); + ae = ad = NULL; + } + av_log(NULL, AV_LOG_INFO, "test passed\n"); ret = 0; -- 2.49.0 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
next prev parent reply other threads:[~2025-04-03 20:59 UTC|newest] Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top 2025-04-01 15:16 [FFmpeg-devel] [PATCH 1/2] avutil/aes_ctr: simplify and optimize av_aes_ctr_crypt() James Almer 2025-04-01 15:16 ` [FFmpeg-devel] [PATCH 2/2] avutil/aes_ctr: simplify incrementing the counter James Almer 2025-04-01 15:18 ` [FFmpeg-devel] [PATCH 1/2] avutil/aes_ctr: simplify and optimize av_aes_ctr_crypt() Nicolas George 2025-04-01 15:29 ` [FFmpeg-devel] [PATCH v2 " James Almer 2025-04-01 17:09 ` [FFmpeg-devel] [PATCH 3/3] avutil/tests/aes_ctr: test more than a single block worth of data James Almer 2025-04-03 20:59 ` James Almer [this message] 2025-04-03 20:59 ` [FFmpeg-devel] [PATCH 5/6] avutil/tests/aes_ctr: reindent after the previous commit James Almer 2025-04-03 20:59 ` [FFmpeg-devel] [PATCH 6/6] avutil/tests/aes_ctr: also randomize the encryption key James Almer
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20250403205903.1390-1-jamrial@gmail.com \ --to=jamrial@gmail.com \ --cc=ffmpeg-devel@ffmpeg.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel This inbox may be cloned and mirrored by anyone: git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \ ffmpegdev@gitmailbox.com public-inbox-index ffmpegdev Example config snippet for mirrors. AGPL code for this site: git clone https://public-inbox.org/public-inbox.git