Skip to content
 
 

Latest commit

 

History

1,022 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

VPS

VPS builds verified binary parsers and serializers in Rust and Verus. This repository contains the implementation and evaluation material for the paper.

Paper-to-code guide

Paper section Source code
Design: malleability combinators/choice and combinators/mapped
Design: recursion combinators/recursive/
Formalization and trait system core/spec.rs, core/proof.rs and combinators/
Efficient parser and serializer APIs core/exec/
ASN.1 BER, DER, and CMS case study asn1/, vps-asn1/, and the CMS schema
CBOR case study cbor/
Evaluation evaluation/README.md, RESULTS.md, and generate_eval_plots.py

The TLS and Bitcoin case studies use the existing Vest language. The compiler in vest-dsl-vps/ ports that language to a backend that emits VPS combinators; the language itself is not a contribution. baselines/ contains the original Vest implementation used in the paper's direct comparison.

Test and verify

The project uses cargo verus and the vstd version pinned in each manifest.

cargo test --manifest-path vps-lib/Cargo.toml
cargo test --manifest-path vest-dsl-vps/Cargo.toml
cargo test --manifest-path vps-asn1/Cargo.toml

cd vps-lib
cargo verus verify -- --expand-errors

Generated-code suites can be rebuilt and verified with make generate and make verify in vest-dsl-vps/test/ and vps-asn1/test/.

Reproduce the evaluation

See evaluation/README.md for the short reproduction commands. The large Bitcoin runtime input is not stored here; its checksum and setup instructions are in evaluation/corpora/bitcoin/README.md.

About

High-assurance and performant Rust-based parsing and serialization of binary data formats verified in Verus

Resources

Stars

102 stars

Watchers

7 watching

Forks

Releases

Packages

Used by

Contributors

Languages