Files
rosenpass/marzipan/TODO.md
2025-12-08 16:55:45 +01:00

2.9 KiB

TODO for the project of rewriting Marzipan

Done

  • figure out why ProVerif is started on the non-processed mpv file
  • rework rebound warnings (clean_warnings Bash function)
    rosenpass$ rosenpass-marzipan run-proverif target/proverif/03_identity_hiding_responder.entry.o.pv target/proverif/03_identity_hiding_responder.entry.log
    
  • provide log parameter to rosenpass-marzipan-call (no, it was intentionally not used)
  • cpp pre-processing stuff
  • awk pre-processing stuff
  • pretty_output Bash function
    • pretty_output_line
    • click function intervention weirdness
    • why is everything red in the pretty output? (see line 96 in init.py)
    • awk RESULT flush in marzipan()
    • move the whole metaverif function to Python
  • move the whole analyze function to Python
    • find the files
    • start subprocesses in parallel
    • wait for them to finish
  • rebase from main
  • ~~see if we still need the extra_args is None check in _run_proverif~`
  • set colors differently to prevent injection attack
    • by calling a function
    • by prepared statements
  • standalone function parse_result_line is no longer necessary
  • is the clean function still necessary?
  • implement better main function for click
  • why does analyze fail when the target/proverif directory is not empty?
  • return an exit status that is meaningful for CI
  • exception handling in analyze() and in run_proverif()
  • refactor filtering in run_proverif (see karo's comment)
  • configurable target directory
  • lark parser: multiline comments, how???
  • parse errors
    • error when trying with: nix run .# -- parse ../target/proverif/01_secrecy.entry.i.pv
      • in(C, Cinit_conf(Ssskm, Spsk, Sspkt, ic));
      • ~ ^~
    • 04_dos… has a syntax error (see below)

Next Steps

  • integrate marzipan.awk into Python, somehow
    • options term special cases (c.f. manual page 133, starting with "fun" term)
      • complete with CryptoVerif options
  • rewrite marzipan.awk into Python/LARK
    • define a LARK grammar for marzipan.awk rules
    • write python code for processing marzipan rules, e.g. alias replacement (step: i.pv->o.pv)
  • do not assume that the repo path has subdir marzipan
  • do not assume that the repo path has subdir analysis
  • rewrite cpp into Python/LARK (step: mpv->i.pv)
  • integrate the Nix flake into the main Nix flake
    • pull the gawk dependency into the Nix flake
  • think about next steps
    • integrate this upstream, into the CI?
    • “make it beautiful” steps? more resiliency to working directory?
    • rewrite our awk usages into Python/…?
      • yes, possibly as extension to the LARK grammar
      • and rewrite the AST within Python
      • reconstruct ProVerif input file for ProVerif
    • rewrite our CPP usages into Python/…?
  • low priority: nested comments in ProVerif code

“it replaces the Bash script and is idiomatic Python code”