Browse Source

Merge commit '8131bd4c22ad59b040173f67a5b2edb75863e801'

* commit '8131bd4c22ad59b040173f67a5b2edb75863e801':
  blowfish-test: Use struct allocation functions from the API

Merged-by: Clément Bœsch <clement@stupeflix.com>
tags/n3.1
Clément Bœsch 9 years ago
parent
commit
b6310ab6b5
1 changed files with 17 additions and 13 deletions
  1. +17
    -13
      libavutil/tests/blowfish.c

+ 17
- 13
libavutil/tests/blowfish.c View File

@@ -21,6 +21,7 @@
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>


#include "libavutil/mem.h"
#include "libavutil/blowfish.h" #include "libavutil/blowfish.h"


#define NUM_VARIABLE_KEY_TESTS 34 #define NUM_VARIABLE_KEY_TESTS 34
@@ -144,46 +145,49 @@ static void test_blowfish(AVBlowfish *ctx, uint8_t *dst, const uint8_t *src,


int main(void) int main(void)
{ {
AVBlowfish ctx;
uint32_t tmptext_l[NUM_VARIABLE_KEY_TESTS]; uint32_t tmptext_l[NUM_VARIABLE_KEY_TESTS];
uint32_t tmptext_r[NUM_VARIABLE_KEY_TESTS]; uint32_t tmptext_r[NUM_VARIABLE_KEY_TESTS];
uint8_t tmp[16], iv[8]; uint8_t tmp[16], iv[8];
int i; int i;
AVBlowfish *ctx = av_blowfish_alloc();
if (!ctx)
return 1;


av_blowfish_init(&ctx, "abcdefghijklmnopqrstuvwxyz", 26);
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");
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); memcpy(iv, IV, 8);
test_blowfish(&ctx, tmp, plaintext2, ciphertext2, 2, iv, 0, "CBC encryption");
test_blowfish(ctx, tmp, plaintext2, ciphertext2, 2, iv, 0, "CBC encryption");
memcpy(iv, IV, 8); memcpy(iv, IV, 8);
test_blowfish(&ctx, tmp, ciphertext2, plaintext2, 2, iv, 1, "CBC decryption");
test_blowfish(ctx, tmp, ciphertext2, plaintext2, 2, iv, 1, "CBC decryption");
memcpy(iv, IV, 8); memcpy(iv, IV, 8);
test_blowfish(&ctx, tmp, tmp, ciphertext2, 2, iv, 0, "Inplace CBC encryption");
test_blowfish(ctx, tmp, tmp, ciphertext2, 2, iv, 0, "Inplace CBC encryption");
memcpy(iv, IV, 8); memcpy(iv, IV, 8);
test_blowfish(&ctx, tmp, tmp, plaintext2, 2, iv, 1, "Inplace CBC decryption");
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_l, plaintext_l, sizeof(*plaintext_l) * NUM_VARIABLE_KEY_TESTS);
memcpy(tmptext_r, plaintext_r, sizeof(*plaintext_r) * NUM_VARIABLE_KEY_TESTS); memcpy(tmptext_r, plaintext_r, sizeof(*plaintext_r) * NUM_VARIABLE_KEY_TESTS);


for (i = 0; i < NUM_VARIABLE_KEY_TESTS; i++) { for (i = 0; i < NUM_VARIABLE_KEY_TESTS; i++) {
av_blowfish_init(&ctx, variable_key[i], 8);
av_blowfish_init(ctx, variable_key[i], 8);


av_blowfish_crypt_ecb(&ctx, &tmptext_l[i], &tmptext_r[i], 0);
av_blowfish_crypt_ecb(ctx, &tmptext_l[i], &tmptext_r[i], 0);
if (tmptext_l[i] != ciphertext_l[i] || tmptext_r[i] != ciphertext_r[i]) { if (tmptext_l[i] != ciphertext_l[i] || tmptext_r[i] != ciphertext_r[i]) {
printf("Test encryption failed.\n"); printf("Test encryption failed.\n");
return 2; return 2;
} }


av_blowfish_crypt_ecb(&ctx, &tmptext_l[i], &tmptext_r[i], 1);
av_blowfish_crypt_ecb(ctx, &tmptext_l[i], &tmptext_r[i], 1);
if (tmptext_l[i] != plaintext_l[i] || tmptext_r[i] != plaintext_r[i]) { if (tmptext_l[i] != plaintext_l[i] || tmptext_r[i] != plaintext_r[i]) {
printf("Test decryption failed.\n"); printf("Test decryption failed.\n");
return 3; return 3;
} }
} }
printf("Test encryption/decryption success.\n"); printf("Test encryption/decryption success.\n");
av_free(ctx);


return 0; return 0;
} }


Loading…
Cancel
Save