Difference between revisions of "CTCert"

From 3dbrew
Jump to navigation Jump to search
Line 1: Line 1:
 
=Summary=
 
=Summary=
The console-unique CTCert is used for signing [[Title Data Structure|CTX]] files, the DeviceCert used by [[eShop]], and presumably for DSiWare exports. This ECDSA signature, the ECDSA private key for this cert, and the IssuerID is loaded from memory initialized by bootrom instead of NAND. This is the 3DS equivalent of the DSi TWCert.
+
The console-unique CTCert is used for signing [[Title Data Structure|CTX]] files, the DeviceCert used by [[eShop]], and for [[DSiWare_Exports|DSiWare]] exports. This ECDSA signature, the ECDSA private key for this cert, and the IssuerID is loaded from memory initialized by bootrom instead of NAND. This is the 3DS equivalent of the DSi TWCert.
  
The CTCert is signed with ECDSA by Nintendo.
+
The CTCert is signed with ECDSA by Nintendo. CTCerts can be verified via a DER stored in NATIVE_FIRM, separate DERs are used for retail and dev/debug.
  
 
=Structure=
 
=Structure=
Line 12: Line 12:
 
| 0x00
 
| 0x00
 
| 0x04
 
| 0x04
| Type
+
| [[Certificates|Signature]] Type, 0x010005.
 
|-
 
|-
 
| 0x04
 
| 0x04
Line 47: Line 47:
 
|}
 
|}
  
The ECDSA private key for this cert is located 0x3C-bytes before this cert in internal memory, the 0x1E-bytes following this private key is padding. The ECDSA public key for this cert is converted from the ECDSA private key initialized by bootrom.
+
The ECDSA public key for this cert is converted from the ECDSA private key initialized by bootrom.

Revision as of 03:20, 26 April 2013

Summary

The console-unique CTCert is used for signing CTX files, the DeviceCert used by eShop, and for DSiWare exports. This ECDSA signature, the ECDSA private key for this cert, and the IssuerID is loaded from memory initialized by bootrom instead of NAND. This is the 3DS equivalent of the DSi TWCert.

The CTCert is signed with ECDSA by Nintendo. CTCerts can be verified via a DER stored in NATIVE_FIRM, separate DERs are used for retail and dev/debug.

Structure

Offset Size Description
0x00 0x04 Signature Type, 0x010005.
0x04 0x3C ECDSA Signature
0x40 0x40 Padding
0x80 0x40 Cert Issuer ID, for retail this is "Nintendo CA - G3_NintendoCTR2prod", for dev "Nintendo CA - G3_NintendoCTR2dev"
0xC0 0x04 Key Type
0xC4 0x40 Key ID: "CT<DeviceId>-<ConsoleType>", where DeviceId is the hex DeviceId, and ConsoleType is 00 for retail, 01 for dev
0x104 0x04 ?
0x108 0x3C ECDSA Public Key
0x144 0x3C Padding

The ECDSA public key for this cert is converted from the ECDSA private key initialized by bootrom.