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 /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 called ``camlp4``, 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.