{"id":31923968,"url":"https://github.com/chainsafe/go-signature-adaptor","last_synced_at":"2025-10-13T23:59:24.818Z","repository":{"id":41811941,"uuid":"460638474","full_name":"ChainSafe/go-signature-adaptor","owner":"ChainSafe","description":"A pure Go implementation of ECDSA signature adaptors","archived":false,"fork":false,"pushed_at":"2023-02-13T20:49:51.000Z","size":44,"stargazers_count":9,"open_issues_count":1,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-10-02T02:53:28.003Z","etag":null,"topics":["cryptography","ecdsa","scriptless","secp256k1"],"latest_commit_sha":null,"homepage":"","language":"Go","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/ChainSafe.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":"2022-02-17T23:10:46.000Z","updated_at":"2024-01-18T05:06:01.000Z","dependencies_parsed_at":"2023-07-12T22:55:32.378Z","dependency_job_id":null,"html_url":"https://github.com/ChainSafe/go-signature-adaptor","commit_stats":null,"previous_names":["noot/go-signature-adaptor"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ChainSafe/go-signature-adaptor","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ChainSafe%2Fgo-signature-adaptor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ChainSafe%2Fgo-signature-adaptor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ChainSafe%2Fgo-signature-adaptor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ChainSafe%2Fgo-signature-adaptor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ChainSafe","download_url":"https://codeload.github.com/ChainSafe/go-signature-adaptor/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ChainSafe%2Fgo-signature-adaptor/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279017175,"owners_count":26086019,"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-13T02:00:06.723Z","response_time":61,"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":["cryptography","ecdsa","scriptless","secp256k1"],"created_at":"2025-10-13T23:58:46.719Z","updated_at":"2025-10-13T23:59:24.814Z","avatar_url":"https://github.com/ChainSafe.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# go-signature-adaptor\n\nPure Go implementation of signature adaptors using ECDSA. Currently implemented for secp256k1 but generalized to be extended over any curve. It is based off the [DLC spec](https://github.com/discreetlogcontracts/dlcspecs/blob/master/ECDSA-adaptor.md).\n\nAdaptor signatures are a kind of signature encryption. Just as you would expect this means you can’t get the signature from the encrypted signature unless you know the decryption key. As you might not necessarily expect, this encryption is one-time in that anyone who knows the encrypted signature can recover the decryption key from the decrypted signature.\n\nThis weird leaking of the decryption key is incredibly useful has numerous applications in blockchain space and cryptography more generally.\n\n## Example\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\t\"github.com/ChainSafe/go-signature-adaptor/secp256k1\"\n)\n\nfunc main() {\n\tmsg := []byte{1, 2, 3}\n\talice := secp256k1.GenerateKeypair()\n\tbob := secp256k1.GenerateKeypair()\n\n\tadaptor, _ := alice.AdaptorSign(msg, bob.Public())\n\n\tok, _ := alice.Public().VerifyAdaptor(msg[:], bob.Public(), adaptor)\n\tif !ok {\n\t\tpanic(\"Alice sent invalid adaptor\")\n\t}\n\n\tsig, _ := adaptor.Decrypt(bob.Private().Inner())\n\tsigBytes, _ := sig.EncodeRecoverable()\n\tfmt.Println(\"Posting decrypted ECDSA signature on-chain\", sigBytes, \"🚀\")\n}\n```\n\n## Requirements\n\ngo 1.17+\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchainsafe%2Fgo-signature-adaptor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchainsafe%2Fgo-signature-adaptor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchainsafe%2Fgo-signature-adaptor/lists"}