ethers-gcp-kms-signer
This is a wallet or signer that can be used together with Ethers.js applications.
Getting Started
npm i ethers-gcp-kms-signer
-
Create your asymmetric key as follows: https://cloud.google.com/kms/docs/creating-asymmetric-keys
-
Add the new service account to GCP with the correct KMS roles: Crypto KMS Signer
, Verifier
, Viewer
-
Provide the GCP service account credentials using an environment variable called GOOGLE_APPLICATION_CREDENTIALS
here
-
Use the GcpKmsSigner
constructor as shown below, and that will resolve the correct key to sign the transaction.
import { GcpKmsSigner } from "ethers-gcp-kms-signer";
const kmsCredentials = {
projectId: "gcp-project-id",
locationId: "global",
keyRingId: "kr-1",
keyId: "key-name",
keyVersion: "1",
};
const provider = ethers.providers.getDefaultProvider("ropsten");
let signer = new GcpKmsSigner(kmsCredentials);
signer = signer.connect(provider);
const tx = await signer.sendTransaction({
to: "0xE94E130546485b928C9C9b9A5e69EB787172952e",
value: ethers.utils.parseEther("0.01"),
});
console.log(tx);
Developers
Install
git clone
this repo
$ git clone https://github.com/openlawteam/ethers-gcp-kms-signer my-module
$ cd my-module
$ rm -rf .git
$ npm install
Just make sure to edit package.json
, README.md
and LICENSE
files accordingly with your module's info.
Commands
$ npm test
$ npm run coverage
$ npm run lint
$ npm run build
Commit message format
This boiler plate uses the semantic-release package to manage versioning. Once it has been set up, version numbers and Github release changelogs will be automatically managed. semantic-release uses the commit messages to determine the type of changes in the codebase. Following formalized conventions for commit messages, semantic-release automatically determines the next semantic version number, generates a changelog and publishes the release.
Use npm run commit
instead of git commit
in order to invoke Commitizen commit helper that helps with writing properly formatted commit messages.
License
MIT
Credits
All the credits to