Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- static void w_dmac5_command_0x41_derive_iv_tweak_C8D2F0(unsigned char *tweak_seed, unsigned char *tweak_key0, unsigned char *tweak_key1)
- {
- //read about 0x1B xor here:
- //https://en.wikipedia.org/wiki/Finite_field_arithmetic#Rijndael%27s_finite_field
- //first round - multiply by 2
- mbedtls_mpi tweak_seed_mpi;
- mbedtls_mpi_init(&tweak_seed_mpi);
- mbedtls_mpi_read_binary(&tweak_seed_mpi, tweak_seed, 8);
- mbedtls_mpi_mul_int(&tweak_seed_mpi, &tweak_seed_mpi, 2);
- mbedtls_mpi_write_binary(&tweak_seed_mpi, tweak_key0, 8);
- tweak_key0[7] = ((tweak_seed[0] & 0x80) > 0) ? (tweak_key0[7] ^ 0x1B) : tweak_key0[7];
- //second round - multiply by 2
- mbedtls_mpi tweak_key0_mpi;
- mbedtls_mpi_init(&tweak_key0_mpi);
- mbedtls_mpi_read_binary(&tweak_key0_mpi, tweak_key0, 8);
- mbedtls_mpi_mul_int(&tweak_key0_mpi, &tweak_key0_mpi, 2);
- mbedtls_mpi_write_binary(&tweak_key0_mpi, tweak_key1, 8);
- tweak_key1[7] = ((tweak_key0[0] & 0x80) > 0) ? (tweak_key1[7] ^ 0x1B) : tweak_key1[7];
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement