rego-proofs
This repository contains the supporting materials for "Software Verification Techniques for Analyzing Access Control Policies".
An Embedding of eXtensible Access Control Markup Language
The source code for the compiler is in the xacml-proofs/compiler/ directory.
It is a standard OCaml Dune project and can be built with dune build.
main corresponds to the compiler for XACML policies, and request corresponds to the compiler for XACML requests.
The Lean project encoding the semantics of XACML is in the xacml-proofs/lean/ directory.
An Embedding of the Rego Language
The source code for the compiler is in the rego-proofs/compiler/ directory.
It is a standard OCaml Dune project and can be built with dune build.
The Lean project encoding the semantics of XACML is in the rego-proofs/Rego/ directory.
Case Study: Policy Equivalence
The proofs described in this section are lines 179 to 613 in rego-proofs/Rego/Rego.lean.
Case Study: Property Checking
The proofs described in this section are lines 1291 to 2316 in xacml-proofs/lean/Xacml.lean.
Case Study: Performance of XACML 3.0 Implementations
The supporting code for result collection is in the benchmarks/ directory.
We used the following command to run the benchmarks:
hyperfine --export-json=[...] "bash authzforce-harness.bash $BENCHMARK" "bash lean-harness.bash $BENCHMARK" "bash rego-harness.bash $BENCHMARK"
where $BENCHMARK is the path of the particular test in the xacml-3.0-from-2.0-ct conformance suite.