ACT Services: Difference between revisions
DaniElectra (talk | contribs) Add more ACT commands |
DaniElectra (talk | contribs) Move data blocks to main page of ACT |
||
Line 1: | Line 1: | ||
[[Category:Services]] | [[Category:Services]] | ||
The ACT module handles NNID accounts. | The ACT module handles NNID accounts. This module behaves very similarly to the [https://github.com/devkitPro/wut/blob/master/cafe/nn_act.def Wii U] implementation (nn::act) | ||
= ACT service "act:u" = | = ACT service "act:u" = | ||
Line 363: | Line 363: | ||
This is the service used by regular applications. | This is the service used by regular applications. | ||
=HTTPS Requests= | = Account slots = | ||
Like the friends sysmodule, the ACT module supports multiple accounts internally, although this functionality is not exposed to the users. Unlike the Wii U which supports up to 12 accounts, the 3DS only has 8 account slots. | |||
Some commands require require the account slot as an argument, which is 1-indexed. The value for using the current loaded account is 0xFE. | |||
= DataBlocks = | |||
Data blocks can be accessed from specific commands depending on the data that is requested. These follow a similar order to the Wii U [https://github.com/decaf-emu/decaf-emu/blob/master/src/libdecaf/src/nn/act/nn_act_enum.h ACTInfoTypes]. | |||
{| class="wikitable" border="1" | |||
|- | |||
! BlkID | |||
! Size | |||
! Command needed | |||
! Description | |||
|- | |||
| 0x1 | |||
| 0x1 | |||
| [[ACTU:GetCommonInfo|GetCommonInfo]] | |||
| Number of accounts | |||
|- | |||
| 0x2 | |||
| 0x1 | |||
| [[ACTU:GetCommonInfo|GetCommonInfo]] | |||
| Current account slot | |||
|- | |||
| 0x3 | |||
| 0x1 | |||
| [[ACTU:GetCommonInfo|GetCommonInfo]] | |||
| Default account slot | |||
|- | |||
| 0x4 | |||
| 0x8 | |||
| [[ACTU:GetCommonInfo|GetCommonInfo]] | |||
| ? | |||
|- | |||
| 0x5 | |||
| 0x4 | |||
| [[ACTU:GetAccountDataBlock|GetAccountInfo]] | |||
| PersistentId | |||
|- | |||
| 0x6 | |||
| 0x8 | |||
| [[ACTU:GetCommonInfo|GetCommonInfo]]/[[ACTU:GetAccountDataBlock|GetAccountInfo]] | |||
| CommonTransferableIdBase on GetCommonInfo / TransferableIdBase on GetAccountInfo | |||
|- | |||
| 0x7 | |||
| 0x60 | |||
| [[ACTU:GetAccountDataBlock|GetAccountInfo]] | |||
| [[Mii#Mii_format|MiiData]] | |||
|- | |||
| 0x8 | |||
| 0x11 | |||
| [[ACTU:GetAccountDataBlock|GetAccountInfo]] | |||
| AccountId (ASCII NUL-terminated Nintendo Network ID) | |||
|- | |||
| 0x9 | |||
| 0x101 | |||
| AcquireAccountInfo | |||
| Mail address | |||
|- | |||
| 0xA | |||
| 0x4 | |||
| [[ACTU:GetAccountDataBlock|GetAccountInfo]] | |||
| Birthday {u16 year; u8 month; u8 day;} | |||
|- | |||
| 0xB | |||
| 0x3 | |||
| [[ACTU:GetAccountDataBlock|GetAccountInfo]] | |||
| ASCII NUL-terminated Country Name | |||
|- | |||
| 0xC | |||
| 0x4 | |||
| [[ACTU:GetAccountDataBlock|GetAccountInfo]] | |||
| PrincipalId | |||
|- | |||
| 0xE | |||
| 0x1 | |||
| [[ACTU:GetAccountDataBlock|GetAccountInfo]] | |||
| IsPasswordCacheEnabled | |||
|- | |||
| 0xF | |||
| 0x1 | |||
| [[ACTU:GetAccountDataBlock|GetAccountInfo]] | |||
| ? | |||
|- | |||
| 0x11 | |||
| 0xA0 | |||
| [[ACTU:GetAccountDataBlock|GetAccountInfo]] | |||
| struct{u32 PersistentID; u32 padding; u64 TransferableIDBase; u8[0x60] MiiData; char16_t[0xB] MachinUserName?; char[0x11] AccountID; u8 padding; struct{u16 year; u8 month; u8 day;}Birthday; u32 PrincipalID;} | |||
|- | |||
| 0x12 | |||
| 0x4 | |||
| [[ACTU:GetAccountDataBlock|GetAccountInfo]] | |||
| ? | |||
|- | |||
| 0x13 | |||
| 0x1 | |||
| [[ACTU:GetAccountDataBlock|GetAccountInfo]] | |||
| Gender | |||
|- | |||
| 0x14 | |||
| 0x1 | |||
| [[ACTU:GetAccountDataBlock|GetAccountInfo]] | |||
| ? | |||
|- | |||
| 0x15 | |||
| 0x11 | |||
| [[ACTU:GetAccountDataBlock|GetAccountInfo]] | |||
| AssignedAccountId (ASCII NUL-terminated Nintendo Network ID) | |||
|- | |||
| 0x16 | |||
| 0x1 | |||
| [[ACTU:GetAccountDataBlock|GetAccountInfo]] | |||
| ParentalControlSlotNo | |||
|- | |||
| 0x17 | |||
| 0x4 | |||
| [[ACTU:GetAccountDataBlock|GetAccountInfo]] | |||
| SimpleAddressId? ([[Config_Savegame#CountryInfo|CountryInfo]]) | |||
|- | |||
| 0x19 | |||
| 0x8 | |||
| [[ACTU:GetAccountDataBlock|GetAccountInfo]] | |||
| UtcOffset | |||
|- | |||
| 0x1A | |||
| 0x1 | |||
| [[ACTU:GetAccountDataBlock|GetAccountInfo]] | |||
| ? | |||
|- | |||
| 0x1B | |||
| 0x16 | |||
| [[ACTU:GetAccountDataBlock|GetAccountInfo]] | |||
| MiiName (NUL-terminated UTF-16 Mii name) | |||
|- | |||
| 0x1C | |||
| 0x11 | |||
| [[ACTU:GetAccountDataBlock|GetAccountInfo]] | |||
| AccountId? (ASCII NUL-terminated Nintendo Network ID) | |||
|- | |||
| 0x1D | |||
| 0x1 | |||
| [[ACTU:GetAccountDataBlock|GetAccountInfo]] | |||
| ? | |||
|- | |||
| 0x1E | |||
| 0x41 | |||
| [[ACTU:GetAccountDataBlock|GetAccountInfo]] | |||
| TimeZoneId (ASCII Time Zone Location) | |||
|- | |||
| 0x1F | |||
| 0x1 | |||
| [[ACTU:GetAccountDataBlock|GetAccountInfo]] | |||
| ? | |||
|- | |||
| 0x20 | |||
| 0x1 | |||
| [[ACTU:GetAccountDataBlock|GetAccountInfo]] | |||
| IsMailAddressValidated | |||
|- | |||
| 0x21 | |||
| 0x4C | |||
| [[ACTU:GetAccountDataBlock|GetAccountInfo]] | |||
| ? | |||
|- | |||
| 0x24 | |||
| 0x1 | |||
| [[ACTU:GetAccountDataBlock|GetAccountInfo]] | |||
| ? | |||
|- | |||
| 0x25 | |||
| 0x101 | |||
| [[ACTU:GetAccountDataBlock|GetAccountInfo]] | |||
| MiiImageUrl (ASCII NUL-terminated URL to account mii image) | |||
|- | |||
| 0x26 | |||
| 0x4 | |||
| [[ACTU:GetAccountDataBlock|GetAccountInfo]] | |||
| AssignedPrincipalId | |||
|- | |||
| 0x27 | |||
| 0x4 | |||
| [[ACTU:GetAccountDataBlock|GetAccountInfo]] | |||
| ? (Only accessible with param[1] = 0xFE) | |||
|- | |||
| 0x28 | |||
| 0x24 | |||
| [[ACTU:GetAccountDataBlock|GetAccountInfo]] | |||
| struct{char[0x21] NnasSubDomain?; char[0x3] NnasNfsEnv;} | |||
|- | |||
| 0x29 | |||
| 0x24 | |||
| [[ACTU:GetCommonInfo|GetCommonInfo]] | |||
| struct{char[0x21] DefaultNnasSubDomain?; char[0x3] DefaultNnasNfsEnv;} | |||
|- | |||
| 0x2A | |||
| 0x8 | |||
| [[ACTU:GetCommonInfo|GetCommonInfo]] | |||
| ? | |||
|- | |||
| 0x2B | |||
| 0x1 | |||
| [[ACTU:GetAccountDataBlock|GetAccountInfo]] | |||
| FpLocalAccountId | |||
|- | |||
| 0x2C | |||
| 0x2 | |||
| [[ACTU:GetAccountDataBlock|GetAccountInfo]] | |||
| Age | |||
|- | |||
| 0x2D | |||
| 0x1 | |||
| [[ACTU:GetAccountDataBlock|GetAccountInfo]] | |||
| IsEnabledReceiveAds | |||
|- | |||
| 0x2E | |||
| 0x1 | |||
| [[ACTU:GetAccountDataBlock|GetAccountInfo]] | |||
| IsOffDeviceAccessEnabled | |||
|- | |||
| 0x2F | |||
| 0x4 | |||
| [[ACTU:GetAccountDataBlock|GetAccountInfo]] | |||
| SimpleAddressId ([[Config_Savegame#CountryInfo|CountryInfo]]) | |||
|} | |||
= HTTPS Requests = | |||
With each request, ACT-sysmodule specifies request-header "X-Nintendo-Device-Model". This is the only *dedicated* request-header that's contains anything Old3DS/New3DS specific. This was implemented with [[9.0.0-20|9.0.0-X]], and presumably [[8.1.0-0_New3DS]]. The value is from a string initialized during ACT-sysmodule startup. The value-string is the [[Cfg:GetSystemModel|codename]] string for all 5 of the model values from [[Cfg:GetSystemModel]]. When the output from GetSystemModel is >=5(switch statement default case), it runs this: "len = snprintf(outstr, outmaxsize, "3DS-%u", model);" | With each request, ACT-sysmodule specifies request-header "X-Nintendo-Device-Model". This is the only *dedicated* request-header that's contains anything Old3DS/New3DS specific. This was implemented with [[9.0.0-20|9.0.0-X]], and presumably [[8.1.0-0_New3DS]]. The value is from a string initialized during ACT-sysmodule startup. The value-string is the [[Cfg:GetSystemModel|codename]] string for all 5 of the model values from [[Cfg:GetSystemModel]]. When the output from GetSystemModel is >=5(switch statement default case), it runs this: "len = snprintf(outstr, outmaxsize, "3DS-%u", model);" | ||
==Trusted Root CAs== | == Trusted Root CAs == | ||
ACT module uses a [[HTTP_Services|RootCertChain]] for all HTTPS requests, the only trusted root CA is [[SSLC:RootCertChainAddDefaultCert|default]] CertID 0x3. | ACT module uses a [[HTTP_Services|RootCertChain]] for all HTTPS requests, the only trusted root CA is [[SSLC:RootCertChainAddDefaultCert|default]] CertID 0x3. | ||
=New3DS= | = New3DS = | ||
Even though ACT-sysmodule uses [[PTM_Services|ptm:s]], it doesn't use CheckNew3DS at all. | Even though ACT-sysmodule uses [[PTM_Services|ptm:s]], it doesn't use CheckNew3DS at all. |