@metamask/bip32-example-snap
Version:
MetaMask example snap demonstrating the use of `snap_getBip32Entropy`
60 lines (48 loc) • 1.76 kB
Markdown
# `/bip32-example-snap`
This snap demonstrates the use of `snap_getBip32Entropy` and
`snap_getBip32PublicKey` to derive a BIP-32 public key and private key from the
user's secret recovery phrase.
## Snap manifest
> **Note**: Using `snap_getBip32Entropy` and `snap_getBip32PublicKey`
> requires their respective `snap_getBip32Entropy` and `snap_getBip32PublicKey`
> permissions. Refer to [the documentation](https://docs.metamask.io/snaps/reference/rpc-api/#snap_getbip32entropy)
> for more information.
Along with other permissions, the manifest of this snap includes the
`snap_getBip32Entropy` and `snap_getBip32PublicKey` permissions:
```json
{
"initialPermissions": {
"snap_getBip32Entropy": [
{
"path": ["m", "44'", "0'"],
"curve": "secp256k1"
},
{
"path": ["m", "44'", "0'"],
"curve": "ed25519"
}
],
"snap_getBip32PublicKey": [
{
"path": ["m", "44'", "0'"],
"curve": "secp256k1"
}
]
}
}
```
Each of the items in the `snap_getBip32Entropy` and `snap_getBip32PublicKey`
permissions is an object with the following properties:
- `path`: The BIP-32 derivation path to use.
- `curve`: The elliptic curve to use. These methods support `secp256k1` and
`ed25519`.
## Snap usage
This snap exposes an `onRpcRequest` handler, which supports the following
JSON-RPC methods:
- `getPublicKey`: Get the public key for the given `path` and
`curve`.
- `signMessage`: Sign a `message` with the private key for the given `path`
and `curve`. The message is signed with the chosen curve's signing algorithm
(ECDSA for `secp256k1` and EdDSA for `ed25519`).
For more information, you can refer to
[the end-to-end tests](./src/index.test.tsx).