{"id":22646401,"url":"https://github.com/fireblocks/fireblocks-bls-tools","last_synced_at":"2025-08-25T00:34:19.951Z","repository":{"id":98889569,"uuid":"315103904","full_name":"fireblocks/fireblocks-bls-tools","owner":"fireblocks","description":null,"archived":false,"fork":false,"pushed_at":"2023-07-25T16:34:29.000Z","size":6066,"stargazers_count":8,"open_issues_count":1,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-06-11T22:49:39.234Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fireblocks.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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,"zenodo":null}},"created_at":"2020-11-22T18:22:00.000Z","updated_at":"2023-06-28T18:30:26.000Z","dependencies_parsed_at":"2025-04-12T00:34:49.983Z","dependency_job_id":"eea242e1-fbb4-4912-80ce-bef8bb57f5aa","html_url":"https://github.com/fireblocks/fireblocks-bls-tools","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/fireblocks/fireblocks-bls-tools","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fireblocks%2Ffireblocks-bls-tools","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fireblocks%2Ffireblocks-bls-tools/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fireblocks%2Ffireblocks-bls-tools/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fireblocks%2Ffireblocks-bls-tools/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fireblocks","download_url":"https://codeload.github.com/fireblocks/fireblocks-bls-tools/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fireblocks%2Ffireblocks-bls-tools/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":271984371,"owners_count":24853814,"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-08-24T02:00:11.135Z","response_time":111,"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":[],"created_at":"2024-12-09T06:10:25.386Z","updated_at":"2025-08-25T00:34:19.824Z","avatar_url":"https://github.com/fireblocks.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Fireblocks BLS12-381 Key Sharing and Verification Tool\n\n## Installation\n\n* `git clone https://github.com/fireblocks/fireblocks-bls-tools.git`\n* `cd fireblocks-bls-tools`\n\n### Prerequisites\n\nKey Generation:\n* RSA public keys for each entity which should can a BLS key share\n\nKey Share Validation:\n* RSA private key (possibly with passphrase)\n* Verification file generted during key generation, encrypted with above RSA key\n\n## Running Locally\n\n### Build the utility locally\n* install python 3\n* install pip 3\n* run: `pip3 install -r requirements.txt`\n\n### Generate BLS12-381 key and encrypted shares, with verfication files\n`./fb_bls_generate_key.py \u003clist of RSA public keys for all parties (space seperated)\u003e -t \u003cthreshold\u003e`\n\nOutput:\n* Generated BLS12-381 address (to use in eth2.0)\n* Table of ids set for each party (corresponding to RSA public keys)\n* Generted BLS key json (containing encrypted BLS private key shares) for each id\n\n### Verification of generated key shares\n`./fb_bls_verify_key.py \u003cbls_key_json\u003e [--RSA \u003cRSA_private_key_file\u003e]`\n\n* Verification of signature shares on test message can be reconstructed to a valid signature\n* If RSA file given, verify test message was signed correctly with BLS private key share.\n\n### Derive a public key (at index), and generate a signature share on a message\n`./fb_bls_derive_key_and_sign.py \u003cbls_key_json\u003e --index [--sign_msg --RSA \u003cRSA_private_key_file\u003e [--hex]]`\n\n* Derive a BLS public key (at index from master pubkey).\n* If given sign_msg (and RSA private key file), use decrypted BLS private key share to generate signature share on the message\n* sign_msg can be given in hexadecimal, and signed as bytes\n* Withdrawal credentials are also printed for the derived address\n\n### Verify signature, reconstructed from signature shares\n`./fb_bls_verify_signature.py \u003clist of bls_signature_json files (space seperated)\u003e [-t threshold]`\n\n* Verification of signature shares on test message can be reconstructed to a valid signature\n* If threshold is given, checks any subset of threshold signature shares can be reconstructed and verifies (otherwise just checks all)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffireblocks%2Ffireblocks-bls-tools","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffireblocks%2Ffireblocks-bls-tools","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffireblocks%2Ffireblocks-bls-tools/lists"}