High-assurance and performant Rust-based parsing and serialization of binary data formats verified in Verus
Rust
97
1,057 commits
updated Sep 22, 2026
Vest is a framework based on Verus for building verified, secure, and performant parsers and serializers for binary data formats in Rust. A binary data format specifies constraints and inter-dependencies on structured data, as well as how that data is represented in bytes; a parser/serializer implements that specification by mechanically translating between the structured data and its flat byte representation. Binary formats are ubiquitous in networking, data storage, and cryptography, and are often both performance-critical and security-critical.
Vest consists of several core components:
vest_lib, a verified combinator library in Rust for building formats (parsers, serializers, and their data types) compositionally.vest DSL, a domain-specific language for describing formats concisely; and a compiler that automatically generates verified Rust code (leveraging the combinator library vest_lib) from format descriptions in the DSL.vest_asn1, a compiler for ASN.1 schemas that automatically generates verified parsers and serializers (leveraging the verified backend ASN.1 combinators in vest_lib), supporting both Distinguished Encoding Rules (DER) and Basic Encoding Rules (BER).vest_lib combinators) that supports both general and deterministic CBOR.Vest-generated parsers and serializers are provably memory-safe, arithmetically safe, panic-free, and terminating on any input. More importantly, they are guaranteed to satisfy a suite of security properties, making them immune to entire classes of attacks that have historically plagued unverified, hand-written code.
Vest is a research tool under active development. The DSL and ASN.1 frontend are not by themselves verified and could contain bugs. Some language and format features are still unsupported, and APIs may change. The language reference and ASN.1 support table document current limitations. Each Vest release pins its compatible Verus release.
Vest 2.0 is a substantial redesign. Existing users should read the migration guide before upgrading.
vest_lib documentation describes the nitty-gritty (spec, proof, and exec) of Vest's trait system, format combinators, the reasoning principles, etc.vest_dev/src/formats contains example formats written directly with vest_lib combinators, including mapped formats, dependent formats, and recursive formats.Please report vest_lib issues and DSL/ASN.1 compiler bugs through GitHub Issues. For questions, help, or design discussions, join the Verus Zulip and mention Vest in the topic or message.
Vest was introduced in “Vest: Verified, Secure, High-Performance Parsing and Serialization for Rust” at the 2025 USENIX Security Symposium.
@inproceedings {vest,
author = {Yi Cai and Pratap Singh and Zhengyao Lin and Jay Bosamiya and Joshua Gancher and Milijana Surbatovich and Bryan Parno},
title = {{Vest}: Verified, Secure, {High-Performance} Parsing and Serialization for Rust},
booktitle = {34th USENIX Security Symposium (USENIX Security 25)},
year = {2025},
isbn = {978-1-939133-52-6},
address = {Seattle, WA},
pages = {6917--6935},
url = {https://www.usenix.org/conference/usenixsecurity25/presentation/cai-yi},
publisher = {USENIX Association},
month = aug
}
Vest is available under the MIT License.
Rust
99.5%
High-assurance and performant Rust-based parsing and serialization of binary data formats verified in Verus
Rust
97
1,057 commits
updated Sep 22, 2026
Vest is a framework based on Verus for building verified, secure, and performant parsers and serializers for binary data formats in Rust. A binary data format specifies constraints and inter-dependencies on structured data, as well as how that data is represented in bytes; a parser/serializer implements that specification by mechanically translating between the structured data and its flat byte representation. Binary formats are ubiquitous in networking, data storage, and cryptography, and are often both performance-critical and security-critical.
Vest consists of several core components:
vest_lib, a verified combinator library in Rust for building formats (parsers, serializers, and their data types) compositionally.vest DSL, a domain-specific language for describing formats concisely; and a compiler that automatically generates verified Rust code (leveraging the combinator library vest_lib) from format descriptions in the DSL.vest_asn1, a compiler for ASN.1 schemas that automatically generates verified parsers and serializers (leveraging the verified backend ASN.1 combinators in vest_lib), supporting both Distinguished Encoding Rules (DER) and Basic Encoding Rules (BER).vest_lib combinators) that supports both general and deterministic CBOR.Vest-generated parsers and serializers are provably memory-safe, arithmetically safe, panic-free, and terminating on any input. More importantly, they are guaranteed to satisfy a suite of security properties, making them immune to entire classes of attacks that have historically plagued unverified, hand-written code.
Vest is a research tool under active development. The DSL and ASN.1 frontend are not by themselves verified and could contain bugs. Some language and format features are still unsupported, and APIs may change. The language reference and ASN.1 support table document current limitations. Each Vest release pins its compatible Verus release.
Vest 2.0 is a substantial redesign. Existing users should read the migration guide before upgrading.
vest_lib documentation describes the nitty-gritty (spec, proof, and exec) of Vest's trait system, format combinators, the reasoning principles, etc.vest_dev/src/formats contains example formats written directly with vest_lib combinators, including mapped formats, dependent formats, and recursive formats.Please report vest_lib issues and DSL/ASN.1 compiler bugs through GitHub Issues. For questions, help, or design discussions, join the Verus Zulip and mention Vest in the topic or message.
Vest was introduced in “Vest: Verified, Secure, High-Performance Parsing and Serialization for Rust” at the 2025 USENIX Security Symposium.
@inproceedings {vest,
author = {Yi Cai and Pratap Singh and Zhengyao Lin and Jay Bosamiya and Joshua Gancher and Milijana Surbatovich and Bryan Parno},
title = {{Vest}: Verified, Secure, {High-Performance} Parsing and Serialization for Rust},
booktitle = {34th USENIX Security Symposium (USENIX Security 25)},
year = {2025},
isbn = {978-1-939133-52-6},
address = {Seattle, WA},
pages = {6917--6935},
url = {https://www.usenix.org/conference/usenixsecurity25/presentation/cai-yi},
publisher = {USENIX Association},
month = aug
}
Vest is available under the MIT License.
Rust
99.5%