Registres RSA

From 3dbrew
Jump to navigation Jump to search

Registres[edit]

Old3DS Nom Addresse physique Taille Utilisé par
Oui RSA_CNT 0x1000B000 0x04
Oui RSA_? 0x1000B0F0 0x04
Oui RSA_SLOT0 0x1000B100 0x10
Oui RSA_SLOT1 0x1000B110 0x10
Oui RSA_SLOT2 0x1000B120 0x10
Oui RSA_SLOT3 0x1000B130 0x10
Oui RSA_EXPFIFO 0x1000B200 0x04
Oui RSA_MOD 0x1000B400 0x100
Oui RSA_TXT 0x1000B800 0x100

RSA_CNT[edit]

Bit Description
0 Début (1=Actif/Occupé, 0=Inactif)
1 ?
4-7 Emplacement de la clef (Bit6-7 don't actually affect the keyslot)
8 Endianness (1=Little endian, 0=Big endian)
9 Ordre des mots (1=Ordre normal, 0=Ordre renversé)

RSA_SLOT[edit]

Nom Décalage Taille
RSA_SLOTCNT 0x0 0x4
RSA_SLOTSIZE 0x4 0x4
? 0x8 0x4
? 0xC 0x4

RSA_SLOTCNT[edit]

Bits Description
0 Statut de la clef (1=Clef définie, 0=Clef non définie pour le moment)
1 Protection en écriture de la clef, ce bit est RW. (0 = non protégé, 1 = protégé)
30-2 ?
31 ?

Avant d'écrire RSA_EXPFIFO/RSA_MOD, le bit 0 doit ici être mit à zéro si le bit 31 est déjà à zéro. Autrement, l'ARM9 se bloquera lorsque vous essayerez d'écrire en RSA_EXPFIFO.

RSA_SLOTSIZE[edit]

Ceci contient la taille du RSA pour cet emplacement défini en mots. Normalement, la valeur est 0x40 pour un chiffrement RSA-2048.

RSA_EXPFIFO[edit]

L'exposent de l'octet situé en 0x100 (privé ou publique) est écrit dans cet emplacement en écriture seul- PEPS.

RSA_MOD[edit]

Le modulo de la clef RSA pour l'emplacement sélectionné peut être écrit ici. Au moment de l'écriture, le modulo doit être aligné avec la fin de la zone du registre.

RSA_TXT[edit]

La signature RSA peut être écrit ici. Les données lues provenant d'ici sont le message. Au moment de l'écriture de la signature RSA, la signature doit être préfixé par des zéros jusqu'à atteindre un multiple de 8 octets et la fin de la signature doit être aligné avec la fin de la zone du registre.

Le préfixe du message PKCS doit être vérifié manuellement par le logiciel étant donné que l'hardware ne fait que des opérations RSA brutes.

Utilisation des emplacements de clef[edit]

Emplacement de clef Description
0 Arbitraire
1 Description d'accès au CXI (suivant l'exheader)
2-3 Initialisé par la bootrom du processeur ARM9 mais non utilisé par aucun des FIRMs. L'utilisation de ces emplacements par la bootrom ARM9 est inconnu. (si ils ont une quelconque utilité)