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. |