26 #define NUM_VARIABLE_KEY_TESTS 34
30 0x00000000, 0xFFFFFFFF, 0x10000000, 0x11111111, 0x11111111,
31 0x01234567, 0x00000000, 0x01234567, 0x01A1D6D0, 0x5CD54CA8,
32 0x0248D438, 0x51454B58, 0x42FD4430, 0x059B5E08, 0x0756D8E0,
33 0x762514B8, 0x3BDD1190, 0x26955F68, 0x164D5E40, 0x6B056E18,
34 0x004BD6EF, 0x480D3900, 0x437540C8, 0x072D43A0, 0x02FE5577,
35 0x1D9D5C50, 0x30553228, 0x01234567, 0x01234567, 0x01234567,
36 0xFFFFFFFF, 0x00000000, 0x00000000, 0xFFFFFFFF
41 0x00000000, 0xFFFFFFFF, 0x00000001, 0x11111111, 0x11111111,
42 0x89ABCDEF, 0x00000000, 0x89ABCDEF, 0x39776742, 0x3DEF57DA,
43 0x06F67172, 0x2DDF440A, 0x59577FA2, 0x51CF143A, 0x774761D2,
44 0x29BF486A, 0x49372802, 0x35AF609A, 0x4F275232, 0x759F5CCA,
45 0x09176062, 0x6EE762F2, 0x698F3CFA, 0x77075292, 0x8117F12A,
46 0x18F728C2, 0x6D6F295A, 0x89ABCDEF, 0x89ABCDEF, 0x89ABCDEF,
47 0xFFFFFFFF, 0x00000000, 0x00000000, 0xFFFFFFFF
52 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
53 { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF },
54 { 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
55 { 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 },
56 { 0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF },
57 { 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 },
58 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
59 { 0xFE, 0xDC, 0xBA, 0x98, 0x76, 0x54, 0x32, 0x10 },
60 { 0x7C, 0xA1, 0x10, 0x45, 0x4A, 0x1A, 0x6E, 0x57 },
61 { 0x01, 0x31, 0xD9, 0x61, 0x9D, 0xC1, 0x37, 0x6E },
62 { 0x07, 0xA1, 0x13, 0x3E, 0x4A, 0x0B, 0x26, 0x86 },
63 { 0x38, 0x49, 0x67, 0x4C, 0x26, 0x02, 0x31, 0x9E },
64 { 0x04, 0xB9, 0x15, 0xBA, 0x43, 0xFE, 0xB5, 0xB6 },
65 { 0x01, 0x13, 0xB9, 0x70, 0xFD, 0x34, 0xF2, 0xCE },
66 { 0x01, 0x70, 0xF1, 0x75, 0x46, 0x8F, 0xB5, 0xE6 },
67 { 0x43, 0x29, 0x7F, 0xAD, 0x38, 0xE3, 0x73, 0xFE },
68 { 0x07, 0xA7, 0x13, 0x70, 0x45, 0xDA, 0x2A, 0x16 },
69 { 0x04, 0x68, 0x91, 0x04, 0xC2, 0xFD, 0x3B, 0x2F },
70 { 0x37, 0xD0, 0x6B, 0xB5, 0x16, 0xCB, 0x75, 0x46 },
71 { 0x1F, 0x08, 0x26, 0x0D, 0x1A, 0xC2, 0x46, 0x5E },
72 { 0x58, 0x40, 0x23, 0x64, 0x1A, 0xBA, 0x61, 0x76 },
73 { 0x02, 0x58, 0x16, 0x16, 0x46, 0x29, 0xB0, 0x07 },
74 { 0x49, 0x79, 0x3E, 0xBC, 0x79, 0xB3, 0x25, 0x8F },
75 { 0x4F, 0xB0, 0x5E, 0x15, 0x15, 0xAB, 0x73, 0xA7 },
76 { 0x49, 0xE9, 0x5D, 0x6D, 0x4C, 0xA2, 0x29, 0xBF },
77 { 0x01, 0x83, 0x10, 0xDC, 0x40, 0x9B, 0x26, 0xD6 },
78 { 0x1C, 0x58, 0x7F, 0x1C, 0x13, 0x92, 0x4F, 0xEF },
79 { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 },
80 { 0x1F, 0x1F, 0x1F, 0x1F, 0x0E, 0x0E, 0x0E, 0x0E },
81 { 0xE0, 0xFE, 0xE0, 0xFE, 0xF1, 0xFE, 0xF1, 0xFE },
82 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
83 { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF },
84 { 0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF },
85 { 0xFE, 0xDC, 0xBA, 0x98, 0x76, 0x54, 0x32, 0x10 }
90 0x4EF99745, 0x51866FD5, 0x7D856F9A, 0x2466DD87, 0x61F9C380,
91 0x7D0CC630, 0x4EF99745, 0x0ACEAB0F, 0x59C68245, 0xB1B8CC0B,
92 0x1730E577, 0xA25E7856, 0x353882B1, 0x48F4D088, 0x432193B7,
93 0x13F04154, 0x2EEDDA93, 0xD887E039, 0x5F99D04F, 0x4A057A3B,
94 0x452031C1, 0x7555AE39, 0x53C55F9C, 0x7A8E7BFA, 0xCF9C5D7A,
95 0xD1ABB290, 0x55CB3774, 0xFA34EC48, 0xA7907951, 0xC39E072D,
96 0x014933E0, 0xF21E9A77, 0x24594688, 0x6B5C5A9C
101 0x6198DD78, 0xB85ECB8A, 0x613063F2, 0x8B963C9D, 0x2281B096,
102 0xAFDA1EC7, 0x6198DD78, 0xC6A0A28D, 0xEB05282B, 0x250F09A0,
103 0x8BEA1DA4, 0xCF2651EB, 0x09CE8F1A, 0x4C379918, 0x8951FC98,
104 0xD69D1AE5, 0xFFD39C79, 0x3C2DA6E3, 0x5B163969, 0x24D3977B,
105 0xE4FADA8E, 0xF59B87BD, 0xB49FC019, 0x937E89A3, 0x4986ADB5,
106 0x658BC778, 0xD13EF201, 0x47B268B2, 0x08EA3CAE, 0x9FAC631D,
107 0xCDAFF6E4, 0xB71C49BC, 0x5754369A, 0x5D9E0A5A
117 0x32, 0x4E, 0xD0, 0xFE, 0xF4, 0x13, 0xA2, 0x03
121 0x53, 0x00, 0x40, 0x06, 0x63, 0xf2, 0x1d, 0x99,
122 0x3b, 0x9b, 0x27, 0x64, 0x46, 0xfd, 0x20, 0xc1,
125 #define IV "blowfish"
132 if (memcmp(dst, ref, 8*len)) {
134 printf(
"%s failed\ngot ", test);
135 for (i = 0; i < 8*
len; i++)
136 printf(
"%02x ", dst[i]);
137 printf(
"\nexpected ");
138 for (i = 0; i < 8*
len; i++)
139 printf(
"%02x ", ref[i]);
176 printf(
"Test encryption failed.\n");
182 printf(
"Test decryption failed.\n");
186 printf(
"Test encryption/decryption success.\n");
void av_blowfish_crypt(AVBlowfish *ctx, uint8_t *dst, const uint8_t *src, int count, uint8_t *iv, int decrypt)
Encrypt or decrypt a buffer using a previously initialized context.
static const uint32_t ciphertext_r[NUM_VARIABLE_KEY_TESTS]
static const uint32_t ciphertext_l[NUM_VARIABLE_KEY_TESTS]
static int ref[MAX_W *MAX_W]
av_cold void av_blowfish_init(AVBlowfish *ctx, const uint8_t *key, int key_len)
Initialize an AVBlowfish context.
static void test(const char *pattern, const char *host)
void av_blowfish_crypt_ecb(AVBlowfish *ctx, uint32_t *xl, uint32_t *xr, int decrypt)
Encrypt or decrypt a buffer using a previously initialized context.
static const uint8_t plaintext2[16]
static const uint8_t ciphertext2[16]
static const uint8_t plaintext[8]
static const uint8_t ciphertext[8]
static const uint32_t plaintext_r[NUM_VARIABLE_KEY_TESTS]
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 char *test)
static const uint8_t variable_key[NUM_VARIABLE_KEY_TESTS][8]
static const uint32_t plaintext_l[NUM_VARIABLE_KEY_TESTS]
#define NUM_VARIABLE_KEY_TESTS