{"id":40178667,"url":"https://github.com/cryptography-cafe/curve25519-elisabeth","last_synced_at":"2026-01-19T18:03:28.903Z","repository":{"id":34180762,"uuid":"168861270","full_name":"cryptography-cafe/curve25519-elisabeth","owner":"cryptography-cafe","description":"Pure Java implementation of group operations on ristretto255 and Curve25519","archived":false,"fork":false,"pushed_at":"2023-04-18T04:00:10.000Z","size":376,"stargazers_count":25,"open_issues_count":2,"forks_count":9,"subscribers_count":6,"default_branch":"main","last_synced_at":"2023-12-31T02:48:45.523Z","etag":null,"topics":["cryptography","curve25519","edwards-curve","elliptic-curves","java","ristretto"],"latest_commit_sha":null,"homepage":"","language":"Java","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/cryptography-cafe.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2019-02-02T18:04:02.000Z","updated_at":"2023-11-19T16:14:15.000Z","dependencies_parsed_at":"2022-09-03T08:20:24.705Z","dependency_job_id":"537fc2be-204a-499e-9700-0a3449c6fbc0","html_url":"https://github.com/cryptography-cafe/curve25519-elisabeth","commit_stats":null,"previous_names":[],"tags_count":1,"template":null,"template_full_name":null,"purl":"pkg:github/cryptography-cafe/curve25519-elisabeth","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cryptography-cafe%2Fcurve25519-elisabeth","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cryptography-cafe%2Fcurve25519-elisabeth/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cryptography-cafe%2Fcurve25519-elisabeth/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cryptography-cafe%2Fcurve25519-elisabeth/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cryptography-cafe","download_url":"https://codeload.github.com/cryptography-cafe/curve25519-elisabeth/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cryptography-cafe%2Fcurve25519-elisabeth/sbom","scorecard":{"id":310243,"data":{"date":"2025-08-11","repo":{"name":"github.com/cryptography-cafe/curve25519-elisabeth","commit":"26c014bda6cf87498b9180e8b2ec8024fdb95e80"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.7,"checks":[{"name":"Code-Review","score":0,"reason":"Found 0/9 approved changesets -- score normalized to 0","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":"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":"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":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/ci.yml: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":"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":"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/ci.yml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/cryptography-cafe/curve25519-elisabeth/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/cryptography-cafe/curve25519-elisabeth/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:33: update your workflow using https://app.stepsecurity.io/secureworkflow/cryptography-cafe/curve25519-elisabeth/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:35: update your workflow using https://app.stepsecurity.io/secureworkflow/cryptography-cafe/curve25519-elisabeth/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:42: update your workflow using https://app.stepsecurity.io/secureworkflow/cryptography-cafe/curve25519-elisabeth/ci.yml/main?enable=pin","Info:   0 out of   5 GitHub-owned 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":"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":"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":"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":"License","score":9,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Warn: project license file does not contain an FSF or OSI license."],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"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":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"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":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 30 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:03:46.522Z","repository_id":34180762,"created_at":"2025-08-17T23:03:46.523Z","updated_at":"2025-08-17T23:03:46.523Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28578952,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-19T17:42:58.221Z","status":"ssl_error","status_checked_at":"2026-01-19T17:40:54.158Z","response_time":67,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6: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":["cryptography","curve25519","edwards-curve","elliptic-curves","java","ristretto"],"created_at":"2026-01-19T18:03:28.075Z","updated_at":"2026-01-19T18:03:28.898Z","avatar_url":"https://github.com/cryptography-cafe.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# curve25519-elisabeth [![Maven Central](https://img.shields.io/maven-central/v/cafe.cryptography/curve25519-elisabeth.svg?label=Maven%20Central)](https://search.maven.org/search?q=g:%22cafe.cryptography%22%20AND%20a:%22curve25519-elisabeth%22) [![Build Status](https://travis-ci.com/cryptography-cafe/curve25519-elisabeth.svg?branch=master)](https://travis-ci.com/cryptography-cafe/curve25519-elisabeth) [![Codecov](https://img.shields.io/codecov/c/gh/cryptography-cafe/curve25519-elisabeth.svg)](https://codecov.io/gh/cryptography-cafe/curve25519-elisabeth)\n\nA pure-Java implementation of group operations on Curve25519.\n\nRequires Java 7 or higher. Requires JDK 10 or higher to build.\n\n# Usage\n\n## Gradle\n\n```\nimplementation 'cafe.cryptography:curve25519-elisabeth:0.1.0'\n```\n\n## Apache Maven\n\n```\n\u003cdependency\u003e\n  \u003cgroupId\u003ecafe.cryptography\u003c/groupId\u003e\n  \u003cartifactId\u003ecurve25519-elisabeth\u003c/artifactId\u003e\n  \u003cversion\u003e0.1.0\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\n# Documentation\n\nTo view the public-facing API documentation, first build it:\n\n```sh\n./gradlew javadoc\n```\n\nThen open `build/docs/javadoc/index.html` in your browser.\n\n## Internal documentation\n\nThe unstable internal implementation details are also documented. To build them:\n\n```sh\n./gradlew internalDocs\n```\n\nThen open `build/docs/internal/index.html` in your browser.\n\n# Safety\n\nThe `curve25519-elisabeth` types are designed to make illegal states unrepresentable.\nFor example, any instance of an `EdwardsPoint` is guaranteed to hold a point on the\nEdwards curve, and any instance of a `RistrettoElement` is guaranteed to hold a valid\nelement in the Ristretto group.\n\nThese guarantees only hold if the internal implementation details of the types are opaque.\nWe use several techniques to achieve this in modern Java environments:\n\n- For all classes that implement `java.io.Serializable`, the serialization APIs are\n  overridden to use the encoded form of the respective type, instead of directly\n  serializing the internal representation.\n\n- For Java 9 and above, when this library is in the module path, reflection cannot be used\n  to access non-public classes or fields.\n\nUsage of Java's reflection APIs on types from this library (in legacy environments or\nconfigurations where it is possible to do so) is **NOT** supported.\n\nAll operations are implemented using constant-time logic (no secret-dependent branches, no\nsecret-dependent memory accesses), unless specifically marked as being variable-time code.\nHowever, while our constant-time logic is lowered to constant-time JVM bytecode, we cannot\nguarantee that the JVM will not figure out ways to optimise away constant-time logic.\n\n# About\n\n`curve25519-elisabeth` is authored by Jack Grigg.\n\nThe field arithmetic was originally extracted from [Jack's Java Ed25519 library](https://github.com/str4d/ed25519-java),\nwhich was in turn a port of the reference `ref10` implementation.\n\nTest vectors, and the UnpackedScalar arithmetic, were ported from\n[`curve25519-dalek`](https://github.com/dalek-cryptography/curve25519-dalek),\nauthored by isis agora lovecruft and Henry de Valence. Their library has also influenced the design\nof this one.\n\n\u003e Elisabeth Pepys was the wife of Samuel Pepys. The Third Doctor remembered her as\n\u003e making the best cup of coffee he had ever had.  Shortly thereafter, the Fourth\n\u003e Doctor claimed to have met her along with her husband.  In his twelfth\n\u003e incarnation, the Doctor still regarded Elisabeth's coffee as the best coffee in\n\u003e the universe.\n\n`curve25519-elisabeth` contains an experimental implementation of the\n[Ristretto prime-order group](https://ristretto.group).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcryptography-cafe%2Fcurve25519-elisabeth","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcryptography-cafe%2Fcurve25519-elisabeth","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcryptography-cafe%2Fcurve25519-elisabeth/lists"}