{"id":28384382,"url":"https://github.com/polyphony-chat/stimmgabel","last_synced_at":"2025-06-25T23:30:59.190Z","repository":{"id":218093296,"uuid":"745596689","full_name":"polyphony-chat/stimmgabel","owner":"polyphony-chat","description":"polyproto reference test implementation used for verifying other implementations of the protocol.","archived":false,"fork":false,"pushed_at":"2024-05-19T15:12:33.000Z","size":159,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-05-30T09:11:18.982Z","etag":null,"topics":["polyphony","polyphony-chat","polyproto"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/polyphony-chat.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,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-01-19T17:18:18.000Z","updated_at":"2024-06-09T10:18:52.000Z","dependencies_parsed_at":"2024-05-19T12:32:42.565Z","dependency_job_id":"16b009cc-1f63-4043-b739-1e2897790dd2","html_url":"https://github.com/polyphony-chat/stimmgabel","commit_stats":null,"previous_names":["polyphony-chat/stimmgabel","polyphony-chat/tuning-fork"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/polyphony-chat/stimmgabel","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/polyphony-chat%2Fstimmgabel","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/polyphony-chat%2Fstimmgabel/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/polyphony-chat%2Fstimmgabel/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/polyphony-chat%2Fstimmgabel/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/polyphony-chat","download_url":"https://codeload.github.com/polyphony-chat/stimmgabel/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/polyphony-chat%2Fstimmgabel/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261972547,"owners_count":23238537,"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":["polyphony","polyphony-chat","polyproto"],"created_at":"2025-05-30T08:30:20.846Z","updated_at":"2025-06-25T23:30:59.182Z","avatar_url":"https://github.com/polyphony-chat.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# stimmgabel\n\nCommand-line utility implementation of polyproto, used for verifying other implementations of the protocol.\n\n## Motivation\n\nGetting all aspects right when implementing a protocol can be difficult - especially when the protocol\nis new and does not have a lot of implementations to compare against. Stimmgabel (German for 'tuning fork')\nis a command-line utility to use as a verification tool for other implementations of polyproto.\n\nSince this is a binary and not a library, it is fairly straightforward to use in various programming languages,\nby calling the binary with the desired arguments.\n\n## Installation\n\nDownload the latest release from the [releases page](https://github.com/polyphony-chat/stimmgabel/releases).\nAlternatively, using the Rust tool chain, you can clone this repository and build the binary yourself.\n\nAfter acquiring the binary, you can execute it from the command line:\n\n```sh\nstimmgabel --help\n```\n\n## Interpreting the output\n\nThe program will exit with a status code of 0 if the verification was successful. Any other exit code\nindicates that there was an error during the verification process. The exit code is encoded as a bit flag,\nwhere the bits are set as follows:\n\n| Error                                                                            | Bit flag |\n| -------------------------------------------------------------------------------- | -------- |\n| `GARBLED_INPUT` (Unreadable input)                                               | 1 \u003c\u003c 0   |\n| `INVALID_INPUT` (Readable, but wrong input)                                      | 1 \u003c\u003c 1   |\n| `CONSTRAINT_VIOLATION` (Validation criterion not met)                            | 1 \u003c\u003c 2   |\n| `BAD_SIGNATURE` (Signature does not match data)                                  | 1 \u003c\u003c 3   |\n| `BAD_PUBLIC_KEY` (Public key does not match signature or public key is weak/bad) | 1 \u003c\u003c 4   |\n\n## Verifying a message\n\npolyproto does not dictate a specific format for messages. For this verification implementation, the following\nformat is used, when passing a message to be verified:\n\n```json\n{\n    \"message\": \"Any string\",\n    \"signature\": \"Base64 encoded signature\",\n    \"public_key\": \"Base64 encoded public key of the sender\"\n}\n```\n\nMinifying the JSON is allowed, and the order of the keys is not important.\n\n## Cryptography and Safety\n\npolyproto does not specify a signature algorithm. For two implementations to be compatible, they must offer\nan overlapping set of signature algorithms. Stimmgabel only supports ED25519, using the ed25519-dalek crate,\nas ED25519 is the currently recommended signature algorithm for polyproto.\n\n\u003e [!IMPORTANT]\n\u003e This repository's cryptography, including keys and algorithms, is strictly for testing purposes.\n\u003e It uses the ed25519-dalek crate to implement polyproto with ED25519 as a signature algorithm.\n\u003e Learn about the safety guarantees of the ed25519-dalek crate for more information.\n\u003e This software has not received a security audit. No guarantees about its safety can be made.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpolyphony-chat%2Fstimmgabel","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpolyphony-chat%2Fstimmgabel","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpolyphony-chat%2Fstimmgabel/lists"}