{"id":14062709,"url":"https://github.com/knadh/pfxsigner","last_synced_at":"2025-10-06T18:57:02.759Z","repository":{"id":45282410,"uuid":"232509267","full_name":"knadh/pfxsigner","owner":"knadh","description":"A CLI utility and web server for digitally signing PDFs with docsign loaded from PFX (PKCS#12) files","archived":false,"fork":false,"pushed_at":"2021-12-24T12:59:50.000Z","size":33,"stargazers_count":78,"open_issues_count":2,"forks_count":21,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-10-04T08:45:11.690Z","etag":null,"topics":["digital-signature","pdf","pdf-sign","pdf-signature"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/knadh.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":"2020-01-08T07:54:05.000Z","updated_at":"2025-09-27T18:04:49.000Z","dependencies_parsed_at":"2022-08-26T05:01:11.759Z","dependency_job_id":null,"html_url":"https://github.com/knadh/pfxsigner","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/knadh/pfxsigner","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/knadh%2Fpfxsigner","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/knadh%2Fpfxsigner/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/knadh%2Fpfxsigner/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/knadh%2Fpfxsigner/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/knadh","download_url":"https://codeload.github.com/knadh/pfxsigner/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/knadh%2Fpfxsigner/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278289491,"owners_count":25962356,"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","status":"online","status_checked_at":"2025-10-04T02:00:05.491Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["digital-signature","pdf","pdf-sign","pdf-signature"],"created_at":"2024-08-13T07:01:53.627Z","updated_at":"2025-10-06T18:57:02.742Z","avatar_url":"https://github.com/knadh.png","language":"Go","funding_links":[],"categories":["Go"],"sub_categories":[],"readme":"\u003ca href=\"https://zerodha.tech\"\u003e\u003cimg src=\"https://zerodha.tech/static/images/github-badge.svg\" align=\"right\" /\u003e\u003c/a\u003e\n\n# pfxsigner\npfxsigner is a utility (CLI) and an HTTP server for digitally signing PDFs with signatures loaded from PFX (PKCS #12) certificates. It can load multiple named certificates from PFX files and sign PDFs with them.\n\n## Configuration\nThe signature properties are recorded in a JSON file. See `props.json.sample`.\n\nMultiple PFX files can be loaded by specifying the `-pfx certname|/cert/path.pfx|certpassword` param multiple times.\n\n## CLI\nThe CLI mode supports multi-threaded bulk-signing of PDFs.\n\n```shell\n# Pipe list of documents to convert to stdin. Each line should be in the format src-doc.pdf|signed-doc.pdf\n# eg:\n# mycert|a.pdf|a-signed.pdf\n# mycert|b.pdf|b-signed.pdf\necho \"in.pdf|out.pdf\" | ./pfxsigner -pfx \"mycert|/path/cert.pfx|certpass\" -props-file \"props.json.sample\" cli -workers 4\n```\n\n## Server\nIn the server mode, pfxsigner exposes an HTTP API to which a PDF file and signature properties (optional) can be posted to received a signed PDF.\n\n```shell\n# Start the server\n./pfxsigner -pfx \"mycert|/path/cert.pfx|certpass\" -props-file \"props.json\" server\n```\n\n```shell\n# Sign a pdf\n\nREQ=$(cat props.json.sample)\ncurl -F \"props=$REQ\" -F 'file=@./test.pdf' -o './test-signed.pdf' localhost:8000/document\n```\n\n## Docker\n\nYou can use the [official]() Docker image to run `pfxsigner`.\n\n**NOTE**: You'll need to mount `cert.pfx` and `props.json` from a directory available on host machine to a directory inside container. You can do that by passing `-v \u003c/path/on/host\u003e:\u003c/path/on/container\u003e` while launching the container.\n\n```shell\n# For example `./data` contains `cert.pfx` and `props.json`.\nexport PFX_PASSWORD=mysecurepass\ndocker run -it -p 8000:8000 -v \"$PWD\"/data:/data kailashnadh/pfxsigner:latest -pfx-file /data/cert.pfx  -pfx-password $PFX_PASSWORD -props-file /data/props.json server\n```\n\n### API\nThe API endpoint is `:8000/document`. It accepts a POST request (multipart/form-data) with the following fields.\n\n| Field   |                                                               |\n|---------|---------------------------------------------------------------|\n| `props` | Signature properties as a JSON string (see props.json.sample). If not set, the default properties loaded during runtime are used |\n| `file`  | The PDF file to sign                                          |\n\n## License\n\npfxsigner is licensed under the AGPL v3 license.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fknadh%2Fpfxsigner","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fknadh%2Fpfxsigner","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fknadh%2Fpfxsigner/lists"}