{"id":36426986,"url":"https://github.com/halu5071/edwards","last_synced_at":"2026-01-11T18:01:22.997Z","repository":{"id":44807283,"uuid":"136564461","full_name":"halu5071/edwards","owner":"halu5071","description":"Edwards is a crypto library for Edwards-curve Digital Signature Algorithm (EdDSA).","archived":false,"fork":false,"pushed_at":"2022-08-10T14:21:46.000Z","size":647,"stargazers_count":6,"open_issues_count":0,"forks_count":3,"subscribers_count":2,"default_branch":"master","last_synced_at":"2023-07-28T10:13:59.105Z","etag":null,"topics":["apache2","crypto","cryptography","ed25519","ed448","edwards-curve","java"],"latest_commit_sha":null,"homepage":"http://edwards.moatwel.io","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/halu5071.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}},"created_at":"2018-06-08T04:01:42.000Z","updated_at":"2022-08-19T15:44:54.000Z","dependencies_parsed_at":"2022-08-23T20:30:38.880Z","dependency_job_id":null,"html_url":"https://github.com/halu5071/edwards","commit_stats":null,"previous_names":[],"tags_count":18,"template":null,"template_full_name":null,"purl":"pkg:github/halu5071/edwards","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/halu5071%2Fedwards","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/halu5071%2Fedwards/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/halu5071%2Fedwards/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/halu5071%2Fedwards/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/halu5071","download_url":"https://codeload.github.com/halu5071/edwards/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/halu5071%2Fedwards/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28316924,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-11T14:58:17.114Z","status":"ssl_error","status_checked_at":"2026-01-11T14:55:53.580Z","response_time":60,"last_error":"SSL_read: 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":["apache2","crypto","cryptography","ed25519","ed448","edwards-curve","java"],"created_at":"2026-01-11T18:00:51.265Z","updated_at":"2026-01-11T18:01:22.987Z","avatar_url":"https://github.com/halu5071.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Edwards\n[![CircleCI](https://circleci.com/gh/halu5071/edwards.svg?style=svg\u0026circle-token=cbf414b02faf05868c94e788f208e115aea1650d)](https://circleci.com/gh/halu5071/edwards) [![codecov](https://codecov.io/gh/halu5071/edwards/branch/master/graph/badge.svg?token=ahNKdm6dVP)](https://codecov.io/gh/halu5071/edwards) [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)\n\n\nEdwards is a crypto library for Edwards-curve Digital Signature Algorithm (EdDSA). This library makes it easy to create KeyPair, sign and verify your message.\n\n## How to use\n\nFirst of all, you should create `Edwards` object.\n\n```java\nEdwards edwards = new Edwards(new Ed25519SchemeProvider(HashAlgorithm.SHA_512));\n```\n\nor if you select KECCAK-512 hash algorithm and Curve25519, just write as below.\n\n```java\nEdwards edwards = new Edwards();\n```\n\n### KeyPair generation\nYou can generate `KeyPair` which contains `PrivateKey` and `PublicKey` from `Edwards` object.\n\n```java\nKeyPair keyPair = edwards.generateKeyPair();\nPrivateKey privateKey = keyPair.getPrivateKey();\nPublicKey publicKey = keyPair.getPublicKey();\n```\n\n### PublicKey generation from existing PrivateKey\nOf course you can generate `PublicKey` from existing `PrivateKey` which is represented in Hex String or byte array.\n\n```java\nPrivateKey privateKey = PrivateKey.newInstance(\"4fd0a24......3415d4ef\");\nPublicKey publicKey = edwards.derivePublicKey(privateKey);\n```\n\n### Signing\n\n```java\nKeyPair keyPair = ...;\nbyte[] data = ...;\nSignature signature = edwards.sign(keyPair, data);\n```\n\n### Verifying\n\n```java\nPublicKey publicKey = ...;\nSignature signature = ...;\nbyte[] data = ...;\nboolean isVerified = edwards.verify(publicKey, data, signature);\n```\n\n### Built-in Scheme\nEdwards supports some schemes. \n\n- Ed25519\n- Ed25519ctx\n- Ed25519ph\n- Ed448\n- Ed448ph\n\n`Ed25591ctx`, `Ed25519ph` are contextualized extensions of the `Ed25519` scheme, and also `Ed448ph` is a contextualized extension of `Ed448` scheme.\n\nIn addition, `NemV1SchemeProvider` and `NemV2SchemeProvider` are implemented. The use case of this provider is some operation in NEM v1 and v2 respectively.\n\n### Built-in Hash algorithm\nThis library use `SpongyCastle` internally, so you can almost all hash algorithm. Specify hash algorithm you want like this.\n\n```java\nSchemeProvider schemeProvider = new Ed25519SchemeProvider(HashAlgorithm.SHA_512);\n```\n\nor\n\n```java\nEdwards edwards = new Edwards(HashAlgorithm.KECCAK_512);\n```\n\nother algorithm here.\n\n- SHA512\n- SHA3-512\n- KECCAK-512\n- SHAKE-256\n\nIf you want to add other hash algorithms, do not hesitate to send me request, or pull request.\n\n## Install\nA package of this software is provided from jcenter. Maven or Gradle may be useful. Just write as below.\n\n### Gradle\n\n```gradle\nbuildscript {\n    repositories {\n        mavenCentral()\n    }\n}\n\ndependencies {\n    compile \"io.moatwel.crypto:eddsa:0.8.1\"\n}\n```\n\n### Maven\n\n```xml\n\u003cdependency\u003e \n    \u003cgroupId\u003eio.moatwel.crypto\u003c/groupId\u003e \n    \u003cartifactId\u003eeddsa\u003c/artifactId\u003e \n    \u003cversion\u003e0.8.1\u003c/version\u003e\n    \u003ctype\u003epom\u003c/type\u003e \n\u003c/dependency\u003e\n```\n\n## How to build\nPlease use AndroidStudio or Intellij. Clone this repository, and open it.\n\n\n## Dependencies\nThis software is built on some Open Source Softwares.\n\n- [Spongy Castle](https://github.com/rtyley/spongycastle)\n\n\n## License\nThis software is under the Apache License, Version 2.0.\n\n```\nCopyright 2018 halu5071 (Yasunori Horii)\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n   http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhalu5071%2Fedwards","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhalu5071%2Fedwards","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhalu5071%2Fedwards/lists"}