Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
 help / color / mirror / Atom feed
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".

  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