Settings services: Difference between revisions

No edit summary
Add key generation info (from shchmue)
(5 intermediate revisions by 2 users not shown)
Line 250: Line 250:


== GetEciDeviceCertificate ==
== GetEciDeviceCertificate ==
Takes a type-0x16 output buffer with fixed size 0x180.
Takes a type-0x16 output buffer containing a [[#EccB233DeviceCertificate]].


Returns the device certificate (ECC signed). This is identical to 3DS DeviceCert/CTCert besides the strings. NIM loads the DeviceId from this.
Returns the device certificate (ECC signed). This is identical to 3DS DeviceCert/CTCert besides the strings. NIM loads the DeviceId from this.


== GetEticketDeviceCertificate ==
== GetEticketDeviceCertificate ==
Takes a type-0x16 output buffer with fixed size 0x240.
Takes a type-0x16 output buffer containing a [[#Rsa2048DeviceCertificate]].


Returns the ETicket certificate (RSA signed).
Returns the ETicket certificate (RSA signed).


== GetSslKey ==
== GetSslKey ==
Takes a type-0x16 output buffer with fixed size 0x134.
Takes a type-0x16 output buffer containing a [[#SslKey]].


Returns the extended SSL key (0x130 bytes) from [[Calibration#CAL0|CAL0]]. If the extended key is not programmed then it falls back to the normal SSL key (0x110 bytes).
Returns the extended SSL key (0x130 bytes) from [[Calibration#CAL0|CAL0]]. If the extended key is not programmed then it falls back to the normal SSL key (0x110 bytes).
Line 267: Line 267:


== GetSslCertificate ==
== GetSslCertificate ==
Takes a type-0x16 output buffer with fixed size 0x804.
Takes a type-0x16 output buffer containing a [[#SslCertificate]].
 
Returns a [[Settings_services#setcal_Container_Structure|container]] with the plaintext SSL certificate.


Used by SSL-sysmodule, see [[SSL_services|here]].
Used by SSL-sysmodule, see [[SSL_services|here]].


== GetGameCardKey ==
== GetGameCardKey ==
Takes a type-0x16 output buffer with fixed size 0x134.
Takes a type-0x16 output buffer containing a [[#GameCardKey]].


Returns the extended GameCard key (0x130 bytes) from [[Calibration#CAL0|CAL0]]. If the extended key is not programmed then it falls back to the normal GameCard key (0x110 bytes).
Returns the extended GameCard key (0x130 bytes) from [[Calibration#CAL0|CAL0]]. If the extended key is not programmed then it falls back to the normal GameCard key (0x110 bytes).


== GetGameCardCertificate ==
== GetGameCardCertificate ==
Takes a type-0x16 output buffer with fixed size 0x404.
Takes a type-0x16 output buffer containing a [[#GameCardCertificate]].


Returns a [[Settings_services#setcal_Container_Structure|container]] with the GameCard certificate.
== GetEciDeviceKey ==
No input, returns an [[#EccB233DeviceKey]].


== GetEciDeviceKey ==
Returns the extended device ECC-B233 key (0x50 bytes) from [[Calibration#CAL0|CAL0]]. If the extended key is not programmed then it falls back to the normal device ECC-B233 key (0x30 bytes).
Returns the extended device ECC-B233 key (0x50 bytes) from [[Calibration#CAL0|CAL0]]. If the extended key is not programmed then it falls back to the normal device ECC-B233 key (0x30 bytes).
[5.0.0+] Now returns an additional 4-bytes.


== GetEticketDeviceKey ==
== GetEticketDeviceKey ==
Takes a type-0x16 output buffer with fixed size 0x244.
Takes a type-0x16 output buffer containing a [[#Rsa2048DeviceKey]].


Returns the extended ETicket RSA-2048 key (0x240 bytes) from [[Calibration#CAL0|CAL0]]. If the extended key is not programmed then it falls back to the normal ETicket RSA-2048 key (0x220 bytes).
Returns the extended ETicket RSA-2048 key (0x240 bytes) from [[Calibration#CAL0|CAL0]]. If the extended key is not programmed then it falls back to the normal ETicket RSA-2048 key (0x220 bytes).


== GetEciDeviceCertificate2 ==
== GetEciDeviceCertificate2 ==
Same as [[#GetEciDeviceCertificate]], but returns a RSA-2048 variant of the device certificate.
Same as [[#GetEciDeviceCertificate]], but [[#Rsa2048DeviceCertificate|returns]] a RSA-2048 variant of the device certificate.


== GetEciDeviceKey2 ==
== GetEciDeviceKey2 ==
Same as [[#GetEciDeviceKey]], but returns a RSA-2048 variant of the device key.
Same as [[#GetEciDeviceKey]], but [[#Rsa2048DeviceKey|returns]] a RSA-2048 variant of the device key.
 
== AccelerometerOffset ==
This is "nn::settings::factory::AccelerometerOffset". It's size is 0x06 bytes.
 
== AccelerometerScale ==
This is "nn::settings::factory::AccelerometerScale". It's size is 0x06 bytes.
 
== AmiiboEcdsaCertificate ==
This is "nn::settings::factory::AmiiboEcdsaCertificate". It's size is 0x70 bytes.
 
== AmiiboEcqvBlsCertificate ==
This is "nn::settings::factory::AmiiboEcqvBlsCertificate". It's size is 0x20 bytes.
 
== AmiiboEcqvBlsKey ==
This is "nn::settings::factory::AmiiboEcqvBlsKey". It's size is 0x40 bytes.


== setcal Container Structure ==
If [[Calibration#CAL0|Calibration Version]] >= 9, this is now:
{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
Line 307: Line 318:
|-
|-
| 0x0
| 0x0
| 0x40
| Key
|-
| 0x44
| 0x4
| 0x4
| Size (same size used for decryption if needed)
| Key generation
|}
 
== AmiiboEcqvBlsRootCertificate ==
This is "nn::settings::factory::AmiiboEcqvBlsRootCertificate". It's size is 0x90 bytes.
 
== AmiiboEcqvCertificate ==
This is "nn::settings::factory::AmiiboEcqvCertificate". It's size is 0x14 bytes.
 
== AmiiboKey ==
This is "nn::settings::factory::AmiiboKey". It's size is 0x50 bytes.
 
If [[Calibration#CAL0|Calibration Version]] >= 9, this is now:
{| class="wikitable" border="1"
|-
! Offset
! Size
! Name
|-
| 0x0
| 0x50
| Key
|-
| 0x50
| 0x4
| Key generation
|}
 
== AnalogStickFactoryCalibration ==
This is "nn::settings::factory::AnalogStickFactoryCalibration". It's size is 0x09 bytes.
 
== AnalogStickModelParameter ==
This is "nn::settings::factory::AnalogStickModelParameter". It's size is 0x12 bytes.
 
== BatteryLot ==
This is "nn::settings::BatteryLot". It's size is 0x18 bytes.
 
== BdAddress ==
This is "nn::settings::factory::BdAddress". It's size is 0x06 bytes.
 
== ConfigurationId1 ==
This is "nn::settings::factory::ConfigurationId1". It's size is 0x1E bytes.
 
== ConsoleSixAxisSensorHorizontalOffset ==
This is "nn::settings::factory::ConsoleSixAxisSensorHorizontalOffset". It's size is 0x06 bytes.
 
== CountryCode ==
This is "nn::settings::factory::CountryCode". It's size is 0x04 bytes.
 
== EccB233DeviceCertificate ==
This is "nn::settings::factory::EccB233DeviceCertificate". It's size is 0x180 bytes.
 
== EccB233DeviceKey ==
This is "nn::settings::factory::EccB233DeviceKey". It's size is 0x30 bytes or 0x54 bytes in the extended version.
 
If [[Calibration#CAL0|Calibration Version]] >= 9, this is now:
{| class="wikitable" border="1"
|-
! Offset
! Size
! Name
|-
| 0x0
| 0x54
| Key
|-
| 0x54
| 0x4
| Key generation
|}
 
== GameCardCertificate ==
This is "nn::settings::factory::GameCardCertificate". It's maximum size is 0x404 bytes.
{| class="wikitable" border="1"
|-
! Offset
! Size
! Name
|-
| 0x0
| 0x4
| GameCard certificate size
|-
|-
| 0x4
| 0x4
| {above size}
| {above size}
| Actual data starts here.
| GameCard certificate data
|}
 
== GameCardKey ==
This is "nn::settings::factory::GameCardKey". It's size is 0x110 bytes or 0x130 bytes in the extended version.
 
If [[Calibration#CAL0|Calibration Version]] >= 9, this is now:
{| class="wikitable" border="1"
|-
! Offset
! Size
! Name
|-
| 0x0
| 0x130
| Key
|-
| 0x130
| 0x4
| Key generation
|}
 
== GyroscopeOffset ==
This is "nn::settings::factory::GyroscopeOffset". It's size is 0x06 bytes.
 
== GyroscopeScale ==
This is "nn::settings::factory::GyroscopeScale". It's size is 0x06 bytes.
 
== MacAddress ==
This is "nn::settings::factory::MacAddress". It's size is 0x06 bytes.
 
== Rsa2048DeviceCertificate ==
This is "nn::settings::factory::Rsa2048DeviceCertificate". It's size is 0x240 bytes.
 
== Rsa2048DeviceKey ==
This is "nn::settings::factory::Rsa2048DeviceKey". It's size is 0x220 bytes or 0x240 bytes in the extended version.
 
If [[Calibration#CAL0|Calibration Version]] >= 9, this is now:
{| class="wikitable" border="1"
|-
! Offset
! Size
! Name
|-
| 0x0
| 0x240
| Key
|-
| 0x240
| 0x4
| Key generation
|}
 
== SerialNumber ==
This is "nn::settings::factory::SerialNumber". It's size is 0x18 bytes.
 
== SpeakerParameter ==
This is "nn::settings::factory::SpeakerParameter". It's size is 0x5A bytes.
 
== SslCertificate ==
This is "nn::settings::factory::SslCertificate". It's maximum size is 0x804 bytes.
{| class="wikitable" border="1"
|-
! Offset
! Size
! Name
|-
| 0x0
| 0x4
| SSL certificate size
|-
| 0x4
| {above size}
| SSL certificate data
|}
 
== SslKey ==
This is "nn::settings::factory::SslKey". It's size is 0x110 bytes or 0x130 bytes in the extended version.
 
If [[Calibration#CAL0|Calibration Version]] >= 9, this is now:
{| class="wikitable" border="1"
|-
! Offset
! Size
! Name
|-
| 0x0
| 0x130
| Key
|-
| 0x130
| 0x4
| Key generation
|}
|}


This container is used for returning data with variable sizes.
== RegionCode ==
This is "nn::settings::factory::RegionCode". It's size is 0x04 bytes.


= set:sys =
= set:sys =