In memory of Ben “bushing” Byer, who passed away on Monday, February 8th, 2016.

Difference between revisions of "/dev/sha"

From WiiBrew
Jump to navigation Jump to search
m (documenting the wrong one, whoops)
Line 14: Line 14:
 
|-
 
|-
 
| style="vertical-align: top;" rowspan="3" | 0x00
 
| style="vertical-align: top;" rowspan="3" | 0x00
| style="vertical-align: top;" rowspan="3" | ?
+
| style="vertical-align: top;" rowspan="3" | Initialise context
 
| style="vertical-align: top;" rowspan="3" | 1
 
| style="vertical-align: top;" rowspan="3" | 1
 
| style="vertical-align: top;" rowspan="3" | 2
 
| style="vertical-align: top;" rowspan="3" | 2
Line 27: Line 27:
 
|-
 
|-
 
| style="vertical-align: top;" rowspan="3" | 0x01
 
| style="vertical-align: top;" rowspan="3" | 0x01
| style="vertical-align: top;" rowspan="3" | ?
+
| style="vertical-align: top;" rowspan="3" | Add Data
 
| style="vertical-align: top;" rowspan="3" | 1
 
| style="vertical-align: top;" rowspan="3" | 1
 
| style="vertical-align: top;" rowspan="3" | 2
 
| style="vertical-align: top;" rowspan="3" | 2
Line 40: Line 40:
 
|-
 
|-
 
| style="vertical-align: top;" rowspan="3" | 0x02
 
| style="vertical-align: top;" rowspan="3" | 0x02
| style="vertical-align: top;" rowspan="3" | ?
+
| style="vertical-align: top;" rowspan="3" | Finalise Hash
 
| style="vertical-align: top;" rowspan="3" | 1
 
| style="vertical-align: top;" rowspan="3" | 1
 
| style="vertical-align: top;" rowspan="3" | 2
 
| style="vertical-align: top;" rowspan="3" | 2

Revision as of 21:28, 17 January 2023

/dev/sha is an IPC interface for the SHA-1 engine that accepts IOS_Open, IOS_Close & IOCTLV commands.

Internally in IOS, it uses 2 FDs: one of 0x10001 normally calculating SHA-1 hashes and 0x10002 when dealing with HMAC key hashes (also based on SHA). Despite this, it is better to do an IOS_Open when using this resource.

/dev/sha IOS_Ioctlv

number Description in count out count vector vector length
0x00 Initialise context 1 2 input data (32-byte aligned) -
SHA Context 0x1c
SHA1 Hash 0x14
0x01 Add Data 1 2 input data (32-byte aligned) -
SHA Context 0x1c
SHA1 Hash 0x14
0x02 Finalise Hash 1 2 input data (32-byte aligned) -
SHA Context 0x1c
SHA1 Hash 0x14
0x03 ? ? ? ? ?
0x04 ? ? ? ? ?
0x0F some sort of H0,H1,H2 verifying ? ? ? ?