/dev/sha: Difference between revisions

From WiiBrew
Jump to navigation Jump to search
No edit summary
No edit summary
Line 4: Line 4:
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.
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 handles both SHA-1 hashing and HMAC verification in modular IOS versions (IOS28 and later). For IOS22 and earlier, HMAC verification is done in a dedicated separate device called [[:/dev/hmac]].
/dev/sha handles both SHA-1 hashing and HMAC verification in modular IOS versions (IOS28 and later). For the monolithic IOS versions (IOS22 and earlier), HMAC verification is done in a dedicated separate device called [[:/dev/hmac]].


== /dev/sha IOS_Ioctlv ==
== /dev/sha IOS_Ioctlv ==

Revision as of 20:47, 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 handles both SHA-1 hashing and HMAC verification in modular IOS versions (IOS28 and later). For the monolithic IOS versions (IOS22 and earlier), HMAC verification is done in a dedicated separate device called /dev/hmac.

/dev/sha IOS_Ioctlv

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