[FFmpeg-cvslog] blowfish: Add more tests

Martin Storsjö git at videolan.org
Thu Oct 4 12:37:06 CEST 2012


ffmpeg | branch: master | Martin Storsjö <martin at martin.st> | Mon Oct  1 23:49:17 2012 +0300| [75366a504dfc30deadeac71c35e3c444275986f9] | committer: Martin Storsjö

blowfish: Add more tests

Test inplace ECB, normal CBC and inplace CBC encryption/decryption.

Signed-off-by: Martin Storsjö <martin at martin.st>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=75366a504dfc30deadeac71c35e3c444275986f9
---

 libavutil/blowfish.c |   21 ++++++++++++++++++++-
 1 file changed, 20 insertions(+), 1 deletion(-)

diff --git a/libavutil/blowfish.c b/libavutil/blowfish.c
index 604c0be..e6f07d6 100644
--- a/libavutil/blowfish.c
+++ b/libavutil/blowfish.c
@@ -517,11 +517,20 @@ static const uint32_t ciphertext_r[NUM_VARIABLE_KEY_TESTS] = {
 /* plaintext bytes */
 static const uint8_t plaintext[8] = "BLOWFISH";
 
+static const uint8_t plaintext2[16] = "BLOWFISHBLOWFISH";
+
 /* ciphertext bytes */
 static const uint8_t ciphertext[8] = {
     0x32, 0x4E, 0xD0, 0xFE, 0xF4, 0x13, 0xA2, 0x03
 };
 
+static const uint8_t ciphertext2[16] = {
+    0x53, 0x00, 0x40, 0x06, 0x63, 0xf2, 0x1d, 0x99,
+    0x3b, 0x9b, 0x27, 0x64, 0x46, 0xfd, 0x20, 0xc1,
+};
+
+#define IV "blowfish"
+
 #undef exit
 static void test_blowfish(AVBlowfish *ctx, uint8_t *dst, const uint8_t *src,
                           const uint8_t *ref, int len, uint8_t *iv, int dir,
@@ -546,13 +555,23 @@ int main(void)
     AVBlowfish ctx;
     uint32_t tmptext_l[NUM_VARIABLE_KEY_TESTS];
     uint32_t tmptext_r[NUM_VARIABLE_KEY_TESTS];
-    uint8_t tmp[8];
+    uint8_t tmp[16], iv[8];
     int i;
 
     av_blowfish_init(&ctx, "abcdefghijklmnopqrstuvwxyz", 26);
 
     test_blowfish(&ctx, tmp, plaintext, ciphertext, 1, NULL, 0, "encryption");
     test_blowfish(&ctx, tmp, ciphertext, plaintext, 1, NULL, 1, "decryption");
+    test_blowfish(&ctx, tmp, tmp, ciphertext, 1, NULL, 0, "Inplace encryption");
+    test_blowfish(&ctx, tmp, tmp, plaintext,  1, NULL, 1, "Inplace decryption");
+    memcpy(iv, IV, 8);
+    test_blowfish(&ctx, tmp, plaintext2, ciphertext2, 2, iv, 0, "CBC encryption");
+    memcpy(iv, IV, 8);
+    test_blowfish(&ctx, tmp, ciphertext2, plaintext2, 2, iv, 1, "CBC decryption");
+    memcpy(iv, IV, 8);
+    test_blowfish(&ctx, tmp, tmp, ciphertext2, 2, iv, 0, "Inplace CBC encryption");
+    memcpy(iv, IV, 8);
+    test_blowfish(&ctx, tmp, tmp, plaintext2,  2, iv, 1, "Inplace CBC decryption");
 
     memcpy(tmptext_l, plaintext_l, sizeof(*plaintext_l) * NUM_VARIABLE_KEY_TESTS);
     memcpy(tmptext_r, plaintext_r, sizeof(*plaintext_r) * NUM_VARIABLE_KEY_TESTS);



More information about the ffmpeg-cvslog mailing list