{"id":36589381,"url":"https://github.com/cryptimeleon/craco","last_synced_at":"2026-01-12T08:09:55.625Z","repository":{"id":43149516,"uuid":"145999802","full_name":"cryptimeleon/craco","owner":"cryptimeleon","description":"CRyptogrAphic COnstructions","archived":false,"fork":false,"pushed_at":"2023-04-05T12:34:44.000Z","size":1959,"stargazers_count":11,"open_issues_count":14,"forks_count":5,"subscribers_count":7,"default_branch":"develop","last_synced_at":"2025-09-10T06:27:14.602Z","etag":null,"topics":["commitments","cryptography","digital-signatures","encryption","prototyping","secret-sharing","signatures","zero-knowledge-proofs"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cryptimeleon.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2018-08-24T14:11:28.000Z","updated_at":"2024-04-04T07:59:39.000Z","dependencies_parsed_at":"2025-09-10T04:54:33.171Z","dependency_job_id":"3f7b3af8-6f69-4ee0-a115-1626e6b941e6","html_url":"https://github.com/cryptimeleon/craco","commit_stats":null,"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"purl":"pkg:github/cryptimeleon/craco","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cryptimeleon%2Fcraco","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cryptimeleon%2Fcraco/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cryptimeleon%2Fcraco/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cryptimeleon%2Fcraco/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cryptimeleon","download_url":"https://codeload.github.com/cryptimeleon/craco/tar.gz/refs/heads/develop","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cryptimeleon%2Fcraco/sbom","scorecard":{"id":310118,"data":{"date":"2025-08-11","repo":{"name":"github.com/cryptimeleon/craco","commit":"b9ff4ae9eacb0d46661b5c53a24d6a5a75b9cc15"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.1,"checks":[{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Code-Review","score":8,"reason":"Found 9/11 approved changesets -- score normalized to 8","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/dev-ci.yaml:1","Warn: no topLevel permission defined: .github/workflows/main-ci.yaml:1","Warn: no topLevel permission defined: .github/workflows/tagged_release.yaml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/dev-ci.yaml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/cryptimeleon/craco/dev-ci.yaml/develop?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/dev-ci.yaml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/cryptimeleon/craco/dev-ci.yaml/develop?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/main-ci.yaml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/cryptimeleon/craco/main-ci.yaml/develop?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/main-ci.yaml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/cryptimeleon/craco/main-ci.yaml/develop?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/tagged_release.yaml:11: update your workflow using https://app.stepsecurity.io/secureworkflow/cryptimeleon/craco/tagged_release.yaml/develop?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/tagged_release.yaml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/cryptimeleon/craco/tagged_release.yaml/develop?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/tagged_release.yaml:24: update your workflow using https://app.stepsecurity.io/secureworkflow/cryptimeleon/craco/tagged_release.yaml/develop?enable=pin","Info:   0 out of   6 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   1 third-party GitHubAction dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Binary-Artifacts","score":9,"reason":"binaries present in source code","details":["Warn: binary detected: gradle/wrapper/gradle-wrapper.jar:1"],"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: Apache License 2.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact v4.0.2 not signed: https://api.github.com/repos/cryptimeleon/craco/releases/98183205","Warn: release artifact v4.0.1 not signed: https://api.github.com/repos/cryptimeleon/craco/releases/89797989","Warn: release artifact v4.0.0 not signed: https://api.github.com/repos/cryptimeleon/craco/releases/88735848","Warn: release artifact v3.0.2 not signed: https://api.github.com/repos/cryptimeleon/craco/releases/51864601","Warn: release artifact v3.0.1 not signed: https://api.github.com/repos/cryptimeleon/craco/releases/51364553","Warn: release artifact v4.0.2 does not have provenance: https://api.github.com/repos/cryptimeleon/craco/releases/98183205","Warn: release artifact v4.0.1 does not have provenance: https://api.github.com/repos/cryptimeleon/craco/releases/89797989","Warn: release artifact v4.0.0 does not have provenance: https://api.github.com/repos/cryptimeleon/craco/releases/88735848","Warn: release artifact v3.0.2 does not have provenance: https://api.github.com/repos/cryptimeleon/craco/releases/51864601","Warn: release artifact v3.0.1 does not have provenance: https://api.github.com/repos/cryptimeleon/craco/releases/51364553"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 29 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-17T23:01:25.305Z","repository_id":43149516,"created_at":"2025-08-17T23:01:25.305Z","updated_at":"2025-08-17T23:01:25.305Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28337226,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-12T06:09:07.588Z","status":"ssl_error","status_checked_at":"2026-01-12T06:05:18.301Z","response_time":98,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["commitments","cryptography","digital-signatures","encryption","prototyping","secret-sharing","signatures","zero-knowledge-proofs"],"created_at":"2026-01-12T08:09:50.699Z","updated_at":"2026-01-12T08:09:55.619Z","avatar_url":"https://github.com/cryptimeleon.png","language":"Java","readme":"![Build Status](https://github.com/cryptimeleon/craco/workflows/Development%20Java%20CI/badge.svg)\n![Build Status](https://github.com/cryptimeleon/craco/workflows/Main%20Java%20CI/badge.svg)\n![Build Status](https://github.com/cryptimeleon/craco/workflows/Scheduled%20Main%20Java%20CI/badge.svg)\n## Craco\n\nCraco (CRyptogrAphic COnstructions) is a Java library providing implementations of various cryptographic primitives and low-level constructions. This includes primitives such as commitment schemes, signature schemes, facilities for implementing multi-party protocols, and much more.\n\nThe goal of Craco is to provide common cryptographic schemes for usage in more high-level protocols as well as to offer facilities for improving the process of implementing more low-level schemes such as signature and encryption schemes.\n\n## Security Disclaimer\n**WARNING: This library is meant to be used for prototyping and as a research tool *only*. It has not been sufficiently vetted for use in security-critical production environments. All implementations are to be considered experimental.**\n\n## Table Of Contents\n\n* [Features Overview](#features)\n* [Quickstart Guide](#quickstart)\n    * [Maven Installation](#installation-with-maven)\n    * [Gradle Installation](#installation-with-gradle)\n    * [Tutorials](#tutorials)\n* [Miscellaneous Information](#miscellaneous-information)\n* [Authors](#authors)\n* [References](#references)\n\n## Features\n\nCraco implements interfaces and test classes for basic cryptographic primitives such as commitment schemes, encryption schemes, and more.\nIt also includes implementations of several schemes as well as facilities for implementing two-party protocols.\n\n### Implemented Schemes\nThe constructions we implement are:\n\n* **Accumulators**:\n    * Nguyen's dynamic accumulator [Ngu05]\n* **Commitment schemes**:\n    * Pedersen's commitment scheme [Ped92]\n* **Digital signature schemes**:\n    * Pointcheval \u0026 Sanders' short randomizable signature scheme [PS16]\n    * An extension of Boneh, Boyen and Shacham's signature scheme from [Eid15]\n    * Pointcheval \u0026 Sanders' modified short randomizable signature scheme (with and without ROM) [PS18]\n    * Fuchsbauer, Hanser and Slamanig's structure-preserving signature scheme on equivalence classes [FHS19]\n* **Encryption schemes**:\n    * ElGamal\n    * Streaming AES Encryption using CBC and GCM modes of operation\n* **Key encapsulation mechanisms (KEM)**: \n    * ElGamal\n* **Secret sharing schemes**:\n    * Shamir's secret sharing scheme [Sha79] and its tree extension\n    \n### Protocols\n\nCraco also includes interfaces and basic classes useful for implementing cryptographic two-party protocols.\nParts of this are facilities for easy implementation of Sigma protocols.\n\nFurthermore, it includes:\n\n* A Fiat-Shamir transformation implementation\n* A Schnorr protocol implementation\n* An implementation of Damgård's technique used to improve Sigma protocols\n\n## Quickstart\n\n### Installation With Maven\nTo add the newest Craco version as a dependency, add this to your project's POM:\n\n```xml\n\u003cdependency\u003e\n    \u003cgroupId\u003eorg.cryptimeleon\u003c/groupId\u003e\n    \u003cartifactId\u003ecraco\u003c/artifactId\u003e\n    \u003cversion\u003e[4.0,)\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\n### Installation With Gradle\n\nCraco is published via Maven Central.\nTherefore, you need to add `mavenCentral()` to the `repositories` section of your project's `build.gradle` file.\nThen, add `implementation group: 'org.cryptimeleon', name: 'craco', version: '4.+'` to the `dependencies` section of your `build.gradle` file.\n\nFor example:\n\n```groovy\nrepositories {\n    mavenCentral()\n}\n\ndependencies {\n    implementation group: 'org.cryptimeleon', name: 'craco', version: '4.+'\n}\n```\n\n### Tutorials\n\nCraco is very much connected with our [Math library](https://github.com/cryptimeleon/math).\nTherefore, we recommend you go through our [short Math tutorial](https://cryptimeleon.github.io/getting-started/5-minute-tutorial.html) to get started.\n\nWe also provide walkthroughs where we show you how to implement a pairing-based signature scheme [here](https://cryptimeleon.github.io/getting-started/pairing-tutorial.html) as well as a simple cryptographic protocol [here](https://cryptimeleon.github.io/getting-started/protocols-tutorial.html).\nThe latter uses Craco's protocol capabilities.\n\n## Miscellaneous Information\n\n- Official Documentation can be found [here](https://cryptimeleon.github.io/).\n    - The *For Contributors* area includes information on how to contribute.\n- Craco adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).\n- The changelog can be found [here](CHANGELOG.md).\n- Craco is licensed under Apache License 2.0, see [LICENSE file](LICENSE).\n\n## Authors\nThe library was implemented at Paderborn University in the research group [\"Codes und Cryptography\"](https://cs.uni-paderborn.de/en/cuk/).\n\n## References\n\n[FHS19] Georg Fuchsbauer and Christian Hanser and Daniel Slamanig. \"Structure-Preserving Signatures on Equivalence Classes and Constant-Size Anonymous Credentials\". In: Journal of Cryptology, 2019. Vol. 32, pp. 498 - 546.\n\n[Ngu05] Lan Nguyen. “Accumulators from Bilinear Pairings and Applications”. In: Topics in Cryptology – CT-RSA 2005. Ed. by Alfred Menezes. Vol. 3376. Lecture Notes in Computer Science. Springer, Heidelberg, February 2005, pp. 275–292.\n\n[Ped92] Torben P. Pedersen. “Non-Interactive and Information-Theoretic Secure Verifiable Secret Sharing”. In: Advances in Cryptology – CRYPTO’91. Ed. by Joan Feigenbaum. Vol. 576. Lecture Notes in Computer Science. Springer, Heidelberg, August 1992, pp. 129–140.\n\n[PS16] David Pointcheval and Olivier Sanders. “Short Randomizable Signatures”. In: Topics in Cryptology – CT-RSA 2016. Ed. by Kazue Sako. Vol. 9610. Lecture Notes in Computer Science. Springer, Heidelberg, February 2016, pp. 111–126.\n\n[PS18] David Pointcheval and Olivier Sanders. \"Reassessing Security of Randomizable Signatures\". In: Topic in Cryptology - CT-RSA 2018. Ed. by Nigel P. Smart. Springer International Publishing, 2018, pp 319-338.\n\n[Sha79] Adi Shamir. “How to Share a Secret”. In: Communications of the Association for Computing Machinery 22.11 (November 1979), pp. 612–613.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcryptimeleon%2Fcraco","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcryptimeleon%2Fcraco","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcryptimeleon%2Fcraco/lists"}