{"id":26509638,"url":"https://github.com/ppad-tech/bip32","last_synced_at":"2026-04-15T15:32:34.246Z","repository":{"id":278581990,"uuid":"934083474","full_name":"ppad-tech/bip32","owner":"ppad-tech","description":"Pure Haskell BIP32 hierarchical deterministic wallets","archived":false,"fork":false,"pushed_at":"2025-06-21T11:05:35.000Z","size":64,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-06-21T12:19:21.320Z","etag":null,"topics":["bip32","bitcoin","haskell","hdkey","kdf","key-derivation"],"latest_commit_sha":null,"homepage":"","language":"Haskell","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/ppad-tech.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG","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,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-02-17T08:47:07.000Z","updated_at":"2025-06-21T11:05:38.000Z","dependencies_parsed_at":"2025-06-21T12:18:54.708Z","dependency_job_id":null,"html_url":"https://github.com/ppad-tech/bip32","commit_stats":null,"previous_names":["ppad-tech/bip32"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/ppad-tech/bip32","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ppad-tech%2Fbip32","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ppad-tech%2Fbip32/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ppad-tech%2Fbip32/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ppad-tech%2Fbip32/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ppad-tech","download_url":"https://codeload.github.com/ppad-tech/bip32/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ppad-tech%2Fbip32/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279007482,"owners_count":26084313,"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-11T02:00:06.511Z","response_time":55,"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":["bip32","bitcoin","haskell","hdkey","kdf","key-derivation"],"created_at":"2025-03-21T01:19:59.397Z","updated_at":"2026-04-15T15:32:34.232Z","avatar_url":"https://github.com/ppad-tech.png","language":"Haskell","readme":"# bip32\n\n[![](https://img.shields.io/hackage/v/ppad-bip32?color=blue)](https://hackage.haskell.org/package/ppad-bip32)\n![](https://img.shields.io/badge/license-MIT-brightgreen)\n[![](https://img.shields.io/badge/haddock-bip32-lightblue)](https://docs.ppad.tech/bip32)\n\nAn implementation of [BIP32](https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki) hierarchical deterministic wallets and extended keys.\n\n## Usage\n\nA sample GHCi session:\n\n```\n  \u003e :set -XOverloadedStrings\n  \u003e\n  \u003e import Crypto.HDKey.BIP32\n  \u003e\n  \u003e -- derive a master node from a master seed\n  \u003e let Just m = master \"plenty of entropy\"\n  \u003e\n  \u003e -- use 'xpub', 'xprv', etc. to serialize\n  \u003e xpub m\n  \"xpub661MyMwAqRbcG6TPJvVs1yKFJGtN4vi785g2xDacQ9Luyw3gyAyvY5DNatPzfsUQK4nTUAmQboxw3WYDHtY4vfcGJR4FAuLLaUp2t7ejhoC\"\n  \u003e\n  \u003e -- derive child nodes via a path\n  \u003e let Just child = derive m \"m/44'/0'/0'/0/0\"\n  \u003e xpub child\n  \"xpub6GEwJiJFou5PH6LL8cagArvArrXhSaq35XWnT73CShNRBJa9jxHsWnPsydvmN2vcPBg9KHfRyYLiYnUKCJ8ncba4CgzF56n4kpkqMTSFy35\"\n  \u003e\n  \u003e -- use the 'hd_key' record to extract the extended key\n  \u003e let Right my_xprv = hd_key child\n  \u003e xprv_key my_xprv\n  82064013501759548583899633460204676801585795402966146917762774758050650403971\n  \u003e\n  \u003e -- use 'parse' to import an extended key\n  \u003e let Just hd = xprv child \u003e\u003e= parse\n  \u003e hd == child\n  True\n```\n\n## Documentation\n\nHaddocks (API documentation, etc.) are hosted at\n[docs.ppad.tech/bip32](https://docs.ppad.tech/bip32).\n\n## Performance\n\nThe aim is best-in-class performance for pure Haskell code. Most time\nis spent on elliptic curve multiplication or hashing; strict BIP32\nfunctionality is only a small layer on top of that.\n\nCurrent benchmark figures on an M4 Silicon MacBook Air look like (use\n`cabal bench` to run the benchmark suite):\n\n```\n  benchmarking ppad-bip32 (wNAF)/derive_child_pub'\n  time                 207.4 μs   (207.3 μs .. 207.5 μs)\n                       1.000 R²   (1.000 R² .. 1.000 R²)\n  mean                 207.8 μs   (207.7 μs .. 207.9 μs)\n  std dev              419.0 ns   (323.2 ns .. 586.1 ns)\n\n  benchmarking ppad-bip32 (wNAF)/derive_child_priv'\n  time                 177.6 μs   (177.4 μs .. 178.0 μs)\n                       1.000 R²   (1.000 R² .. 1.000 R²)\n  mean                 178.6 μs   (178.3 μs .. 178.8 μs)\n  std dev              878.1 ns   (741.3 ns .. 1.011 μs)\n\n  benchmarking ppad-bip32/xpub\n  time                 145.1 μs   (145.0 μs .. 145.1 μs)\n                       1.000 R²   (1.000 R² .. 1.000 R²)\n  mean                 145.1 μs   (145.1 μs .. 145.2 μs)\n  std dev              289.5 ns   (214.5 ns .. 400.7 ns)\n\n  benchmarking ppad-bip32/xprv\n  time                 5.715 μs   (5.710 μs .. 5.721 μs)\n                       1.000 R²   (1.000 R² .. 1.000 R²)\n  mean                 5.712 μs   (5.708 μs .. 5.717 μs)\n  std dev              14.72 ns   (11.74 ns .. 20.46 ns)\n\n  benchmarking ppad-bip32/parse\n  time                 5.868 μs   (5.864 μs .. 5.873 μs)\n                       1.000 R²   (1.000 R² .. 1.000 R²)\n  mean                 5.876 μs   (5.871 μs .. 5.894 μs)\n  std dev              28.21 ns   (8.622 ns .. 56.93 ns)\n```\n\nYou should compile with the 'llvm' flag (and ensure [ppad-fixed][fixed],\n[ppad-sha256][sha256], [ppad-sha512][sha512], and [ppad-secp256k1][secp]\nare compiled with the 'llvm' flag) for maximum performance.\n\n## Security\n\nThis library aims at the maximum security achievable in a\ngarbage-collected language under an optimizing compiler such as GHC, in\nwhich strict constant-timeness can be [challenging to achieve][const].\n\nThe implementation within passes the official [BIP32 test\nvectors](https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki#\ntest-vectors), and all derivations involving secret keys execute in\nconstant time, and with constant allocation -- see the \"Security\" notes\nin the README of [ppad-secp256k1][secp] for more details.\n\nIf you discover any vulnerabilities, please disclose them via\nsecurity@ppad.tech.\n\n## Development\n\nYou'll require [Nix][nixos] with [flake][flake] support enabled. Enter a\ndevelopment shell with:\n\n```\n$ nix develop\n```\n\nThen do e.g.:\n\n```\n$ cabal repl ppad-bip32\n```\n\nto get a REPL for the main library.\n\n[nixos]: https://nixos.org/\n[flake]: https://nixos.org/manual/nix/unstable/command-ref/new-cli/nix3-flake.html\n[const]: https://www.chosenplaintext.ca/articles/beginners-guide-constant-time-cryptography.html\n[secp]: https://git.ppad.tech/secp256k1\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fppad-tech%2Fbip32","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fppad-tech%2Fbip32","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fppad-tech%2Fbip32/lists"}