{"id":22998414,"url":"https://github.com/btccom/secp256k1-go","last_synced_at":"2025-08-14T00:32:17.829Z","repository":{"id":57491728,"uuid":"90021469","full_name":"btccom/secp256k1-go","owner":"btccom","description":"Bindings to lib-secp256k1 for golang","archived":false,"fork":false,"pushed_at":"2017-09-20T14:31:54.000Z","size":178,"stargazers_count":26,"open_issues_count":1,"forks_count":21,"subscribers_count":8,"default_branch":"master","last_synced_at":"2024-06-20T08:17:44.998Z","etag":null,"topics":["bitcoin","cgo","ecdh","ecdsa","golang","libsecp256k1","secp256k1"],"latest_commit_sha":null,"homepage":null,"language":"Go","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/btccom.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":"2017-05-02T10:37:22.000Z","updated_at":"2023-03-10T11:58:00.000Z","dependencies_parsed_at":"2022-08-30T23:20:59.347Z","dependency_job_id":null,"html_url":"https://github.com/btccom/secp256k1-go","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btccom%2Fsecp256k1-go","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btccom%2Fsecp256k1-go/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btccom%2Fsecp256k1-go/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btccom%2Fsecp256k1-go/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/btccom","download_url":"https://codeload.github.com/btccom/secp256k1-go/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":229786993,"owners_count":18124014,"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":["bitcoin","cgo","ecdh","ecdsa","golang","libsecp256k1","secp256k1"],"created_at":"2024-12-15T06:13:20.830Z","updated_at":"2024-12-15T06:13:21.420Z","avatar_url":"https://github.com/btccom.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# secp256k1-go\n\nThis package provides bindings (using cgo) to the upstream [https://github.com/bitcoin-core/secp256k1](libsecp256k1) C library.\n\nIt exposes several high level functions for elliptic curve operations over the \nsecp256k1 curve, namely ECDSA, point \u0026 scalar operations, ECDH, and recoverable\nsignatures. \n\n## Warning\n\nIt should be mentioned that the upstream library is still experimental\nand has yet to be formally released. As such, you should think twice\nbefore installing this package. \n\nThe currently targeted version of libsecp256k1 is the latest master commit. \n\nCurrently two experimental libraries are also included and supported: ECDH and \nsignature recovery. These are included with the default installation, and\nmay eventually be discontinued by the same (as has happened with Schnorr). \n\n## Contributing\n\nTo start developing, clone the package from github, and from the\nsource directory, run the following to install the package.\n\n    git submodule update --init\n    make install\n    \nTests can be run by calling `make test`\nCoverage can be build by calling `make coverage`\nTo display a HTML code coverage report, call `make coverage-html`\n\nPlease make sure to include tests for new features.  \n\n## Rationale behind API\n\nThere have been some slight changes to the API exposed by libsecp256k1. \nThis section will document conventions adopted in the design. \n\n#### Always return error code from libsecp256k1\nThere are some functions which return more than one error code, indicating\nthe specific failure which occurred. With this in mind, the raw error\ncode is always returned as the first return value. \n\nTo help provide some meaning to the error codes, the last parameter will\nbe used to return reasonable error messages.\n\n#### Use write-by-reference where upstream uses it\nIn functions like EcPrivkeyTweakAdd, libsecp256k1 will take a pointer\nto the private key, tweaking the value in place (overwriting the original value)\n\nTo avoid making copies of secrets in memory, we allow upstream to\noverwrite the original values. If the to-be-written value is a new object,\nit is returned with the other return values (example: EcdsaSign)\n  ","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbtccom%2Fsecp256k1-go","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbtccom%2Fsecp256k1-go","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbtccom%2Fsecp256k1-go/lists"}