Skip to content

jtassarotti/veri-auth

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Logical Relations for Formally Verified Authenticated Data Structures

This repository contains the Rocq and OCaml development accompanying the CCS 2025 submission Logical Relations for Formally Verified Authenticated Data Structures by Simon Oddershede Gregersen, Chaitanya Agarwal, and Joseph Tassarotti.

A high-level overview of the repository and build instructions are found below. PAPER.md provides a detailed mapping from the paper to the OCaml and Rocq developments.

The design of the Authentikit OCaml library is due to Bob Atkey. Our approach to (type) binding found in theories/binding is due to Filip Sieczkowski and Piotr Polesiuk.

Overview

Below is an overview of the most relevant folders and files.

Building the Rocq development

The project is known to compile with

  • Rocq 8.19.2
  • std++ 1.11.0
  • Iris 4.3.0

The recommended way to install the dependencies is through opam.

  1. Install opam if not already installed (a version greater than 2.0 is required).
  2. Install a new switch and link it to the project.
opam switch create auth 4.14.2
opam switch link auth .
  1. Add the Rocq opam repository.
opam repo add rocq-released https://rocq-prover.org/opam/released
opam update
  1. Install the right version of the dependencies as specified in the auth.opam file.
opam install . --deps-only

You should now be able to build the development by using make -j N where N is the number of cores available on your machine.

Building the OCaml development

The project is known to compile with

  • OCaml 4.14.2

The instructions for building the Rocq development will also install OCaml at this version. You should be able to build the development and run the test suite by running make in the src/basic/ folder.

Docker

The development can be build and run using Docker. Suggested commands for building, interacting with, saving, and loading an image are shown below. Note that building the Dockerfile requires the development to be available in the same folder.

Build image

make tar
docker build -t auth .

The build command may need a --platform linux/amd64 option if run on Apple Silicon.

Interactive shell

docker run -i --name auth -t auth

Save image

docker save auth:latest | gzip > docker-auth.tar.gz

Load pre-built image

docker load < docker-auth.tar.gz

Using Authentikit

We provide a few examples of authenticated data structures implemented using Authentikit: merkle.ml, redblack.ml, and trimerkle.ml. Further, we show the usage of the Merkle tree in test.ml.

Running make in the src/basic/ folder generates a binary file test and running ./test will execute the test suite.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •