Catalog npm
PACKAGE EXPLORERView in registry

@0xsequence/google-kms-signer

npm

an ethers.js- and sequence.js-compatible signer using Google Cloud Key Management Service keys

0xsequenceethersethers.jsgooglekmssequencesequence.jssigner
Versions collected4
Direct dependencies32From release 0.3.0
Last observed21 Oct, 10:20 UTC

README

Current package documentation

google-kms-signer

GoogleKmsSigner is an ethers.js- and sequence.js-compatible signer using Google Cloud Key Management Service keys

prerequisites

create google cloud kms key

https://console.cloud.google.com/security/kms/keyrings

  1. create project or use existing one
  2. create key ring or use existing one
  3. create key
  • protection level: hsm
  • key material: hsm-generated
  • purpose: asymmetric sign
  • algorithm: elliptic curve secp256k1 - sha256 digest

set up application default credentials

https://cloud.google.com/kms/docs/reference/libraries#authentication

  1. install gcloud cli
  2. gcloud auth application-default login
  3. authenticate

installation

these instructions assume pnpm, please refer to docs if you use something else

pnpm add @0xsequence/google-kms-signer

usage

integration

create a signer:

import { GoogleKmsSigner } from '@0xsequence/google-kms-signer'

const signer = new GoogleKmsSigner({
  project: 'my-project',
  location: 'my-location',
  keyRing: 'my-key-ring',
  cryptoKey: 'my-crypto-key',
  cryptoKeyVersion: 'my-crypto-key-version'
})

get your signer's address:

const address = await signer.getAddress()
console.log(address)

sign a message:

const message = 'hello world'
const signature = await signer.signMessage(message)

console.log(signature)
console.log(`${ethers.utils.verifyMessage(message, signature)} = ${address}`)

send a transaction:

const provider = new ethers.providers.JsonRpcProvider('https://my-json-rpc-provider.com')
const connectedSigner = signer.connect(provider)

const response = await connectedSigner.sendTransaction({
  to: 'destination address',
  value: 123
})

const receipt = await response.wait()
console.log(receipt)

sign for a sequence wallet:

import { Session } from '@0xsequence/auth'
import { isValidMessageSignature } from '@0xsequence/provider'

const session = await Session.singleSigner({
  signer,
  projectAccessKey: 'my-project-access-key'
})

const message = ethers.utils.toUtf8Bytes('hello world')
const signature = await session.account.signMessage(message, chainId, 'eip6492')

console.log(isValidMessageSignature(session.account.address, message, signature, provider))

running tests

cp .env.sample .env

edit the .env file, then:

pnpm test

Downloads & popularity

Awaiting observations

No metric observations yet

Download counts and popularity will appear here as the collector receives them.

Versions 4

Collected releases
VersionPublishedDirect dependenciesOpen version
0.3.0Registry latest27 Feb 202532
0.2.015 Feb 202529
0.0.14 Jan 202425
0.0.04 Jan 202425

Package advisories

0
No matching advisories collected

This describes our collected data; it is not a security assessment.

Metadata history

Meaningful changes
Current collected state Current

Observed since 21 Oct, 10:20 UTC

No superseded metadata states collected. Unchanged observations do not create new revisions.

Record identity

package:570d0f05d314f0065b8278618ae2f0af7aa3834db76e3e665332b56a0519d814