{"id":20009784,"url":"https://github.com/plsyssec/fact-eval","last_synced_at":"2026-06-16T20:32:02.938Z","repository":{"id":77735206,"uuid":"131782989","full_name":"PLSysSec/fact-eval","owner":"PLSysSec","description":null,"archived":false,"fork":false,"pushed_at":"2019-03-28T22:51:43.000Z","size":20813,"stargazers_count":0,"open_issues_count":0,"forks_count":2,"subscribers_count":8,"default_branch":"master","last_synced_at":"2025-07-29T11:55:35.516Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C","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/PLSysSec.png","metadata":{"files":{"readme":"README.md","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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-05-02T01:40:14.000Z","updated_at":"2019-03-28T22:51:45.000Z","dependencies_parsed_at":"2023-04-08T03:56:16.013Z","dependency_job_id":null,"html_url":"https://github.com/PLSysSec/fact-eval","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/PLSysSec/fact-eval","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PLSysSec%2Ffact-eval","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PLSysSec%2Ffact-eval/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PLSysSec%2Ffact-eval/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PLSysSec%2Ffact-eval/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/PLSysSec","download_url":"https://codeload.github.com/PLSysSec/fact-eval/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PLSysSec%2Ffact-eval/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34423214,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-16T02:00:06.860Z","response_time":126,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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-13T07:17:04.481Z","updated_at":"2026-06-16T20:32:02.913Z","avatar_url":"https://github.com/PLSysSec.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# FaCT Case Studies\n\nThis repository contains the ported code for the case studies in the FaCT paper,\nas well copies of each cryptographic library for the purposes of\nbenchmarking. The directory already contains pre-built object files and\nassembly files for each case study, built for a 64-bit Ubuntu environment. If\nyou would like to rebuild the files yourself, you can follow the instructions\nbelow to rebuild them from the [FaCT source files](https://github.com/PLSysSec/FaCT).\n\n#### Comparison of FaCT and C implementations\n\nRefer to the table in [comparison.md](/comparison.md).\n\n#### Virtual machine image\n\nYou can download a [VM image pre-configured for building the FaCT compiler and case studies](https://drive.google.com/open?id=1xzw4Ohsdj4WqxJPl1RvvxSnhysMSejPi).\nThe file `fact.ova` should have a SHA256 sum of `089398c85c5074d911c2f2b67ca22df453235e8733f1eb283c71717cf70f714c`.\n\n#### (Re)compiling FaCT ports\n\nTo rebuild the FaCT implementations, first configure your environment:\n`export FACTC=\"/path/to/factc\"` . Then, from the `fact-eval`\ndirectory, run `make generate` . This will recompile the FaCT source files\nfor each case study.\n\n#### Compiling case studies\n\nTo compile the case studies, you will need `autoconf`:\n\n```sudo apt-get install autoconf libtool-bin```\n\nThen, to compile all of the case studies, run `make compile` from the `fact-eval` directory.\n\n#### Running benchmarks and code count\n\nTo run code count, you will need `cloc`:\n\n```sudo apt-get install cloc```\n\n`make bench loc ; cat results.txt ; cat clocs.txt`\n\nTo run the benchmarks, run `make bench` from the `fact-eval` directory. This\nwill run each case study's respective benchmarking suites and collect the\nresults into a file called `results.txt`.\n\nTo run code count, run `make loc` from the `fact-eval` directory. This will run\na code count on each case study's FaCT code and corresponding C implementation,\nusing `cloc --force-lang=c++`. The results are collected into `clocs.txt`.\nNote: We force `cloc`'s language parser to C++ for all files (even C\nimplementations) to correctly handle C++-style comments.\n\n#### Validating constant-time\n\nTo evaluate the case studies using dudect, you must first build the dudect test\nframeworks for each case study:\n\n```\ncd dudect/\nmake all\n```\n\nThe evaluation procedure simply consists of allowing each binary to run for a\nsuitably large number of sample sizes, and checking that the output continues\nto report: \"For the moment, maybe constant time.\" The provided helper script,\n`run-all-10m.sh`, will run each test framework for 10 minutes while capturing\noutput, as a convenience.\n\n#### Acknowledgements\n\nWe thank the anonymous PLDI and PLDI AEC reviewers for their suggestions and\ninsightful comments.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fplsyssec%2Ffact-eval","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fplsyssec%2Ffact-eval","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fplsyssec%2Ffact-eval/lists"}