{"id":28268108,"url":"https://github.com/benadida/scantegrity-audit","last_synced_at":"2025-07-20T08:03:08.511Z","repository":{"id":658698,"uuid":"301514","full_name":"benadida/scantegrity-audit","owner":"benadida","description":"Audit Code for the Scantegrity Voting System","archived":false,"fork":false,"pushed_at":"2009-12-24T01:44:51.000Z","size":151,"stargazers_count":7,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-05-20T15:12:21.127Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://benlog.com/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/benadida.png","metadata":{"files":{"readme":"README","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2009-09-08T22:57:51.000Z","updated_at":"2024-05-17T22:06:07.000Z","dependencies_parsed_at":"2022-07-08T07:49:22.371Z","dependency_job_id":null,"html_url":"https://github.com/benadida/scantegrity-audit","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/benadida/scantegrity-audit","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/benadida%2Fscantegrity-audit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/benadida%2Fscantegrity-audit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/benadida%2Fscantegrity-audit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/benadida%2Fscantegrity-audit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/benadida","download_url":"https://codeload.github.com/benadida/scantegrity-audit/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/benadida%2Fscantegrity-audit/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260223938,"owners_count":22977315,"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":"2025-05-20T15:12:15.036Z","updated_at":"2025-06-16T19:32:28.390Z","avatar_url":"https://github.com/benadida.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"The code for auditing a Scantegrity election\n\n- commitment.py\n\nthe Scantegrity commitment scheme.\nRequires PyCrypto\n\n==================\n\nEach file that follows is used for one step of the audit. In each case,\nan election data directory is provided as input, e.g.\n\n  python meeting1.py \u003cELECTION_DATA_DIR\u003e\n  \nThis election data directory is expected to contain all of the XML files needed\nup to this point in the verification. For example, when running meeting1.py,\nthe following files are expected:\n\n  MeetingOneIn.xml\n  MeetingOneOut.xml\n \nThe verification programs are stateless: they reload all of the data they need at that point.\nThis may make them slower than absolutely necessary, but it also prevents potential issues\nwith data storage, with forgetting to run one verification, etc...\n\nAny signatures of the outputs are performed separately, these programs just run the verification.\n\n- meeting1.py\n\npython meeting1.py {DATA_DIR}\n\nverify the basic parameters\n\nIn the case of the Takoma Park Election, the DATA_DIR is a specific ward, so this command needs to be run 6 times.\n\n- meeting2.py\n\npython meeting2.py {DATA_DIR}\n\nverify the audit of the P and D tables.\n*IMPORTANT*, the random seed data must be added in the election directory, the one that contains MeetingTwoIn.xml and MeetingTwoOut.xml,\nwith name pre-election-random-data.txt\n\nIn the case of the Takoma Park Election, the DATA_DIR is a specific ward, so this command needs to be run 6 times.\n\n- meeting3.py\n\npython meeting3.py {DATA_DIR}\n\nIn the case of the Takoma Park Election, the DATA_DIR is a specific ward, so this command needs to be run 6 times.\n\nIf you want to get the confirmation codes, you need to run\n\npython meeting3.py {DATA_DIR} {CONFIRMATION_CODE_FILE_PATH}\n\n- tally\n\npython tally.py {QUESTION_ID} {DATA_PATH_1} {DATA_PATH_2} ...\n\nIn the case of the Takoma Park election, question_id 0 needs all 6 data paths,\nwhile question_id 1 is run independently on each ward.\n\n- meeting4.py\n\n- contestedballots.py\n\n- spoiledballots.py","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbenadida%2Fscantegrity-audit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbenadida%2Fscantegrity-audit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbenadida%2Fscantegrity-audit/lists"}