LDN services: Difference between revisions
Line 1,857: | Line 1,857: | ||
| 0x2C || 0x4 || Unused | | 0x2C || 0x4 || Unused | ||
|} | |} | ||
=== ActionFrame2 === | |||
The Action frames used by [[#RecvActionFrame|RecvActionFrame]] have the following structure: | |||
* "Fixed parameters": | |||
** "Category code: Vendor Specific (127)" | |||
** "OUI: 00:22:aa (Nintendo Co., Ltd.)" | |||
* The Data starts with the following header: | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |||
| 0x0 || 0x2 || 04 00 | |||
|- | |||
| 0x2 || 0x2 || Protocol ID, must match big-endian 0x0102. | |||
|- | |||
| 0x4 || 0x2 || | |||
|- | |||
| 0x6 || 0x2 || | |||
|} | |||
Then the actual data follows (all fields big-endian): | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |||
| 0x0 || 0x1 || [[#AuthVersion]] | |||
|- | |||
| 0x1 || 0x1 || EncryptionType, must match the expected type for the current SecurityMode. 1 = plaintext, 2 = AES-128-GCM. | |||
|- | |||
| 0x2 || 0x2 || Padding | |||
|- | |||
| 0x4 || 0x4 || Counter | |||
|- | |||
| 0x8 || 0x8 || LocalCommunicationId | |||
|- | |||
| 0x10 || 0x10 || Used with key derivation. | |||
|- | |||
| 0x20 || 0x10 || EncryptionType2: AES-128-GCM MAC tag. | |||
|- | |||
| 0x30 || Remaining frame size || Data payload | |||
|} | |||
The 0xC-byte IV for AES-128-GCM is the raw 4-bytes from the above Counter, with the rest cleared to zeroes. The encrypted data is at +0x30, with the remaining frame size. The AAD is the 0x20-bytes at +0x0. | |||
== lp2p == | == lp2p == |