Line 49:
Line 49:
| IOS_Ioctl(FD, 0x01, in_buf, 0x10, out_buf, 4);
| IOS_Ioctl(FD, 0x01, in_buf, 0x10, out_buf, 4);
| Creates a new crypto object and returns a handle for it.
| Creates a new crypto object and returns a handle for it.
−
|
+
|
|-
|-
| 0x02
| 0x02
Line 114:
Line 114:
| IOSC_GenerateHash() / IOSC_GenerateHashAsync();
| IOSC_GenerateHash() / IOSC_GenerateHashAsync();
| IOS_Ioctlv(FD, 0x0C, 3, 1, vector); / IOS_IoctlvAsync(FD, 0x0C, 3, 1, vector, queueid, message);
| IOS_Ioctlv(FD, 0x0C, 3, 1, vector); / 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
| IOSC_Encrypt() / IOSC_EncryptAsync()
| IOSC_Encrypt() / IOSC_EncryptAsync()
| IOS_Ioctlv(FD, 0x0D, 3, 1, vector); / IOS_IoctlvAsync(FD, 0x0D, 3, 1, vector, queueid, message);
| IOS_Ioctlv(FD, 0x0D, 3, 1, vector); / 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
| IOSC_Decrypt() / IOSC_DecryptAsync()
| IOSC_Decrypt() / IOSC_DecryptAsync()
| IOS_Ioctlv(FD, 0x0E, 3, 1, vector); / IOS_IoctlvAsync(FD, 0x0E, 3, 1, vector, queueid, message);
| IOS_Ioctlv(FD, 0x0E, 3, 1, vector); / 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.
|-
|-
| 0x0F
| 0x0F
Line 139:
Line 139:
| IOS_Ioctlv(FD, 0x10, 4, 1, vector); / IOS_IoctlvAsync(FD, 0x10, 4, 1, vector, queueid, message);
| IOS_Ioctlv(FD, 0x10, 4, 1, vector); / 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.
|-
|-
| 0x11
| 0x11
Line 169:
Line 169:
| IOS_Ioctl(FD, 0x15, 0, 0, out_buf, out_size);
| IOS_Ioctl(FD, 0x15, 0, 0, out_buf, out_size);
| Generate random data of an arbitrary size.
| Generate random data of an arbitrary size.
−
|
+
|
|-
|-
| 0x16
| 0x16
Line 208:
Line 208:
|-
|-
| 0x1C
| 0x1C
−
| get_key_type()
+
| get_security_level()
| IOS_Ioctl(FD, 0x1C, 0, 0, out_buf, 4);
| IOS_Ioctl(FD, 0x1C, 0, 0, out_buf, 4);
−
| Gets the key type from the OTP. Should always be 0.
+
| Gets the security level flag from the OTP.
−
|
+
|
|-
|-
| 0x1D
| 0x1D
Line 220:
Line 220:
|-
|-
| 0x1E
| 0x1E
−
| read_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 226:
Line 226:
|-
|-
| 0x1F
| 0x1F
−
| Unknown
+
| generate_wagonu_key()
| IOS_Ioctl(FD, 0x1F, ???, ???, ???, ???);
| IOS_Ioctl(FD, 0x1F, ???, ???, ???, ???);
−
| Seems to read eMMC/etc keys for OSv1 from OTP banks 2 and 4.
+
| Generates the WagonU key used to encrypt/decrypt Wii's eMMC data for migration.
−
|
+
|
|-
|-
| 0x20
| 0x20
| amiibo_encrypt()
| amiibo_encrypt()
| IOS_Ioctlv(FD, 0x20, 3, 1, vector);
| IOS_Ioctlv(FD, 0x20, 3, 1, vector);
−
|
+
| Encrypts amiibo data.
−
| Encrypts amiibo data.
+
|
|-
|-
| 0x21
| 0x21
| amiibo_decrypt()
| amiibo_decrypt()
| IOS_Ioctlv(FD, 0x21, 3, 1, vector);
| IOS_Ioctlv(FD, 0x21, 3, 1, vector);
−
|
+
| Decrypts amiibo data.
−
| Decrypts amiibo data.
+
|
|-
|-
| 0x22
| 0x22
Line 267:
Line 267:
! Description
! Description
|-
|-
−
| 13
+
| 0x00
−
| AES
+
| ECC-233
−
| ARM [[Ancast_Image|Ancast Image]](this and the below one are for all ARM-ancast images launched via IOS-MCP).
+
| Unknown private key. Possibly vWii NG ECC key.
+
|-
+
| 0x01
+
| NONE
+
| Unknown ID (0x04 bytes). Possibly vWii NG ID.
+
|-
+
| 0x02
+
| UNK
+
| Unknown (0x10 bytes).
+
|-
+
| 0x03
+
| UNK
+
| Unknown (0x14 bytes).
+
|-
+
| 0x04
+
| AES-128
+
| Old Wii common key.
+
|-
+
| 0x05
+
| UNK
+
| Unknown (0x10 bytes).
+
|-
+
| 0x06
+
| AES-128
+
| Fixed key stored in IOS-CRYPTO's data.
+
|-
+
| 0x07
+
| AES-128
+
| Wii U SEEPROM key.
+
|-
+
| 0x08
+
| NONE
+
| Unused.
|-
|-
−
| 14
+
| 0x09
+
| NONE
+
| Unused.
+
|-
+
| 0x0A
+
| NONE
+
| Unused.
+
|-
+
| 0x0B
+
| UNK
+
| Unknown (0x10 bytes).
+
|-
+
| 0x0C
+
| UNK
+
| Unknown (0x10 bytes).
+
|-
+
| 0x0D
+
| AES-128
+
| ARM [[Ancast_Image|Ancast Image]] (this and the below one are for all ARM-ancast images launched via IOS-MCP).
+
|-
+
| 0x0E
+
| RSA-2048 modulus
+
| ARM [[Ancast_Image|Ancast Image]] (stored inside IOS-CRYPTO's data).
+
|-
+
| 0x0F
| RSA-2048 modulus
| RSA-2048 modulus
−
| ARM [[Ancast_Image|Ancast Image]]
+
| Unknown (stored inside IOS-CRYPTO's data).
+
|-
+
| 0x10
+
| AES-128
+
| Wii U common key.
+
|-
+
| 0x11
+
| UNK
+
| Unknown (0x10 bytes).
+
|-
+
| 0x12
+
| AES-128
+
| WagonU key.
+
|-
+
| 0x13
+
| AES-128
+
| Old Wii NAND key.
+
|-
+
| 0x14
+
| HMAC SHA-1
+
| Old Wii NAND HMAC.
+
|-
+
| 0x15
+
| AES-128
+
| vWii common key.
+
|-
+
| 0x16
+
| UNK
+
| Unknown (0x10 bytes).
+
|-
+
| 0x17
+
| UNK
+
| Unknown (0x10 bytes).
+
|-
+
| 0x18
+
| UNK
+
| Unknown (0x10 bytes).
+
|-
+
| 0x19
+
| UNK
+
| Unknown (0x10 bytes).
+
|-
+
| 0x1A
+
| UNK
+
| Unknown (0x10 bytes).
+
|-
+
| 0x1B
+
| AES-128
+
| Key to encrypt/decrypt SSL RSA key.
+
|-
+
| 0x1C
+
| UNK
+
| Unknown (0x1E bytes).
+
|-
+
| 0x1D
+
| UNK
+
| Unknown (0x1E bytes).
+
|-
+
| 0x1E
+
| UNK
+
| Unknown (0x10 bytes).
+
|-
+
| 0x1F
+
| UNK
+
| Unknown (0x10 bytes).
+
|-
+
| 0x20
+
| UNK
+
| Unknown (0x40 bytes).
+
|-
+
| 0x21
+
| UNK
+
| Unknown (0x40 bytes).
+
|-
+
| 0x22
+
| UNK
+
| Unknown (0x40 bytes).
+
|-
+
| 0x23
+
| UNK
+
| Unknown (0x40 bytes).
+
|-
+
| 0x24
+
| UNK
+
| Unknown (0x10 bytes).
+
|-
+
| 0x25
+
| UNK
+
| Unknown (0x10 bytes).
+
|-
+
| 0x26
+
| UNK
+
| Unknown (0x10 bytes).
+
|-
+
| 0x27
+
| UNK
+
| Unknown (0x10 bytes).
+
|-
+
| 0x28
+
| UNK
+
| Unknown (0x10 bytes).
|-
|-
−
| 27
+
| 0x29 to 0x40
−
| RSA
+
| UNK
−
| SSL RSA Key
+
| Unused.
|}
|}