Changes

73 bytes added ,  19:55, 19 November 2019
Line 114: Line 114:  
|-
 
|-
 
| 0x0C
 
| 0x0C
βˆ’
| IOSCError IOSC_GenerateHash(u8 * context, u8 * inputData, u32 inputSize, u32 chainingFlag, u8 * hashData); / int IOSC_GenerateHashAsync(u8 * context, u8 * inputData, u32 inputSize, u32 chainingFlag, u8 * hashData, int message_queue_id, IOSRequest* reply);
+
| IOSCError IOSC_GenerateHash(u8 * context, u8 * inputData, u32 inputSize, u32 chainingFlag, u8 * hashData);</br>int IOSC_GenerateHashAsync(u8 * context, u8 * inputData, u32 inputSize, u32 chainingFlag, u8 * hashData, int message_queue_id, IOSRequest* reply);
βˆ’
| IOS_Ioctlv(FD, 0x0C, 3, 1, vector); / IOS_IoctlvAsync(FD, 0x0C, 3, 1, vector, queueid, message);
+
| IOS_Ioctlv(FD, 0x0C, 3, 1, vector);</br>IOS_IoctlvAsync(FD, 0x0C, 3, 1, vector, queueid, message);
 
|
 
|
 
| This function has 2 different implementations, one async and the other not.  
 
| This function has 2 different implementations, one async and the other not.  
 
|-
 
|-
 
| 0x0D
 
| 0x0D
βˆ’
| IOSCError IOSC_Encrypt(IOSCSecretKeyHandle encryptHandle, u8 * ivData, u8 * inputData, u32 inputSize, u8 * outputData); / int IOSC_EncryptAsync(IOSCSecretKeyHandle encryptHandle, u8 * ivData, u8 * inputData, u32 inputSize, u8 * outputData, int message_queue_id, IOSRequest* reply);
+
| IOSCError IOSC_Encrypt(IOSCSecretKeyHandle encryptHandle, u8 * ivData, u8 * inputData, u32 inputSize, u8 * outputData);</br>int IOSC_EncryptAsync(IOSCSecretKeyHandle encryptHandle, u8 * ivData, u8 * inputData, u32 inputSize, u8 * outputData, int message_queue_id, IOSRequest* reply);
βˆ’
| IOS_Ioctlv(FD, 0x0D, 3, 1, vector); / IOS_IoctlvAsync(FD, 0x0D, 3, 1, vector, queueid, message);
+
| IOS_Ioctlv(FD, 0x0D, 3, 1, vector);</br>IOS_IoctlvAsync(FD, 0x0D, 3, 1, vector, queueid, message);
 
|
 
|
 
| This function has 2 different implementations, one async and the other not.  
 
| This function has 2 different implementations, one async and the other not.  
 
|-
 
|-
 
| 0x0E
 
| 0x0E
βˆ’
| IOSCError IOSC_Decrypt(IOSCSecretKeyHandle decryptHandle, u8 * ivData, u8 * inputData, u32 inputSize, u8 * outputData); / int IOSC_DecryptAsync((IOSCSecretKeyHandle decryptHandle, u8 * ivData, u8 * inputData, u32 inputSize, u8 * outputData, int message_queue_id, IOSRequest* request);
+
| IOSCError IOSC_Decrypt(IOSCSecretKeyHandle decryptHandle, u8 * ivData, u8 * inputData, u32 inputSize, u8 * outputData);</br>int IOSC_DecryptAsync((IOSCSecretKeyHandle decryptHandle, u8 * ivData, u8 * inputData, u32 inputSize, u8 * outputData, int message_queue_id, IOSRequest* request);
βˆ’
| IOS_Ioctlv(FD, 0x0E, 3, 1, vector); / IOS_IoctlvAsync(FD, 0x0E, 3, 1, vector, queueid, message);
+
| IOS_Ioctlv(FD, 0x0E, 3, 1, vector);</br>IOS_IoctlvAsync(FD, 0x0E, 3, 1, vector, queueid, message);
 
|
 
|
 
| This function has 2 different implementations, one async and the other not.  
 
| This function has 2 different implementations, one async and the other not.  
Line 138: Line 138:  
|-
 
|-
 
| 0x10
 
| 0x10
βˆ’
| IOSCError IOSC_GenerateBlockMAC(u8 * context, u8 * inputData, u32 inputSize, u8 * customData, u32 customDataSize, IOSCSecretKeyHandle signerHandle, u32 chainingFlag, u8 * signData); / IOSCError IOSC_GenerateBlockMACAsync(u8 * context, u8 * inputData, u32 inputSize, u8 * customData, u32 customDataSize, IOSCSecretKeyHandle signerHandle, u32 chainingFlag, u8 * signData, int message_queue_id, IOSRequest* reply);
+
| IOSCError IOSC_GenerateBlockMAC(u8 * context, u8 * inputData, u32 inputSize, u8 * customData, u32 customDataSize, IOSCSecretKeyHandle signerHandle, u32 chainingFlag, u8 * signData);</br>IOSCError IOSC_GenerateBlockMACAsync(u8 * context, u8 * inputData, u32 inputSize, u8 * customData, u32 customDataSize, IOSCSecretKeyHandle signerHandle, u32 chainingFlag, u8 * signData, int message_queue_id, IOSRequest* reply);
βˆ’
| IOS_Ioctlv(FD, 0x10, 4, 1, vector); / IOS_IoctlvAsync(FD, 0x10, 4, 1, vector, queueid, message);
+
| IOS_Ioctlv(FD, 0x10, 4, 1, vector);</br>IOS_IoctlvAsync(FD, 0x10, 4, 1, vector, queueid, message);
 
|  
 
|  
 
| This function has 2 different implementations, one async and the other not.  
 
| This function has 2 different implementations, one async and the other not.  
Line 195: Line 195:  
| IOS_Ioctl(FD, 0x19, ???, ???, ???, ???);
 
| IOS_Ioctl(FD, 0x19, ???, ???, ???, ???);
 
|  
 
|  
βˆ’
| This command is not mapped by the IOS-CRYPTO process.
+
| This command is not mapped by the IOS-CRYPTO process and has been superseded by IOSC_ReadHashedBlock.
 
|-
 
|-
 
| 0x1A
 
| 0x1A
βˆ’
| odm_encrypt()
+
| odm_encrypt();
 
| IOS_Ioctlv(FD, 0x1A, 3, 2, vector);
 
| IOS_Ioctlv(FD, 0x1A, 3, 2, vector);
 
|  
 
|  
Line 204: Line 204:  
|-
 
|-
 
| 0x1B
 
| 0x1B
βˆ’
| odm_generate_session_key()
+
| odm_generate_session_key();
 
| IOS_Ioctlv(FD, 0x1B, 3, 1, vector);
 
| IOS_Ioctlv(FD, 0x1B, 3, 1, vector);
 
|  
 
|  
Line 210: Line 210:  
|-
 
|-
 
| 0x1C
 
| 0x1C
βˆ’
| get_security_level()
+
| get_security_level();
 
| IOS_Ioctl(FD, 0x1C, 0, 0, out_buf, 4);
 
| IOS_Ioctl(FD, 0x1C, 0, 0, out_buf, 4);
 
| Gets the security level flag from the OTP.  
 
| Gets the security level flag from the OTP.  
Line 222: Line 222:  
|-
 
|-
 
| 0x1E
 
| 0x1E
βˆ’
| read_wii_seeprom_data()
+
| read_wii_seeprom_data();
 
| IOS_Ioctl(FD, 0x1E, 0, 0, out_buf, 0x60);
 
| IOS_Ioctl(FD, 0x1E, 0, 0, out_buf, 0x60);
 
| Reads the old Wii SEEPROM certificate data from OTP's bank 6.
 
| Reads the old Wii SEEPROM certificate data from OTP's bank 6.
Line 228: Line 228:  
|-
 
|-
 
| 0x1F
 
| 0x1F
βˆ’
| generate_wagonu_key()
+
| generate_wagonu_key();
 
| IOS_Ioctl(FD, 0x1F, in_buf, 0x10, 0, 0);
 
| IOS_Ioctl(FD, 0x1F, in_buf, 0x10, 0, 0);
 
| Generates the 0x12-keyhandle keydata used to encrypt/decrypt data for Wii U to Wii U system transfers.
 
| Generates the 0x12-keyhandle keydata used to encrypt/decrypt data for Wii U to Wii U system transfers.
Line 234: Line 234:  
|-
 
|-
 
| 0x20
 
| 0x20
βˆ’
| IOSC_EncryptBlocks()
+
| IOSC_EncryptBlocks();
 
| IOS_Ioctlv(FD, 0x20, 3, 1, vector);
 
| IOS_Ioctlv(FD, 0x20, 3, 1, vector);
 
| Software AES encryption, this supports multiple AES-modes (AES-CTR, ...). Used by IOS-PAD to encrypt amiibo data.  
 
| Software AES encryption, this supports multiple AES-modes (AES-CTR, ...). Used by IOS-PAD to encrypt amiibo data.  
Line 240: Line 240:  
|-
 
|-
 
| 0x21
 
| 0x21
βˆ’
| IOSC_DecryptBlocks()
+
| IOSC_DecryptBlocks();
 
| IOS_Ioctlv(FD, 0x21, 3, 1, vector);
 
| IOS_Ioctlv(FD, 0x21, 3, 1, vector);
 
| Software AES decryption version of the above ioctlv. Used by IOS-PAD to decrypt amiibo data.
 
| Software AES decryption version of the above ioctlv. Used by IOS-PAD to decrypt amiibo data.
Line 246: Line 246:  
|-
 
|-
 
| 0x22
 
| 0x22
βˆ’
| set_crypto_thread_priority()
+
| set_crypto_thread_priority();
 
| IOS_Ioctl(FD, 0x22, in_buf, 4, 0, 0);
 
| IOS_Ioctl(FD, 0x22, in_buf, 4, 0, 0);
 
| Modifies the IOS-CRYPTO main thread's priority.
 
| Modifies the IOS-CRYPTO main thread's priority.
Line 252: Line 252:  
|-
 
|-
 
| 0x23
 
| 0x23
βˆ’
| get_wagon_certificate_data()
+
| get_wagon_certificate_data();
 
| IOS_Ioctl(FD, 0x23, in_buf, 0x10, out_buf, out_size);
 
| IOS_Ioctl(FD, 0x23, in_buf, 0x10, out_buf, out_size);
 
| Gets Wagon certificate data stored inside IOS-CRYPTO.
 
| Gets Wagon certificate data stored inside IOS-CRYPTO.