blowfish-test: Use struct allocation functions from the API
This commit is contained in:
parent
a86ef80494
commit
8131bd4c22
@ -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, plaintext, ciphertext, 1, NULL, 0, "encryption");
|
||||||
test_blowfish(&ctx, tmp, ciphertext, plaintext, 1, NULL, 1, "decryption");
|
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, ciphertext, 1, NULL, 0, "Inplace encryption");
|
||||||
test_blowfish(&ctx, tmp, tmp, plaintext, 1, NULL, 1, "Inplace decryption");
|
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…
x
Reference in New Issue
Block a user