Difference between revisions of "Friend Services"

From 3dbrew
Jump to navigation Jump to search
(Add FriendInfo structure)
(Update friend presence structure)
Line 327: Line 327:
 
| 0x14
 
| 0x14
 
| u8 ApplicationArg[20]
 
| u8 ApplicationArg[20]
|-
 
| 0x2C
 
| 0x100
 
| u16 GameModeDescription[128]
 
 
|}
 
|}
  

Revision as of 13:21, 14 December 2024

Friend Service "frd:u"

Command Header Description
0x00010000 HasLoggedIn
0x00020000 IsOnline
0x00030002 Login
0x00040000 Logout
0x00050000 GetMyFriendKey
0x00060000 GetMyPreference
0x00070000 GetMyProfile
0x00080000 GetMyPresence
0x00090000 GetMyScreenName
0x000A0000 GetMyMii
0x000B0000 GetMyLocalAccountId
0x000C0000 GetMyPlayingGame
0x000D0000 GetMyFavoriteGame
0x000E0000 GetMyNcPrincipalId
0x000F0000 GetMyComment
0x00100040 GetMyPassword
0x00110080 GetFriendKeyList
0x00120042 GetFriendPresence
0x00130142 GetFriendScreenName
0x00140044 GetFriendMii
0x00150042 GetFriendProfile
0x00160042 GetFriendRelationship
0x00170042 GetFriendAttributeFlags
0x00180044 GetFriendPlayingGame
0x00190042 GetFriendFavoriteGame
0x001A00C4 GetFriendInfo
0x001B0080 IsIncludedInFriendList
0x001C0042 UnscrambleLocalFriendCode
0x001D0002 UpdateGameModeDescription
0x001E02C2 UpdateGameMode
0x001F0042 SendInvitation
0x00200002 AttachToEventNotification
0x00210040 SetNotificationMask
0x00220040 GetEventNotification
0x00230000 GetLastResponseResult
0x00240040 PrincipalIdToFriendCode
0x00250080 FriendCodeToPrincipalId
0x00260080 IsValidFriendCode
0x00270040 ResultToErrorCode
0x00280244 RequestGameAuthentication
0x00290000 GetGameAuthenticationData
0x002A0204 RequestServiceLocator
0x002B0000 GetServiceLocatorData
0x002C0002 DetectNatProperties
0x002D0000 GetNatProperties
0x002E0000 GetServerTimeInterval
0x002F0040 AllowHalfAwake
0x00300000 GetServerTypes
0x00310082 GetFriendComment
0x00320042 SetClientSdkVersion
0x00330000 GetMyApproachContext
0x00340046 AddFriendWithApproach
0x00350082 DecryptApproachContext
0x00360000 GetExtendedNatProperties

"frd:n"

Command Header Description
0x00010000 GetHandleOfNdmStatusChangedEvent
0x00020000 Resume
0x00030040 SuspendAsync
0x00040000 QueryStatus

"frd:a"

This contains a similar (probably the same) command handler from 0x0001.... to 0x002F.... as them in frd:u. In addition, it also contains

Command Header Description
0x04010100 CreateLocalAccount
0x04020040 ?
0x04030040 SetLocalAccountId
0x04040000 ?
0x04050000 Used in creating the user Mii. No cmdbuff parameters.
0x04060042 AddFriendOnline
0x04070D80 AddFriendOffline
0x040802C0 ?
0x04090100 RemoveFriend
0x040A0100 UpdatePlayingGame
0x040B00C0 UpdatePreferences
0x040C0800 UpdateMii
0x040D0100 UpdateFavoriteGame
0x040E0040 UpdateNcPrincipalId
0x040F... UpdateComment
0x04100000 ?

HTTPS Requests

Trusted RootCAs

No RootCertChain(s) are used. For the nasc site, friends-module uses HTTPC:AddDefaultCert with the following certIDs: 0x1, 0x2, and 0x3.

Types

FriendKey

Offset Size Description
0x0 0x4 Principal ID
0x4 0x4 padding
0x8 0x8 Friend Code

GameKey

Offset Size Description
0x0 0x8 u64, Title ID
0x8 0x2 u16, Title Version
0xA 0x6 Unused padding.

Presence

Offset Size Description
0x0 0x4 u32 JoinAvailabilityFlag
0x4 0x4 u32 MatchmakeSystemType
0x8 0x4 u32 JoinGameID
0xC 0x4 u32 JoinGameMode
0x10 0x4 u32 OwnerPrincipalID
0x14 0x4 u32 JoinGroupID
0x18 0x14 u8 ApplicationArg[20]

Mii Data

Offset Size Description
0x0 0x1 bool, ProfanityFlag
0x1 0x1 Mii character set
0x2 0x1 bool, DirtyFlag
0x3 0x1 padding
0x4 0x5C Mii data

Profile

Offset Size Description
0x0 0x1 u8, Region
0x1 0x1 u8, Country
0x2 0x1 u8, Area
0x3 0x1 u8, Language
0x4 0x1 u8, Platform, always 2 (PLATFORM_CTR)
0x5 0x3 padding

FriendProfile

Offset Size Description
0x0 0x8 Profile
0x8 0x10 GameKey of favorite game
0x18 0x4 u32, NcPrincipalID
0x1C 0x22 16-Character UTF-16 Personal Message (16 characters + null termination)
0x3E 0x2 padding
0x40 0x8 NEX Timestamp when this friend was last seen online

FriendInfo

Offset Size Description
0x0 0x10 FriendKey of this friend
0x10 0x8 NEX Timestamp when this friend was added to the friends list
0x18 0x1 The relationship with this friend
0x19 0x7 padding
0x20 0x48 FriendProfile of this friend
0x68 0x16 10-Character UTF-16 Screen Name (10 characters + null termination)
0x7E 0x1 u8, Mii character set
0x7F 0x1 padding
0x80 0x60 This friend's Mii


Relationship Types

Every valid entry in the internal friends list contains a relationship field.

Value Description
0 The target has been added locally and on the server, but is only "provisionally registered." The target has not added you as a friend.
1 The target has been added locally and on the server and is fully registered: the target has also added you as a friend.
2 No relationship between you and the target has been found: neither you nor the target have added each other.
3 The relationship has been deleted: the target has deleted your friend card.
4 The target has been added locally: you were not online when you added the target. (presumably only happens when the "Local" method of adding a friend is used. When the system connects to the internet, a background task runs to register this relationship on the friends server.)

Attribute Flags

Flag Description
0x1 Unknown (something like "target ever registered you"?), set when relationship type is 1, 3 or 4
0x2 Unknown, set only when relationship type is 1

Server Types

The server type is stored internally as a combination of two values, the first value represents the server type letter and the second value is the number that follows it. For example, the production server type is "L1", so the first value is 0 and the second value is 1.

Official servers only support the letters L, C, S, D, I, T, J or U.

Value Server Type Letter
0 L
1 C
2 S
3 D
4 I
5 T
6 U (fallback to default value)
7 J
8 X
9 A
10 B
11 C
12 D
13 E
14 F
15 G
16 H
17 I
18 J
19 K
20 L
21 M
22 N
23 O
24 P
25 Q
>=26 U