mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
blowfish: Add more tests
Test inplace ECB, normal CBC and inplace CBC encryption/decryption. Signed-off-by: Martin Storsjö <martin@martin.st>
This commit is contained in:
parent
87f023f2c0
commit
75366a504d
@ -517,11 +517,20 @@ static const uint32_t ciphertext_r[NUM_VARIABLE_KEY_TESTS] = {
|
|||||||
/* plaintext bytes */
|
/* plaintext bytes */
|
||||||
static const uint8_t plaintext[8] = "BLOWFISH";
|
static const uint8_t plaintext[8] = "BLOWFISH";
|
||||||
|
|
||||||
|
static const uint8_t plaintext2[16] = "BLOWFISHBLOWFISH";
|
||||||
|
|
||||||
/* ciphertext bytes */
|
/* ciphertext bytes */
|
||||||
static const uint8_t ciphertext[8] = {
|
static const uint8_t ciphertext[8] = {
|
||||||
0x32, 0x4E, 0xD0, 0xFE, 0xF4, 0x13, 0xA2, 0x03
|
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
|
#undef exit
|
||||||
static void test_blowfish(AVBlowfish *ctx, uint8_t *dst, const uint8_t *src,
|
static void test_blowfish(AVBlowfish *ctx, uint8_t *dst, const uint8_t *src,
|
||||||
const uint8_t *ref, int len, uint8_t *iv, int dir,
|
const uint8_t *ref, int len, uint8_t *iv, int dir,
|
||||||
@ -546,13 +555,23 @@ int main(void)
|
|||||||
AVBlowfish ctx;
|
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[8];
|
uint8_t tmp[16], iv[8];
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
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, 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_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);
|
||||||
|
Loading…
Reference in New Issue
Block a user