{"id":19260476,"url":"https://github.com/mitre/oldcpsa","last_synced_at":"2026-06-30T00:30:15.033Z","repository":{"id":60785216,"uuid":"96922907","full_name":"mitre/oldcpsa","owner":"mitre","description":"Cryptographic Protocol Shapes Analyzer","archived":false,"fork":false,"pushed_at":"2022-10-04T14:42:07.000Z","size":22476,"stargazers_count":36,"open_issues_count":0,"forks_count":5,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-01-05T09:43:35.759Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Scilab","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mitre.png","metadata":{"files":{"readme":"README.txt","changelog":"ChangeLog","contributing":null,"funding":null,"license":"license.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-07-11T18:12:14.000Z","updated_at":"2024-01-10T20:47:26.000Z","dependencies_parsed_at":"2022-10-04T22:25:29.416Z","dependency_job_id":null,"html_url":"https://github.com/mitre/oldcpsa","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mitre%2Foldcpsa","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mitre%2Foldcpsa/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mitre%2Foldcpsa/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mitre%2Foldcpsa/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mitre","download_url":"https://codeload.github.com/mitre/oldcpsa/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240357213,"owners_count":19788678,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-09T19:21:14.581Z","updated_at":"2026-06-30T00:30:14.963Z","avatar_url":"https://github.com/mitre.png","language":"Scilab","funding_links":[],"categories":[],"sub_categories":[],"readme":"CPSA: Crptographic Protocol Shapes Analyzer Version 3\n\nThe Cryptographic Protocol Shapes Analyzer (CPSA), is a software tool\ndesigned to assist in the design and analysis of cryptographic\nprotocols.  A cryptographic protocol is a specific pattern of\ninteraction between principals.  TLS and IKE are some examples of\nwell-known cryptographic protocols.\n\nCPSA attempts to enumerate all essentially different executions\npossible for a cryptographic protocol.  We call them the shapes of the\nprotocol.  Many naturally occurring protocols have only finitely many,\nindeed very few shapes.  Authentication and secrecy properties are\neasy to determine from them, as are attacks and anomalies, and an\nauxiliary tool reads off strongest authentication and secrecy goals\nfrom the shapes.\n\nFor each input problem, the CPSA program is given some initial\nbehavior, and it discovers what shapes are compatible with it.\nNormally, the initial behavior is from the point of view of one\nparticipant.  The analysis reveals what the other participants must\nhave done, given the participant's view.\n\nCPSA version 3 features support for Diffie-Hellman and state.  The\nmanual in \u003cdoc/cpsamanual.pdf\u003e provides a comprehensive description of\nthe program.\n\nCPSA: Cryptographic Protocol Shapes Analyzer\n\nThis program has been built and tested using Haskell Platform.\nIt is available from \u003chttp://haskell.org\u003e or from an operating\nsystem specific source.  The name of the Linux package is usually\nhaskell-platform.\n\nIf the Internet is available, install CPSA with:\n\n$ cabal update\n$ cabal install cpsa\n\nFind the documentation directory by typing \"cpsa -h\" in a command\nshell, and view index.html in a browser.\n\nINSTALLING FROM A TARBALL\n\nBuild and install with:\n\n$ cabal build\n$ cabal install --overwrite-policy=always\n: To find the directory containing documentation and samples, type:\n$ cpsa4 -h\n\nQUICK START (Linux)\n\n: To analyze a protocol you have put in prob.scm type:\n$ cpsa -o prob.txt prob.scm\n$ cpsagraph -o prob.xhtml prob.txt\n$ firefox -remote \"openFile(`pwd`/prob.xhtml)\"\n\nQUICK START (Mac)\n\n: To analyze a protocol you have put in prob.scm type:\n$ cpsa -o prob.txt prob.scm\n$ cpsagraph -o prob.xhtml prob.txt\n$ open prob.xhtml\n\nQUICK START (Windows)\n\nWith Cygwin or MinGW, the installation is similar to the Linux\ninstall.  The software has been tested on a Windows system on which\nneither MinGW or Cygwin has been installed.  Install Haskell Platform\nCore and then run:\n\nC:\\...\u003e cabal update\nC:\\...\u003e cabal install parallel\nC:\\...\u003e cabal build\nC:\\...\u003e cabal install --overwrite-policy=always\n\nDocumentation and samples are in the directory given by\nC:\\...\u003e cpsa -h\n\nThe installed programs can be run from the command prompt or via a\nbatch file.  Alternatively, copy doc/Make.hs into the directory\ncontaining your CPSA problem statements, and load it into a Haskell\ninterpreter.  Read the source for usage instructions.\n\nMAKEFILE\n\nTo start your own project, create a fresh directory and then type:\n\n$ cpsainit\n\nThis will create a Makefile that automates the analysis process.  For\nWindows, it will also create Make4.hs, a cpsa build script written in\nHaskell.\n\nPARALLELISM\n\nCPSA is built so it can make use of multiple processors.  To make use\nof more than one processor, start CPSA with the -N runtime flag, as in\n\"+RTS -N -RTS\".  The GHC documentation describes the -N option in\ndetail.\n\nTEST SUITE\n\nCabal currently fails to preserve permissions correctly.  To fix this\nproblem, type:\n\n$ /bin/sh fixperms\n\n: To run the test suite type:\n$ ./cpsatst\n\nTests with the .scm extension and .prot extension are expected to\ncomplete without error, tests with the .lsp extension are expected to\nfail, and tests with the .lisp extension are not run.  New users\nshould read tst/README, and then browse the files it suggests while\nreading CPSA documentation.\n\nDon't develop your protocols in the tst directory.  The script is\noptimized for testing the cpsa program, not analyzing protocols.\n\nADDITIONAL PROGRAMS\n\nThe src directory of the source distributions includes programs\nwritten in Scheme, Prolog, Elisp, and OCaml for performing tasks.  Use\nthem as templates for your special purpose CPSA analysis and\ntransformation needs.  Also, when given the --json option, the CPSA\npretty printer cpsapp will transform CPSA S-expressions into\nJavaScript Object Notation (JSON).\n\nOn Linux, the GHC runtime can request so much memory that thrashing\nresults.  The script in src/ghcmemlimit sets an environment variable\nthat limits memory to the amount of free and reclaimable memory on\nyour machine.\n\nKNOWN BUGS\n\nVariable separation in generalization fails to separate variables in\nterms of the form (ltk a a).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmitre%2Foldcpsa","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmitre%2Foldcpsa","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmitre%2Foldcpsa/lists"}