File Structure for Auditing KBB2017¶
Security Engineers and Auditors: Everything that says “Unmodified” is a verbatim copy of the Prosecco source code. The git commit and authenticated timestamps are available in <diskuv-communicator-models>/dirsp-exchange/dirsp_exchange.mli.
kobeissi_bhargavan_blanchet.ml
Auto-generated. This is a ProScript-to-OCaml translation of
proscript-messaging/ps/sp.js
(aka KBB2017). Generated from the dirsp-ps2ocaml.exe program, with auto-formatting by ocamlformat.kobeissi_bhargavan_blanchet_intf.ml
New content. OCaml interface for
proscript-messaging/ps/sp.js
, plus a few shims for functions that could not be machine translated.proscript-messaging/*.rst
New content. The documentation you are reading now.
proscript-messaging/pscl/pscl.js
Unmodified. Javascript implementation of the ProScript Cryptography Library. This has implementations of SHA256 and other core security primitives.
proscript-messaging/pscl/dirsp_Dirsp_proscript_intf.ml
New content. OCaml interface for the ProScript runtime. This is an OCaml reimagining of the Javascript API implicit in
pscl.js
.proscript-messaging/pscl/dirsp_proscript.mli
New content. Just includes the
Dirsp_proscript_intf.ml
. This is a way to share the same interfaces for external use (you!) and internal library use.proscript-messaging/pscl/dirsp_proscript.ml
New content. A hand-written OCaml implementation of the ProScript runtime. It mimics
pscl.js
.proscript-messaging/ps/sp.js
Unmodified. ProScript implementation of what the Prosecco team calls the version 3 of the “Signal Protocol” (X3DH and Double Ratchet). We call it KBB2017.
proscript-messaging/ps2pv/LICENSE
Unmodified. License file from the proscript-messaging team
proscript-messaging/ps2pv/globals.ml
Unmodified. Global variables and common utility functions.
proscript-messaging/ps2pv/lexer.ml
Unmodified. Lexical instructions for how to create tokens (ex.
BOOL
,FUNCTION
,FINALLY
,IF
) from the ProScript dialect of JavaScript.proscript-messaging/ps2pv/ast.ml
Unmodified. The abstract syntax tree of ProScript. The tree contains the relevant details of ProScript that are necessary for recreating a proof with the author’s ProVerif tool; it is not a perfect representation of ProScript. So we need to replace the lossiness (like losing arrays of hexadecimal constants).
proscript-messaging/ps2pv/parser.mly
Unmodified. Instructions for how to produce the AST from the lexer.
proscript-messaging/ps2pv/pretty.ml
Unmodified. Pretty-printer of the AST.
proscript-messaging/ps2pv/_tags
Unmodified. Build instructions for the legacy
ocamlbuild
tool. It allows for building a legacy syntax and parser generators for OCaml calledcamlp4
, which is difficult to build with modern OCaml tooling.proscript-messaging/ps2pv/lexerror.ml
New content. Error utility functions to report lexical information (line and column) when there is an error. Similar to the Prosecco team’s
error.ml
file, which is not included in this distribution.proscript-messaging/ps2pv/ast2ocaml.ml
proscript-messaging/ps2pv/astpredicates.ml
New content. Translates the AST into OCaml source code. Similar to the Prosecco team’s
pretty.ml
file; both of which walk the AST.proscript-messaging/ps2pv/ast2ocaml_tests.ml
New content. Tests for
ast2ocaml.ml
(ex. overflow/underflow compliance).proscript-messaging/ps2pv/dirsp_ps2ocamlcore.ml
New content. Parses source code into AST and translates via
ast2ocaml.ml
into OCaml.proscript-messaging/ps2pv/dirsp_ps2ocaml.ml
New content. A command-line driver. When you run
dirsp-ps2ocaml.exe
you are running this.proscript-messaging/.gitignore
New content. Which files are ignored for git
proscript-messaging/.ocamlformat
,proscript-messaging/.ocamlformat-ignore
New content. Formatting instructions for new content.
proscript-messaging/debug-parsing.mlt
New content. Instructions for
utop
to quickly begin a debug session.