Reticulum reference symbol inventory (frozen)

Frozen ground-truth enumeration of the wire surfaces in the vendored Python RNS reference. The specification is written against it; the Coverage ledger maps every entry to a section and a proof. To refresh, re-enumerate the source at the pinned commit and diff; a new unclassified symbol is a coverage gap.

Pin

ComponentVersionSubmodule commit
Reticulum (reference/Reticulum)RNS 1.3.5d5e62d4e15c5fe2e170f7bd9e120551671f21a27

Classification key

  • N normative: crosses the wire or is observable by a peer; specified exactly and proven.
  • I informative: internal behaviour an implementation may diverge on.
  • X out of scope: interface drivers beyond framing, daemon/CLI, scaffolding.

Reticulum.py — system constants

SymbolValueLineClass
MTU50093N
MDU464152N
TRUNCATED_HASHLENGTH128145N
HEADER_MINSIZE19147N
HEADER_MAXSIZE35148N
IFAC_MIN_SIZE1149N
IFAC_SALT32-byte hex150N

Cryptography/*

FileSymbol / methodLineClass
Token.pyToken (modified Fernet), TOKEN_OVERHEAD=48, encrypt, decrypt, verify_hmac50,77,87,100N
X25519.pyX25519PrivateKey/PublicKey, generate, exchange126,139N
Ed25519.pyEd25519PrivateKey/PublicKey, sign, verify53,69N
AES.pyAES_128_CBC, AES_256_CBC (16-byte IV, PKCS7)—N
HMAC.pyRFC 2104 HMAC-SHA256, new, digest—N
HKDF.pyhkdf(length, derive_from, salt, context)35N
PKCS7.pyblock size 16 padding—N

Identity.py (980 lines) — class Identity

Constants

SymbolValueLineClass
KEYSIZE51259N
RATCHETSIZE25664N
RATCHET_EXPIRY259200069I
TOKEN_OVERHEAD4877N
HASHLENGTH25680N
SIGLENGTH51281N
NAME_HASH_LENGTH8083N
TRUNCATED_HASHLENGTH12884N
DERIVED_KEY_LENGTH6490N

Methods

MethodLineClass
full_hash / truncated_hash373/383N
get_random_hash393N
_get_ratchet_id / _ratchet_public_bytes / _generate_ratchet417-425N
validate_announce532N
encrypt / decrypt827/872N
sign / validate931/948N
update_hashes / get_public_key / get_private_key808/757/750N
recall / remember—I (resolution)

Destination.py (680 lines) — class Destination

Constants

SymbolValueLineClass
SINGLE/GROUP/PLAIN/LINK0x00-0x0363-66N
PROVE_NONE/APP/ALL0x21-0x2369-71N
IN/OUT0x11/0x1279-80N
RATCHET_COUNT51285I
RATCHET_INTERVAL180090I
PR_TAG_WINDOW3083I

Methods

MethodLineClass
expand_name96N
hash / hash_from_name_and_identity116/141N
announce243N
encrypt / decrypt585/611N

Packet.py (603 lines) — class Packet, PacketReceipt

Constants

SymbolValueLineClass
packet types DATA/ANNOUNCE/LINKREQUEST/PROOF0x00-0x0360-63N
header types HEADER_1/HEADER_20x00/0x0167-68N
context bytes NONE..LRPROOF0x00-0xFF72-92N
FLAG_SET/FLAG_UNSET0x01/0x0095-96N
ENCRYPTED_MDU383106N
PLAIN_MDU=MDU (464)110N
PacketReceipt FAILED/SENT/DELIVERED/CULLED0,1,2,0xFF408-415I
EXPL_LENGTH/IMPL_LENGTH96/64—N (proofs)

Methods

MethodLineClass
get_packed_flags169N
pack / unpack177/242N
get_hashable_part355N
validate_proof_packet / validate_proof443/498N

Constants

SymbolValueLineClass
ECPUBSIZE64—N
KEYSIZE32—N
LINK_MTU_SIZE3—N
MTU_BYTEMASK0x1FFFFF—N
MODE_BYTEMASK0xE0—N
MODE_AES256_CBC0x01—N
states PENDING..CLOSED0x00-0x04—I
KEEPALIVE / STALE_TIME360/720—I

Methods

MethodLineClass
link_id_from_lr_packet / set_link_id340/349N
handshake353N
prove / validate_proof371/396N
signalling_bytes / mtu_from_lp_packet / mode_from_lp_packet148+N
identify459N
send_keepalive848N
get_salt / get_context643/646N
watchdog, RTT scheduling, teardown—I

Context-byte payloads (N)

LRPROOF 0xFF (sig(64)+eph_pub(32)+signalling(3)), LRRTT 0xFE (msgpack float), LINKIDENTIFY 0xFB (pub(32)+sig(64)), LINKCLOSE 0xFC (link_id), KEEPALIVE 0xFA (single byte 0xFF), REQUEST/RESPONSE 0x09/0x0A.

Resource.py (1380 lines) — Resource, ResourceAdvertisement

Constants

SymbolValueLineClass
MAPHASH_LEN4—N
RANDOM_HASH_SIZE4—N
HASHMAP_IS_EXHAUSTED/NOT0xFF/0x00—N
WINDOW*, *_TIMEOUT_FACTOR, MAX_RETRIESvarious—I
OVERHEAD (advertisement)1341235N
status NONE..CORRUPT0x00-0x08—I

Methods

MethodLineClass
ResourceAdvertisement.__init__ / pack / unpack1278/1333N
hashmap_update / request / receive_part—N (wire) / I (scheduling)
prove / validate_proof752/782N
advertise / assemble / window adaptation508/672I

Context bytes RESOURCE 0x01, RESOURCE_ADV 0x02, RESOURCE_REQ 0x03, RESOURCE_HMU 0x04, RESOURCE_PRF 0x05, RESOURCE_ICL 0x06, RESOURCE_RCL 0x07 (Packet.py:73-79) — N.

Channel.py (738 lines) / Buffer.py (371 lines)

SymbolLineClass
Envelope.pack/unpack (>HHH type,seq,len)192/179N
StreamDataMessage header (14-bit id, compressed, eof)Buffer 80-92N
SMT_STREAM_DATA 0xff00, STREAM_ID_MAX 0x3fff, OVERHEAD 8—N
MessageState, CEType enums—I
channel sequencing/retransmission—I

Transport.py (3585 lines) — class Transport

Normative surfaces

SymbolLineClass
transmit (IFAC masking)1051N
inbound (IFAC unmasking)1398N
request_path (path request packet)2771N
path_request_handler / path response (PATH_RESPONSE rebroadcast)2866/2943N

Informative

PATHFINDER_*, AP_PATH_TIME, ROAMING_PATH_TIME, LOCAL_REBROADCASTS_MAX, PATH_REQUEST_* (50-83); the path/announce/link/reverse/tunnel tables and their IDX_* shapes (3547-3586); announce retransmission timing and jitter; dedup; table culling in jobs (508). All I.


Out of scope (X)

Interface drivers under RNS/Interfaces/* beyond the HDLC/KISS framing documented in Framing and IFAC; the daemon/CLI tooling; shared-instance IPC.