aboutsummaryrefslogtreecommitdiff
path: root/README.md
blob: 9e8c3e94915f3a2b41cbc53c5bdbffe841ac1b6a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# 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.

© 2015 - 2026 Jakob L. Kreuze