CTCert: Difference between revisions
No edit summary |
Saying 01 is incorrect, its not always 1 that's loaded off dev OTP |
||
(6 intermediate revisions by 3 users not shown) | |||
Line 16: | Line 16: | ||
| 0x04 | | 0x04 | ||
| 0x3C | | 0x3C | ||
| ECDSA Signature | | ECDSA Signature using Nintendo's private key, in big-endian. The first 0x1E bytes are "r"; the second 0x1E bytes are "s". The hash is SHA-256 computed over this certificate, starting at byte 0x80 ("Cert Issue ID") to the end. | ||
|- | |- | ||
| 0x40 | | 0x40 | ||
Line 32: | Line 32: | ||
| 0xC4 | | 0xC4 | ||
| 0x40 | | 0x40 | ||
| Key ID: "CT<DeviceId>-<ConsoleType>", where DeviceId is the hex [[PSPXI:GetDeviceId|DeviceId]], and ConsoleType is 00 for retail, | | Key ID: "CT<DeviceId>-<ConsoleType>", where DeviceId is the hex [[PSPXI:GetDeviceId|DeviceId]], and ConsoleType is 00 for retail, any other single byte hex value for dev | ||
|- | |- | ||
| 0x104 | | 0x104 | ||
| 0x04 | | 0x04 | ||
| | | Expiration time as UNIX Timestamp in big endian. | ||
|- | |- | ||
| 0x108 | | 0x108 | ||
| 0x3C | | 0x3C | ||
| ECDSA Public Key | | ECDSA Public Key of this console as a curve point in big-endian. The first 0x1E bytes are "x" of this point; the second 0x1E bytes are "y". | ||
|- | |- | ||
| 0x144 | | 0x144 | ||
Line 47: | Line 47: | ||
|} | |} | ||
Boot ROM decrypts [[OTP Registers]] and writes the private key and Nintendo's signature of CTCert to [[Memory_layout#ARM9_ITCM|ARM9 ITCM]]; the public key is computed from the private key. | |||
The curve used for ECDSA is sect233r1. |