Advertisement
xerpi

Vita auth mbedtls_mpi

Dec 31st, 2018
295
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.98 KB | None | 0 0
  1.  
  2. static void w_dmac5_command_0x41_derive_iv_tweak_C8D2F0(unsigned char *tweak_seed, unsigned char *tweak_key0, unsigned char *tweak_key1)
  3. {
  4.     //read about 0x1B xor here:
  5.     //https://en.wikipedia.org/wiki/Finite_field_arithmetic#Rijndael%27s_finite_field
  6.  
  7.     //first round - multiply by 2
  8.     mbedtls_mpi tweak_seed_mpi;
  9.     mbedtls_mpi_init(&tweak_seed_mpi);
  10.     mbedtls_mpi_read_binary(&tweak_seed_mpi, tweak_seed, 8);
  11.     mbedtls_mpi_mul_int(&tweak_seed_mpi, &tweak_seed_mpi, 2);
  12.     mbedtls_mpi_write_binary(&tweak_seed_mpi, tweak_key0, 8);
  13.  
  14.     tweak_key0[7] = ((tweak_seed[0] & 0x80) > 0) ? (tweak_key0[7] ^ 0x1B) : tweak_key0[7];
  15.  
  16.     //second round - multiply by 2
  17.     mbedtls_mpi tweak_key0_mpi;
  18.     mbedtls_mpi_init(&tweak_key0_mpi);
  19.     mbedtls_mpi_read_binary(&tweak_key0_mpi, tweak_key0, 8);
  20.     mbedtls_mpi_mul_int(&tweak_key0_mpi, &tweak_key0_mpi, 2);
  21.     mbedtls_mpi_write_binary(&tweak_key0_mpi, tweak_key1, 8);
  22.  
  23.     tweak_key1[7] = ((tweak_key0[0] & 0x80) > 0) ? (tweak_key1[7] ^ 0x1B) : tweak_key1[7];
  24. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement