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.