static void rtmpe8_sig(const uint8_t *in, uint8_t *out, int key_id) { struct AVXTEA ctx; av_xtea_init(&ctx, rtmpe8_keys[key_id]); av_xtea_crypt(&ctx, out, in, 1, NULL, 0); }
static void rtmpe8_sig(const uint8_t *in, uint8_t *out, int key_id) { struct AVXTEA ctx; uint8_t tmpbuf[8]; av_xtea_init(&ctx, rtmpe8_keys[key_id]); AV_WB32(tmpbuf, AV_RL32(in)); AV_WB32(tmpbuf + 4, AV_RL32(in + 4)); av_xtea_crypt(&ctx, tmpbuf, tmpbuf, 1, NULL, 0); AV_WL32(out, AV_RB32(tmpbuf)); AV_WL32(out + 4, AV_RB32(tmpbuf + 4)); }
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; }