Line 507:
Line 507:
|}
|}
+
=Approach Contexts=
+
The approach context (in the form of an [[Friend_Services#Encrypted_ApproachContext_Payload|encrypted payload]]) of the console can be retrieved using [[FRDU:GetMyApproachContext]].
+
+
[[Friend_Services#Encrypted_ApproachContext_Payload|Encrypted payloads]] can be decrypted using [[FRDU:DecryptApproachContext]].
+
+
It is possible to add a friend using an [[Friend_Services#Encrypted_ApproachContext_Payload|encrypted payload]] using [[FRDA:AddFriendWithApproach]].
+
+
==ApproachContext==
+
{| class="wikitable" border="1"
+
|-
+
! Offset !! Size !! Description
+
|-
+
| 0x0 || 0x48 || [[Friend_Services#Friend_Profile|Friend Profile]] of the console that created this approach context
+
|-
+
| 0x48 || 0x1 || bool, Has Mii
+
|-
+
| 0x49 || 0x1 || bool, Profanity Flag
+
|-
+
| 0x4A || 0x1 || u8, [[Mii#Mii_format|Mii Character Set]]
+
|-
+
| 0x4B || 0x70 || [[Friend_Services#Mii_Data|Friend Mii Data]] wrapped using [[APT:Wrap]]
+
|-
+
| 0xBB || 0x16 || 10-Character UTF-16 Screen Name (10 characters + null termination)
+
|-
+
| 0xD1 || 0x10F || unused
+
|}
+
+
==Encrypted ApproachContext Payload==
+
+
{| class="wikitable" border="1"
+
|-
+
! Offset !! Size !! Description
+
|-
+
| 0x0 || 0x1 || (u8) unknown, initialized to 1 internally, set to 1 when the PS encryption command succeeds, otherwise 0. Must be 1 when decrypting, otherwise error 0xE0E0C4E9 is returned
+
|-
+
| 0x1 || 0x1 || (u8) unknown, always set to 0
+
|-
+
| 0x2 || 0x1 || (u8) unknown, initialized to 2 internally, always set to either 1 when the PS encryption command succeeds, or otherwise 0. Must be 1 when decrypting, otherwise error 0xE0E0C4E9 is returned
+
|-
+
| 0x3 || 0x1 || (u8) unknown, always set to 0
+
|-
+
| 0x4 || 0x4 || u32, Principal ID (part of nonce)
+
|-
+
| 0x8 || 0x8 || u64, Friend Code (part of nonce)
+
|-
+
| 0x10 || 0x1E0 || [[Friend_Services#ApproachContext|ApproachContext]]
+
|-
+
| 0x1F0 || 0x10 || AES-CCM MAC over the encrypted payload at 0x10 thru 0x1F0
+
|}