Byte-exact cereal binary layout, RFC 8439 ChaCha20-Poly1305, RFC 7914 scrypt defaults; tokio transport preserving the original's observable behavior (contract B1-B3, B5 quirks included). Parity evidence: golden C++ vectors in tests/vectors.rs and loopback behavior tests; both cross-directions verified against the unmodified C++ binaries. Source: https://git.0xfeedc0de.com/michael/OmniVox
646 B
646 B
Provenance of the golden vectors in tests/vectors.txt.
Generate with (from a checkout of the original C++ OmniVox tree, which provides common.h, include/, cereal/, asio/, cryptopp/; requires libcryptopp.a and system fmt):
g++ -std=c++20 -O1 -DDEBUG -I<cpp-root> -I<cpp-root>/include \
-I<cpp-root>/cereal/include -I<cpp-root>/asio/include -I<cpp-root>/cryptopp \
$(pkg-config --cflags fmt) reference/cppgen.cpp \
<cpp-root>/cryptopp/libcryptopp.a $(pkg-config --libs fmt) -lpthread
The scrypt derivations take ~1 s and 128 MiB each. Any change to these bytes means the Rust port has regressed against the original.