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.mlAuto-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.mlNew content. OCaml interface for
proscript-messaging/ps/sp.js, plus a few shims for functions that could not be machine translated.proscript-messaging/*.rstNew content. The documentation you are reading now.
proscript-messaging/pscl/pscl.jsUnmodified. Javascript implementation of the ProScript Cryptography Library. This has implementations of SHA256 and other core security primitives.
proscript-messaging/pscl/dirsp_Dirsp_proscript_intf.mlNew 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.mliNew 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.mlNew content. A hand-written OCaml implementation of the ProScript runtime. It mimics
pscl.js.proscript-messaging/ps/sp.jsUnmodified. 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/LICENSEUnmodified. License file from the proscript-messaging team
proscript-messaging/ps2pv/globals.mlUnmodified. Global variables and common utility functions.
proscript-messaging/ps2pv/lexer.mlUnmodified. Lexical instructions for how to create tokens (ex.
BOOL,FUNCTION,FINALLY,IF) from the ProScript dialect of JavaScript.proscript-messaging/ps2pv/ast.mlUnmodified. 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.mlyUnmodified. Instructions for how to produce the AST from the lexer.
proscript-messaging/ps2pv/pretty.mlUnmodified. Pretty-printer of the AST.
proscript-messaging/ps2pv/_tagsUnmodified. Build instructions for the legacy
ocamlbuildtool. 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.mlNew content. Error utility functions to report lexical information (line and column) when there is an error. Similar to the Prosecco team’s
error.mlfile, which is not included in this distribution.proscript-messaging/ps2pv/ast2ocaml.mlproscript-messaging/ps2pv/astpredicates.mlNew content. Translates the AST into OCaml source code. Similar to the Prosecco team’s
pretty.mlfile; both of which walk the AST.proscript-messaging/ps2pv/ast2ocaml_tests.mlNew content. Tests for
ast2ocaml.ml(ex. overflow/underflow compliance).proscript-messaging/ps2pv/dirsp_ps2ocamlcore.mlNew content. Parses source code into AST and translates via
ast2ocaml.mlinto OCaml.proscript-messaging/ps2pv/dirsp_ps2ocaml.mlNew content. A command-line driver. When you run
dirsp-ps2ocaml.exeyou are running this.proscript-messaging/.gitignoreNew content. Which files are ignored for git
proscript-messaging/.ocamlformat,proscript-messaging/.ocamlformat-ignoreNew content. Formatting instructions for new content.
proscript-messaging/debug-parsing.mltNew content. Instructions for
utopto quickly begin a debug session.