cpsa: Symbolic cryptographic protocol analyzer

[ bsd3, cryptography, program ] [ Propose Tags ]

The Cryptographic Protocol Shapes Analyzer (CPSA) attempts to enumerate all essentially different executions possible for a cryptographic protocol. We call them the shapes of the protocol. Naturally occurring protocols have only finitely many, indeed very few shapes. Authentication and secrecy properties are easy to determine from them, as are attacks and anomalies.

[Skip to Readme]


Automatic Flags

Enable use of the parallel construct par


Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info


Maintainer's Corner

For package maintainers and hackage trustees


Versions [RSS] 2.0.0, 2.0.2, 2.0.3, 2.0.4, 2.0.5, 2.1.0, 2.1.1, 2.1.2, 2.2.0, 2.2.1, 2.2.2, 2.2.3, 2.2.4, 2.2.5, 2.2.6, 2.2.7, 2.2.8, 2.2.9, 2.2.10, 2.2.11, 2.2.12, 2.2.13, 2.3.0, 2.3.1, 2.3.2, 2.3.3, 2.3.4, 2.3.5, 2.4.0, 2.5.0, 2.5.1, 2.5.2, 2.5.3, 2.5.4, 3.3.0, 3.3.1, 3.3.2, 3.4.0, 3.4.1, 3.5.0, 3.5.1, 3.6.0, 3.6.1, 3.6.2, 3.6.3, 3.6.4, 3.6.5, 3.6.6, 3.6.7, 3.6.8, 3.6.9, 3.6.10, 3.6.11
Change log ChangeLog
Dependencies base (<=, containers, parallel [details]
License BSD-3-Clause
Maintainer ramsdell@mitre.org
Category Cryptography
Uploaded by JohnRamsdell at 2010-03-04T20:46:45Z
Distributions NixOS:3.6.11
Executables cpsapp, cpsaparameters, cpsaannotations, cpsashapes, cpsagraph, cpsa
Downloads 37306 total (64 in the last 30 days)
Rating 2.0 (votes: 1) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs not available [build log]
All reported builds failed as of 2016-12-30 [all 7 reports]

Readme for cpsa-2.0.0

[back to package description]
CPSA: A Crptographic Protocol Shapes Analyzer

This program has been built and tested using the Glasgow Haskell
Compiler (GHC), version 6.10, which is available for Linux, Macs, and
Windows.  The instructions assume GHC has been installed on your

CPSA has been built and tested with GHC 6.8 too, but to handle its old
version of Cabal, configure with:

$ runghc Setup.hs configure -fold --ghc --user --prefix="${HOME}"


: To build and install CPSA type:
$ make
$ make install

: To analyze a protocol in prob.scm type:
$ cpsa -o prob.txt prob.scm
$ cpsagraph -x -o prob.xml prob.txt
$ firefox -remote "openFile(`pwd`/prob.xml)"

: To view the user guide:
$ firefox -remote "openFile($HOME/share/cpsa-X.Y.Z/doc/cpsauser.html)"
: where X.Y.Z is the CPSA version number.


: To build and install CPSA type:
$ make
$ make install

: To analyze a protocol in prob.scm type:
$ cpsa -o prob.txt prob.scm
$ cpsagraph -c -o prob.svg prob.txt
$ open prob.svg

: To view the user guide:
$ open $HOME/share/cpsa-X.Y.Z/doc/cpsauser.html
: where X.Y.Z is the CPSA version number.


The software has been tested on a Windows system on which neither
MinGW or Cygwin has been installed.  Install GHC and then from a
command prompt type:

C:\...> runghc Setup.hs configure
C:\...> runghc Setup.hs build
C:\...> runghc Setup.hs install

If you do not have administrator privileges, configure with:

C:\...> runghc Setup.hs configure --user

The installed programs can be run from the command prompt or via a
batch file.  Alternatively, copy doc/Make.hs into the directory
containing your CPSA problem statements, and load it into a Haskell
interpreter.  Read the source for usage instructions.


The file $HOME/share/cpsa-X.Y.Z/doc/cpsa.mk contains useful GNU Make
rules for inclusion, where X.Y.Z is CPSA version number.

Alternatively, copy the file Make.hs in the same directory into the
directory containing your CPSA problem statements.  The source file
has usage instructions.


By default, CPSA is built so it can make use of multiple processors.
To make use of more than one processor, start CPSA with a runtime flag
that specifies the number of processors to be used, such as "+RTS -N4
-RTS".  The GHC documentation describes the -N option in detail.

If the Control.Parallel library is not installed, configure CPSA using:

$ runghc Setup.hs configure -f-par


To build the documentation, the file supp-pdf.tex must be installed.
It is part of the TexLive texmf ConTeXt package.  On Linux, the name
of the package is context or texlive-context.  The design document and
the specification document require the xy-pic package, which is
included in texlive-pictures.

The documentation includes a user guide as an XHTML document, and
three LaTeX documents.  The CPSA Primer provides the background
required to make effective use of the CPSA tool collection.  For those
interested in the implementation, The CPSA Specification formally
describes the implemented algorithm as a term reduction system.  The
CPSA Design describes implementation details and assumes The CPSA
Specification has been read.  The CPSA Design should be read if one is
interested in reading the Haskell source for the tool collection.


: To run the test suite type:
$ sh cpsatst.sh

Tests with the .scm extension are expected to complete without error,
tests with the .lsp extension are expected to fail, and tests with the
.lisp extension are not run.  New users should read tst/README, and
then browse the files it suggests while reading CPSA documentation.

Don't develop your protocols in the tst directory.  The Makefile is
optimized for testing the cpsa program, not analyzing protocols.


To make CPSA service available:

(1) Install the four programs into the CGI bin directory.

(2) Change directory to the src directory, make cpsacgi, and then copy
cpsacgi and cpsacgi.py into the CGI bin directory.

(3) Copy index.html, ../doc/cpsauser.html, and ../doc/cpsaprimer.pdf
into your choice of the web document directory.

(4) Make an examples directory in the web document directory.

(5) Copy ../tst/*.scm into the examples directory.


You must modify the default policy to allow unconfined executables to
make their heap memory executable, has CPSA is written in Haskell, and
its runtime puts executable code in its heap.  The policy module is in