{"id":17303453,"url":"https://github.com/jshawl/minisign","last_synced_at":"2025-10-19T20:15:37.085Z","repository":{"id":37995452,"uuid":"494185347","full_name":"jshawl/minisign","owner":"jshawl","description":"minisign, in ruby!","archived":false,"fork":false,"pushed_at":"2024-02-19T20:39:09.000Z","size":111,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-02T01:57:51.657Z","etag":null,"topics":["cryptography","ed25519","minisign","signature","signature-verification"],"latest_commit_sha":null,"homepage":"https://rubygems.org/gems/minisign","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jshawl.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-05-19T18:23:38.000Z","updated_at":"2022-05-30T18:50:08.000Z","dependencies_parsed_at":"2025-02-01T04:41:10.619Z","dependency_job_id":"085dbb13-28f3-40ce-9dcb-ef85787e6121","html_url":"https://github.com/jshawl/minisign","commit_stats":null,"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jshawl%2Fminisign","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jshawl%2Fminisign/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jshawl%2Fminisign/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jshawl%2Fminisign/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jshawl","download_url":"https://codeload.github.com/jshawl/minisign/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245749895,"owners_count":20666086,"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":["cryptography","ed25519","minisign","signature","signature-verification"],"created_at":"2024-10-15T11:50:32.193Z","updated_at":"2025-10-19T20:15:37.003Z","avatar_url":"https://github.com/jshawl.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Minisign\n\nA ruby implemenation of [Minisign](http://jedisct1.github.io/minisign/).\n\n- [Installation \\\u0026 Usage](#installation--usage)\n  - [Read a public key](#read-a-public-key)\n  - [Verify a signature](#verify-a-signature)\n  - [Read a private key](#read-a-private-key)\n  - [Change the private key's password](#change-the-private-keys-password)\n  - [Create a signature](#create-a-signature)\n  - [Generate a key pair](#generate-a-key-pair)\n- [CLI](#cli)\n- [Local Development](#local-development)\n- [Documentation](#documentation)\n\n## Installation \u0026 Usage\n\n```\ngem install minisign\n```\n\n**Note**: This gem has a conditional dependency on [`libsodium`](https://doc.libsodium.org/) for the functionality related to key derivation and signature creation.\nSignature verification _does not_ need `libsodium`.\n\n### Read a public key\n\n```rb\nrequire 'minisign'\npublic_key = Minisign::PublicKey.new('RWSmKaOrT6m3TGwjwBovgOmlhSbyBUw3hyhnSOYruHXbJa36xHr8rq2M')\n# or from a file\npublic_key = Minisign::PublicKey.new(File.read(\"test/minisign.pub\"))\n```\n\n### Verify a signature\n\n```rb\nmessage = File.read(\"test/example.txt\")\nsignature = Minisign::Signature.new(File.read(\"test/example.txt.minisig\"))\npublic_key.verify(signature, message)\n```\n\n### Read a private key\n\n```rb\npassword = \"password\" # optional, if the key is not encrypted\nprivate_key = Minisign::PrivateKey.new(File.read(\"minisign.key\"), password)\n```\n\n### Change the private key's password\n\n```rb\npassword = \"new password\"\nprivate_key.change_password! password\n# or remove the password\nprivate_key.change_password! nil\n```\n\n### Create a signature\n\n```rb\nfile_path = \"example.txt\"\npassword = \"password\"\ntrusted_comment = \"the trusted comment\"\nuntrusted_comment = \"the untrusted comment\"\nsignature = private_key.sign(file_path, File.read(file_path), trusted_comment, untrusted_comment)\nFile.write(\"#{file_path}.minisig\", signature.to_s)\n```\n\n### Generate a key pair\n\n```rb\npassword = \"password\" # or nil, to generate a private key without encryption\nkeypair = Minisign::KeyPair.new(password)\nkeypair.private_key # Minisign::PrivateKey\nkeypair.public_key # Minisign::PublicKey\n```\n\n## CLI\n\nThis gem provides an executable `minisign` that implements the CLI\nprovided by [jedisct1/minisign](https://github.com/jedisct1/minisign).\n\nSee command line options [here](https://jedisct1.github.io/minisign/#usage)\nor run the executable without any arguments to see usage options.\n\n## Local Development\n\n```\nirb -Ilib -rminisign\n```\n\n## Documentation\n\nThe documentation for this gem is published here: \nhttps://www.rubydoc.info/gems/minisign/\n\nor if working locally:\n\n```\nyard server --reload\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjshawl%2Fminisign","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjshawl%2Fminisign","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjshawl%2Fminisign/lists"}