AES Registers: Difference between revisions

TimmSkiller (talk | contribs)
No edit summary
 
(4 intermediate revisions by 3 users not shown)
Line 232: Line 232:


== Endianness and word order ==
== Endianness and word order ==
When writing to the AES_CTR, AES_MAC or AES_KEY0/1/2/3 register, the hardware will process the written data according to the current input endianness specified in AES_CNT. This means that the byte ordering within each word is endian swapped accordingly but the word ordering of the register remains little endian.
 
=== AES_CNT.input_endianness ===
 
Swaps the bytes of 32-bit writes to AES_CTR, AES_WRFIFO, AES_KEY*FIFO according to specified endianness. AES_MAC?
 
=== AES_CNT.output_endianness ===
 
Swaps the bytes of 32-bit reads from AES_RDFIFO.
 
=== AES_CNT.input_word_order ===
 
If reversed, writes to AES_KEY*FIFO and AES_WRFIFO fill the FIFO backwards. For AES_WRFIFO, this means that every 16-byte block will have its words in the reverse order, but the order of these blocks remains the same. AES_CTR is unaffected by this field. AES_MAC?
 
=== AES_CNT.output_word_order ===
 
If reversed, reads from AES_RDFIFO will drain the FIFO backwards. This means that every 16-byte output block will have its words in the reverse order, but the order of these blocks remains the same.


== CCM mode pitfall ==
== CCM mode pitfall ==
Line 467: Line 482:
| -
| -
| No
| No
|-
| 0x20
| [[System_SaveData|System Save Data]] encryption key during [[System_Transfer|System Transfers]]. See [[System_Transfer#System_Save_Data_Transfer|System Save Data Transfer]].
| Bootrom.
| NATIVE_FIRM
| NATIVE_FIRM
| Yes
|-
|-
| 0x24
| 0x24
Line 560: Line 582:
| Movable.sed key.
| Movable.sed key.


This is the keyslot used for movable.sed encryption + AES-CBC MAC with the import/export [[FSPXI:ImportIntegrityVerificationSeed|commands]].
This is the keyslot used for movable.sed encryption + AES-CBC MAC with the import/export [[FSPXI:ImportIntegrityVerificationSeed|commands]]. The keyYs used for crypto/CMAC are different, but both can be found in process9 rodata.
| Bootrom.
| Bootrom.
| Bootrom.
| NATIVE_FIRM.
| -
| -
| Yes
| Yes
|-
|-
| 0x36
| 0x36
| Unknown. Used by friends module.
| Used by the [[Friend_Services|the friends module]] for [[Friend_Services#Approach_Contexts|ApproachContext]] encryption. See [[FRDU:GetMyApproachContext]].
 
See [[PSPXI:EncryptDecryptAes|EncryptDecryptAes]].
| Bootrom.
| Bootrom.
| Bootrom.
| Bootrom.