#ssh #serialization #parser #serde #message-parser

ssh_format

Data format used to communicate with openssh mux server

9 releases

0.14.1 Oct 18, 2022
0.13.5 Oct 8, 2022
0.12.0 Jan 24, 2022
0.9.1 Dec 28, 2021
0.6.1 Nov 30, 2021

#356 in Encoding

Download history 8290/week @ 2024-07-27 10875/week @ 2024-08-03 11984/week @ 2024-08-10 12892/week @ 2024-08-17 14688/week @ 2024-08-24 12113/week @ 2024-08-31 11826/week @ 2024-09-07 9804/week @ 2024-09-14 12271/week @ 2024-09-21 13201/week @ 2024-09-28 12966/week @ 2024-10-05 12195/week @ 2024-10-12 12284/week @ 2024-10-19 11931/week @ 2024-10-26 11792/week @ 2024-11-02 11388/week @ 2024-11-09

49,361 downloads per month
Used in 17 crates (2 directly)

MIT license

39KB
957 lines

ssh_format

Rust

crate.io downloads

crate.io version

docs

Data format used to communicate with openssh mux server.

Format details:

  • All integers are encoded in big endian;
  • Boolean are encoded as u32 according to here;
  • char are encoded as u32;
  • Strings and bytes are encoded as length(u32) + content, same as sshbuf_put_string;
  • Option::None are omitted while Option::Some(v) has the same encoding as v since openssh mux protocol allows optional parameter at the end of the message;
  • struct/tuple are encoded as-is, unit struct/tuple are omitted;
  • sequence are encoded as if it is a tuple according to here, thus it cannot be deserialized;
  • Variant is encoded as index(u32) + content encoded as-is (it is expected to manually implement Serialize and Deserialize to ensure the variant_index is the one you expected);
  • Serializing/Deserializing map is unsupported;

Feature

  • is_human_readable enables Serializer::is_human_readable and Deserializer::is_human_readable.

Dependencies

~105–375KB