DRD List Get — Group 16, Code 146

Returns the caller’s complete white/black list. Private: lists reveal a user’s social graph, so this command requires the owner’s AN — the same authentication as the write commands. Nobody can read another user’s list.

Quick reference

Command Group16 (DRD)
Command Code146 (0x92)
Server functioncmd_drd_list_get in cmd_drd.c
Request bodyExactly 39 bytes: challenge(16) + DN(1) + SN(4) + AN(16) + terminator(2)
AuthenticationOwner AN — lists are private to their owner
Success responseStatus 250 + count(2) + count × 6-byte entries
Result capServer maximum 1000 entries per request

Request body (39 bytes)

The layout is identical to delete_user: the owner’s PQ and AN, nothing else.

Challenge random (12 bytes, part 1 of 2) 0 7 Challenge random (part 2) 8 11 Challenge CRC32 (BE) 12 15 DN 16 Owner Serial Number (BE) 17 20 AN (part 1 of 3) 21 23 Owner Authenticity Number (part 2 of 3) 24 31 AN (part 3 of 3) 32 36 3E 3E (term) 37 38

Response

The payload is a 2-byte big-endian count followed by that many 6-byte entries, sorted by listed denomination then serial number:

List payload (2 + 6N bytes)

+-----------+---------------------------+---------------------------+-----+
| count     | entry 1                   | entry 2                   | ... |
| 2 (BE)    | LDN(1) LSN(4 BE) TY(1)    | LDN(1) LSN(4 BE) TY(1)    |     |
+-----------+---------------------------+---------------------------+-----+
TY: 00 = whitelisted, 01 = blacklisted
Payload offsetSizeFieldDescription
0–12Entry countBig-endian. 0 with status 250 means the list is empty.
2 + 6i1Listed denominationEntry i.
3 + 6i4Listed serial numberEntry i, big-endian.
7 + 6i1List type0x00 white, 0x01 black.

Status codes

DecimalHexSymbolMeaning
2500xFASTATUS_SUCCESSList returned (possibly empty).
160x10ERROR_INVALID_PACKET_LENGTHBody is not exactly 39 bytes.
400x28ERROR_INVALID_SN_OR_DENOMINATIONDenomination/serial is not a coin this RAIDA holds.
2000xC8ERROR_INVALID_ANAN mismatch — the caller is not the list owner.
2520xFCERROR_INTERNALDatabase failure.
2540xFEERROR_MEMORY_ALLOCServer allocation failure.

Common mistakes

Trying to read someone else’s list

There is no public form of this command. Without the owner’s AN the server returns ERROR_INVALID_AN and reveals nothing — not even whether the list is empty.

Reading the count as one byte

Unlike search_users (1-byte count, capped at 50), list_get uses a 2-byte big-endian count because a list can hold up to 1000 returned entries.