Skip to content

AndrewPiroli/tacp_rs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

132 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

An implementations of the TACACS+ Protocol in Rust.

Current status: BETA

Not recommended for production use (yet).

My style is to avoid external dependencies when reasonable, I am not afraid of nightly features or using unsafe.

Main crate: tacp

Contains the protocol definitions, a zero-copy parser/decoder, and an experimental encoder. no_std always, but does require alloc and a nightly compiler.

RFC Compliance Status: Very Good - All definitions are in place, the treatment of string values is left to the implementer, I may add a helper for this in the final release.

ROADMAP:

  • Cool name
  • Basic Protocol Implementation
    • Packet parsing
      • "Encryption"
      • Authentication
      • Authorization
      • Accounting
    • Full RFC compliance
  • Documentation
    • RFC info in comments
    • Make doc comments nice
  • Polish things
    • Errors (handling, reporting)
    • Don't crash
    • Custom Allocator Support
    • "Zero-copy" parser
  • Security
    • Usage of unsafe
    • Direct fuzzing
    • Use miri
  • Testing
    • Basic testing implementation
    • Use or develop some kind of framework to organize testing
    • Test against 3rd party systems

Testing infrastructure

tserver - Basic testing server

A TACACS+ server with enough features to test most client operations.

tclient - Basic testing client

A basic TACACS+ client that can make requests to a server.

ttest - A WIP testing system

Current features:

  • runs the test client and server against each other.
  • Reads pcap files from the pcap directory and ensures all TACACS+ packets within can be parsed.
  • Supports running under miri with a reduced set of tests

Other projects we can test interop with in the future: