TSEC: Difference between revisions

No edit summary
Line 383: Line 383:
           memcpy(key_buf, key_data_buf, 0x7C);
           memcpy(key_buf, key_data_buf, 0x7C);
   
   
           u32 xfer_size_flag = 0x00060000;
           u32 crypt_reg_flag = 0x00060000;
           u32 blob1_hash_addr = key_buf + 0x20;  
           u32 blob1_hash_addr = key_buf + 0x20;  
   
   
           // fuc5 crypt cauth instruction
           // fuc5 crypt cauth instruction
           // Set auth_addr to 0x300 and auth_size to blob1_size
           // Set auth_addr to 0x300 and auth_size to blob1_size
           *(u32 *)cauth = ((blob1_size << 0x10) | (0x300 >> 0x08));
           cauth((blob1_size << 0x10) | (0x300 >> 0x08));
   
   
           // fuc5 crypt cxset instruction
           // fuc5 crypt cxset instruction
           // Set crypto transfer mode
           // The next 2 xfer instructions will be overridden
           *(u32 *)cx = 0x02;
          // and target changes from DMA to crypto
           cxset(0x02);
            
            
           // Transfer data from/to Falcon
           // Transfer data to crypto register c6
    xdst(0, (blob1_hash_addr | xfer_size_flag));
    xdst(0, (blob1_hash_addr | crypt_reg_flag));
 
 
    // Wait for all data loads/stores to finish
    // Wait for all data loads/stores to finish