Difference between revisions of "SHA Registers"

From 3dbrew
Jump to navigation Jump to search
Line 14: Line 14:
 
|-
 
|-
 
| style="background: green" | Yes
 
| style="background: green" | Yes
| [[#SHA_INPUTSZ|SHA_INPUTSZ]]
+
| [[#SHA_BLKCNT|SHA_BLKCNT]]
 
| 0x1000A004
 
| 0x1000A004
 
| 4
 
| 4
Line 26: Line 26:
 
|-
 
|-
 
| style="background: green" | Yes
 
| style="background: green" | Yes
| [[#SHA_IN|SHA_IN]]
+
| [[#SHA_INFIFO|SHA_INFIFO]]
 
| 0x1000A080
 
| 0x1000A080
 
| 0x40
 
| 0x40
Line 71: Line 71:
 
|}
 
|}
  
== SHA_INPUTSZ ==
+
== SHA_BLKCNT ==
This reg contains the total size of the data written to REG_SHA_IN.
+
This reg contains the total size of the data written to REG_SHA_IN, this field is updated when performing hash-function final-round.
  
 
== SHA_HASH ==
 
== SHA_HASH ==
 
This reg contains the SHA* hash after the final round, and the internal state during normal rounds. It is possible to write the internal state using this register.
 
This reg contains the SHA* hash after the final round, and the internal state during normal rounds. It is possible to write the internal state using this register.
  
== SHA_IN ==
+
== SHA_INFIFO ==
 
The data to be hashed must be written here. The data must be padded with 0x00s to align with the register size (if needed).
 
The data to be hashed must be written here. The data must be padded with 0x00s to align with the register size (if needed).

Revision as of 01:37, 20 March 2015

Registers

Old3DS Name Address Width Used by
Yes SHA_CNT 0x1000A000 4 Boot9, Process9
Yes SHA_BLKCNT 0x1000A004 4 Process9
Yes SHA_HASH 0x1000A040 0x20 Process9
Yes SHA_INFIFO 0x1000A080 0x40 Boot9, Process9

SHA_CNT

Bits Description
0-1 0=Hash ready, 1=Normal, 2=Final Round
2 ?
3 Output Endianess (0=Little endian, 1=Big endian)
4-5 Mode (0=SHA256, 1=SHA224, 2=3=SHA1)
6 ?
7 ?
8 Unknown. When set, the *entire* ARM9 hangs/crashes when attempting to read REG_SHA_IN.
9 ?
10 ?
16 Enable
17 1 when FIFO expects read/write

SHA_BLKCNT

This reg contains the total size of the data written to REG_SHA_IN, this field is updated when performing hash-function final-round.

SHA_HASH

This reg contains the SHA* hash after the final round, and the internal state during normal rounds. It is possible to write the internal state using this register.

SHA_INFIFO

The data to be hashed must be written here. The data must be padded with 0x00s to align with the register size (if needed).