{"id":17175987,"url":"https://github.com/muntashirakon/spake2-java","last_synced_at":"2025-04-13T17:06:41.747Z","repository":{"id":102803395,"uuid":"393775094","full_name":"MuntashirAkon/spake2-java","owner":"MuntashirAkon","description":"SPAKE2 implementation in Java","archived":false,"fork":false,"pushed_at":"2022-01-25T09:47:14.000Z","size":191,"stargazers_count":14,"open_issues_count":2,"forks_count":5,"subscribers_count":6,"default_branch":"master","last_synced_at":"2024-04-14T00:31:55.817Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/MuntashirAkon.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":"2021-08-07T19:32:53.000Z","updated_at":"2024-04-03T12:25:11.000Z","dependencies_parsed_at":null,"dependency_job_id":"7956d94c-2dc1-4a02-8de8-500b9f5f86c4","html_url":"https://github.com/MuntashirAkon/spake2-java","commit_stats":{"total_commits":10,"total_committers":1,"mean_commits":10.0,"dds":0.0,"last_synced_commit":"bc57ecc77fab8556c1bff2bb02febe2301cedb40"},"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MuntashirAkon%2Fspake2-java","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MuntashirAkon%2Fspake2-java/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MuntashirAkon%2Fspake2-java/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MuntashirAkon%2Fspake2-java/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MuntashirAkon","download_url":"https://codeload.github.com/MuntashirAkon/spake2-java/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240102169,"owners_count":19747959,"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":"2024-10-14T23:58:39.356Z","updated_at":"2025-02-23T18:34:44.332Z","avatar_url":"https://github.com/MuntashirAkon.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SPAKE2-Java\n\nImplementation of SPAKE2 protocol in Java, fully compatible with BoringSSL implementation.\n\n**DISCLAIMER:** This is an unaudited library tested with Android 11 wireless debugging. Use it at your own risk.\n\nThe ultimate goal of this project is to provide both pure java and (for android) JNI implementation of SPAKE2.\nThe project is fully usable as of now, but it requires further optimizations.\n\n## Get Started\nimport `io.github.muntashirakon.crypto.spake2.*` in your project. Do not import any other files from \n`io.github.muntashirakon.crypto` as there's no guarantee that they will not be modified in the future.\n\n```java\n// Create alice and bob\nSpake2Context alice = new Spake2Context(Spake2Role.Alice, \"alice\", \"bob\");\nSpake2Context bob = new Spake2Context(Spake2Role.Bob, \"bob\", \"alice\");\n// The below methods are kept for compatibility with BoringSSL\n// alice.setDisablePasswordScalarHack(true);\n// bob.setDisablePasswordScalarHack(true);\n// Messages\nbyte[] aliceMsg = alice.generateMessage(alicePassword.getBytes(StandardCharsets.UTF_8));\nbyte[] bobMsg = bob.generateMessage(bobPassword.getBytes(StandardCharsets.UTF_8));\n// Fetch keys\nbyte[] aliceKey = alice.processMessage(bobMsg);\nbyte[] bobKey = bob.processMessage(aliceMsg);\n```\n\n### Notice for BoringSSL Users\nBeware that strings in C/C++ adds a `NULL` character (i.e. `\\u0000`) at the end, so if you've accidentally used\n`sizeof(my_name)` instead of `sizeof(my_name)-1`, you have to make sure that you're adding this character to your\nJava implementation too.\n\n## Credits\n\nED25519 implementation is a modified and a simplified version of the [EdDSA-Java](https://github.com/str4d/ed25519-java) library (CC0 license).\n\n## License\nCopyright 2021 Muntashir Al-Islam\n\nLicensed under the LGPL-3.0: http://www.gnu.org/licenses/lgpl-3.0.html\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmuntashirakon%2Fspake2-java","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmuntashirakon%2Fspake2-java","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmuntashirakon%2Fspake2-java/lists"}