static void rtmpe8_sig(const uint8_t *in, uint8_t *out, int key_id) { struct AVXTEA ctx; av_xtea_le_init(&ctx, rtmpe8_keys[key_id]); av_xtea_le_crypt(&ctx, out, in, 1, NULL, 0); }
int main(void) { AVXTEA ctx; uint8_t buf[16], iv[8]; int i, j; static const uint8_t src[32] = "HelloWorldHelloWorldHelloWorld"; uint8_t ct[32]; uint8_t pl[32]; for (i = 0; i < XTEA_NUM_TESTS; i++) { av_xtea_init(&ctx, xtea_test_key[i]); test_xtea(&ctx, buf, xtea_test_pt[i], xtea_test_ct[i], 1, NULL, 0, "encryption", av_xtea_crypt); test_xtea(&ctx, buf, xtea_test_ct[i], xtea_test_pt[i], 1, NULL, 1, "decryption", av_xtea_crypt); for (j = 0; j < 4; j++) AV_WL32(&buf[4*j], AV_RB32(&xtea_test_key[i][4*j])); av_xtea_le_init(&ctx, buf); for (j = 0; j < 2; j++) { AV_WL32(&ct[4*j], AV_RB32(&xtea_test_ct[i][4*j])); AV_WL32(&pl[4*j], AV_RB32(&xtea_test_pt[i][4*j])); } test_xtea(&ctx, buf, pl, ct, 1, NULL, 0, "encryption", av_xtea_le_crypt); test_xtea(&ctx, buf, ct, pl, 1, NULL, 1, "decryption", av_xtea_le_crypt); /* encrypt */ memcpy(iv, "HALLO123", 8); av_xtea_crypt(&ctx, ct, src, 4, iv, 0); /* decrypt into pl */ memcpy(iv, "HALLO123", 8); test_xtea(&ctx, pl, ct, src, 4, iv, 1, "CBC decryption", av_xtea_crypt); memcpy(iv, "HALLO123", 8); test_xtea(&ctx, ct, ct, src, 4, iv, 1, "CBC inplace decryption", av_xtea_crypt); } printf("Test encryption/decryption success.\n"); return 0; }