{"_id":"@0xsequence/google-kms-signer","_rev":"6-3729ae55388ae0021e86213a435732b2","name":"@0xsequence/google-kms-signer","dist-tags":{"snapshot":"0.0.0","latest":"0.3.0"},"versions":{"0.0.0":{"name":"@0xsequence/google-kms-signer","version":"0.0.0","keywords":[],"author":"","license":"ISC","_id":"@0xsequence/google-kms-signer@0.0.0","maintainers":[{"name":"milkytaste","email":"screaminghawk@gmail.com"},{"name":"naivesheep","email":"wh@horizongames.net"},{"name":"pkieltyka","email":"pk@horizon.io"},{"name":"phabc","email":"ph.castonguay@gmail.com"},{"name":"agusx1211","email":"agusxrun@gmail.com"},{"name":"acrylix","email":"michaelyykk@gmail.com"}],"dist":{"shasum":"3c6fe310d194ae1fc6e5785d89c44e1d73916097","tarball":"https://registry.npmjs.org/@0xsequence/google-kms-signer/-/google-kms-signer-0.0.0.tgz","fileCount":19,"integrity":"sha512-pK5cTG5jFKgFg7jYkzOO8ug7rwP3Rlovr1CLbOwojCVzt1l2IT6ETEv+OB1ZleSMDiRcPFOO5hrJZmQOA7fxFg==","signatures":[{"sig":"MEUCIQCEIQhJ1Yn4xSGUBRtykYYLhH1j0lLMxpLVhbHAdGNZagIgQeh2M5nZPE4YfO5WKHLJ9671GgK62rA5I5HOWM/KKTE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":14743107},"main":"dist/index.js","_from":"file:0xsequence-google-kms-signer-0.0.0.tgz","types":"./dist/index.d.ts","scripts":{"lint":"eslint --config .eslintrc.cjs --fix \"**/*.ts\"","test":"NODE_OPTIONS='--import tsx' concurrently --kill-others --success first --hide 0 \"hardhat node\" \"wait-on http://127.0.0.1:8545 && mocha --extension ts\"","build":"rm -f dist/*.d.ts && tsc --declaration --declarationMap --emitDeclarationOnly --declarationDir dist && esbuild index.ts --outdir=dist --bundle --minify --sourcemap --platform=node","format":"prettier --write \"**/*.ts\""},"_npmUser":{"name":"naivesheep","email":"wh@horizongames.net"},"_resolved":"/run/user/1000/822f70fb7fd2951cd2cae89190832d34/0xsequence-google-kms-signer-0.0.0.tgz","_integrity":"sha512-pK5cTG5jFKgFg7jYkzOO8ug7rwP3Rlovr1CLbOwojCVzt1l2IT6ETEv+OB1ZleSMDiRcPFOO5hrJZmQOA7fxFg==","_npmVersion":"10.2.3","description":"[GoogleKmsSigner](https://github.com/0xsequence/google-kms-signer) is an [ethers.js](https://ethers.org)- and [sequence.js](https://github.com/0xsequence/sequence.js)-compatible signer using [Google Cloud Key Management Service](https://cloud.google.com/s","directories":{},"_nodeVersion":"20.10.0","dependencies":{"pkijs":"^3.0.15","asn1js":"^3.0.5","@google-cloud/kms":"^4.0.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","chai":"4","mocha":"^10.2.0","dotenv":"^16.3.1","eslint":"^8.56.0","ethers":"5","esbuild":"^0.19.11","hardhat":"^2.19.4","wait-on":"^7.2.0","prettier":"^3.1.1","typescript":"^5.3.3","@types/chai":"^4.3.11","@types/mocha":"^10.0.6","concurrently":"^8.2.2","@0xsequence/auth":"^1.6.2","chai-as-promised":"^7.1.1","@0xsequence/tests":"^1.6.2","@0xsequence/provider":"^1.6.2","eslint-plugin-import":"^2.29.1","eslint-config-prettier":"^9.1.0","@types/chai-as-promised":"^7.1.8","@typescript-eslint/eslint-plugin":"^6.16.0"},"peerDependencies":{"ethers":"5"},"_npmOperationalInternal":{"tmp":"tmp/google-kms-signer_0.0.0_1704376548098_0.38614870202723006","host":"s3://npm-registry-packages"}},"0.0.1":{"name":"@0xsequence/google-kms-signer","version":"0.0.1","keywords":["sequence","sequence.js","0xsequence","google","kms","signer","ethers","ethers.js"],"author":{"name":"Horizon Blockchain Games Inc."},"license":"Apache-2.0","_id":"@0xsequence/google-kms-signer@0.0.1","maintainers":[{"name":"milkytaste","email":"screaminghawk@gmail.com"},{"name":"naivesheep","email":"wh@horizongames.net"},{"name":"pkieltyka","email":"pk@horizon.io"},{"name":"phabc","email":"ph.castonguay@gmail.com"},{"name":"agusx1211","email":"agusxrun@gmail.com"},{"name":"acrylix","email":"michaelyykk@gmail.com"}],"dist":{"shasum":"1dcd7e36d007faa617ac77455972b1c7d77cb2f8","tarball":"https://registry.npmjs.org/@0xsequence/google-kms-signer/-/google-kms-signer-0.0.1.tgz","fileCount":19,"integrity":"sha512-bKVQjsyzpBskQo8pUCeN2igmxq2CbbdFdCxLnlJDAtyc0LFZ74xFN5b+BATyoSnNpb6mdWu7ZlFS3l2TaSSMZw==","signatures":[{"sig":"MEUCIE9sLrLJWjyu3tTPwHFVxhZKrDDoPFJ5mCwHvNb81uDcAiEArv4fiRWJdSjxqmf+Dx6RzCRMigFKrL0DiVm4jHunlqM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":14743362},"main":"dist/index.js","_from":"file:0xsequence-google-kms-signer-0.0.1.tgz","types":"./dist/index.d.ts","scripts":{"lint":"eslint --config .eslintrc.cjs --fix \"**/*.ts\"","test":"NODE_OPTIONS='--import tsx' concurrently --kill-others --success first --hide 0 \"hardhat node\" \"wait-on http://127.0.0.1:8545 && mocha --extension ts\"","build":"rm -f dist/*.d.ts && tsc --declaration --declarationMap --emitDeclarationOnly --declarationDir dist && esbuild index.ts --outdir=dist --bundle --minify --sourcemap --platform=node","format":"prettier --write \"**/*.ts\""},"_npmUser":{"name":"naivesheep","email":"wh@horizongames.net"},"_resolved":"/run/user/1000/0d3c913380d3e977b063fe24d544b530/0xsequence-google-kms-signer-0.0.1.tgz","_integrity":"sha512-bKVQjsyzpBskQo8pUCeN2igmxq2CbbdFdCxLnlJDAtyc0LFZ74xFN5b+BATyoSnNpb6mdWu7ZlFS3l2TaSSMZw==","_npmVersion":"10.2.3","description":"an ethers.js- and sequence.js-compatible signer using Google Cloud Key Management Service keys","directories":{},"_nodeVersion":"20.10.0","dependencies":{"pkijs":"^3.0.15","asn1js":"^3.0.5","@google-cloud/kms":"^4.0.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","chai":"4","mocha":"^10.2.0","dotenv":"^16.3.1","eslint":"^8.56.0","ethers":"5","esbuild":"^0.19.11","hardhat":"^2.19.4","wait-on":"^7.2.0","prettier":"^3.1.1","typescript":"^5.3.3","@types/chai":"^4.3.11","@types/mocha":"^10.0.6","concurrently":"^8.2.2","@0xsequence/auth":"^1.6.2","chai-as-promised":"^7.1.1","@0xsequence/tests":"^1.6.2","@0xsequence/provider":"^1.6.2","eslint-plugin-import":"^2.29.1","eslint-config-prettier":"^9.1.0","@types/chai-as-promised":"^7.1.8","@typescript-eslint/eslint-plugin":"^6.16.0"},"peerDependencies":{"ethers":"5"},"_npmOperationalInternal":{"tmp":"tmp/google-kms-signer_0.0.1_1704378553971_0.7740892914629969","host":"s3://npm-registry-packages"}},"0.2.0":{"name":"@0xsequence/google-kms-signer","version":"0.2.0","keywords":["sequence","sequence.js","0xsequence","google","kms","signer","ethers","ethers.js"],"author":{"name":"Horizon Blockchain Games Inc."},"license":"Apache-2.0","_id":"@0xsequence/google-kms-signer@0.2.0","maintainers":[{"name":"naivesheep","email":"wh@horizongames.net"},{"name":"pkieltyka","email":"pk@horizon.io"},{"name":"phabc","email":"ph.castonguay@gmail.com"},{"name":"agusx1211","email":"agusxrun@gmail.com"},{"name":"taylanpince","email":"taylan@hipolabs.com"},{"name":"milkytaste","email":"screaminghawk@gmail.com"}],"dist":{"shasum":"161d337d85c83e233e4d910b2d1e65c4ec0fb9e2","tarball":"https://registry.npmjs.org/@0xsequence/google-kms-signer/-/google-kms-signer-0.2.0.tgz","fileCount":19,"integrity":"sha512-K119uRlVEQpLbe9cQhnKT/n8TvrZfLuSM0c8ldAN8wdK2regnC+PEtJu0m8XMq2FiweuR6j/IOhcxT3fG0cWpQ==","signatures":[{"sig":"MEUCIE3zz5OG8IdA3wVE9GkqY+m9UyNib4E8yzZSfHyNKVETAiEAukjrkwI4gmZ7JI0g2cUqawLu1ov//8U3153x8O11YXc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15381029},"main":"dist/index.js","_from":"file:0xsequence-google-kms-signer-0.2.0.tgz","types":"./dist/index.d.ts","scripts":{"lint":"eslint --config .eslintrc.cjs --fix \"**/*.ts\"","test":"NODE_OPTIONS='--import tsx' concurrently --kill-others --success first --hide 0 \"hardhat node\" \"wait-on http://127.0.0.1:8545 && mocha --extension ts\"","build":"rm -f dist/*.d.ts && tsc --declaration --declarationMap --emitDeclarationOnly --declarationDir dist && esbuild index.ts --outdir=dist --bundle --minify --sourcemap --platform=node","format":"prettier --write \"**/*.ts\""},"_npmUser":{"name":"pkieltyka","email":"pk@horizon.io"},"_resolved":"/private/var/folders/fl/wwk4592n7jq38cl74c3wntb80000gn/T/991a46bc562861c39a1d21dead488645/0xsequence-google-kms-signer-0.2.0.tgz","_integrity":"sha512-K119uRlVEQpLbe9cQhnKT/n8TvrZfLuSM0c8ldAN8wdK2regnC+PEtJu0m8XMq2FiweuR6j/IOhcxT3fG0cWpQ==","_npmVersion":"10.9.2","description":"an ethers.js- and sequence.js-compatible signer using Google Cloud Key Management Service keys","directories":{},"_nodeVersion":"23.7.0","dependencies":{"pkijs":"^3.0.15","asn1js":"^3.0.5","@google-cloud/kms":"^4.0.1","@ethersproject/bytes":"^5.7.0","@ethersproject/properties":"^5.7.0","@ethersproject/signing-key":"^5.7.0","@ethersproject/transactions":"^5.7.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","chai":"4","mocha":"^10.2.0","dotenv":"^16.3.1","eslint":"^8.56.0","ethers":"^6","esbuild":"^0.19.11","hardhat":"^2.19.4","wait-on":"^7.2.0","prettier":"^3.1.1","typescript":"^5.3.3","@types/chai":"^4.3.11","@types/mocha":"^10.0.6","concurrently":"^8.2.2","@0xsequence/auth":"^2.2.11","chai-as-promised":"^7.1.1","@0xsequence/tests":"^2.2.11","@0xsequence/provider":"^2.2.13","eslint-plugin-import":"^2.29.1","eslint-config-prettier":"^9.1.0","@types/chai-as-promised":"^7.1.8","@typescript-eslint/eslint-plugin":"^6.16.0"},"peerDependencies":{"ethers":"^6"},"_npmOperationalInternal":{"tmp":"tmp/google-kms-signer_0.2.0_1739642510811_0.08077295139128116","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@0xsequence/google-kms-signer","version":"0.3.0","description":"an ethers.js- and sequence.js-compatible signer using Google Cloud Key Management Service keys","main":"dist/index.js","keywords":["sequence","sequence.js","0xsequence","google","kms","signer","ethers","ethers.js"],"author":{"name":"Horizon Blockchain Games Inc."},"license":"Apache-2.0","devDependencies":{"@0xsequence/auth":"^2.2.11","@0xsequence/provider":"^2.2.13","@0xsequence/tests":"^2.2.11","@types/chai":"^4.3.11","@types/chai-as-promised":"^7.1.8","@types/mocha":"^10.0.6","@typescript-eslint/eslint-plugin":"^6.16.0","chai":"4","chai-as-promised":"^7.1.1","concurrently":"^8.2.2","dotenv":"^16.3.1","esbuild":"^0.19.11","eslint":"^8.56.0","eslint-config-prettier":"^9.1.0","eslint-plugin-import":"^2.29.1","ethers":"^6","hardhat":"^2.19.4","mocha":"^10.2.0","prettier":"^3.1.1","tsx":"^4.7.0","typescript":"^5.3.3","wait-on":"^7.2.0"},"dependencies":{"@ethersproject/bytes":"^5.7.0","@ethersproject/properties":"^5.7.0","@ethersproject/signing-key":"^5.7.0","@ethersproject/transactions":"^5.7.0","@google-cloud/kms":"^4.0.1","@peculiar/asn1-ecc":"^2.3.15","@peculiar/asn1-schema":"^2.3.15","@peculiar/asn1-x509":"^2.3.15","asn1js":"^3.0.5","pkijs":"^3.0.15"},"peerDependencies":{"ethers":"^6.13.5"},"scripts":{"build":"rm -f dist/*.d.ts && tsc --declaration --declarationMap --emitDeclarationOnly --declarationDir dist && esbuild index.ts --outdir=dist --bundle --minify --sourcemap --platform=node","format":"prettier --write \"**/*.ts\"","lint":"eslint --config .eslintrc.cjs --fix \"**/*.ts\"","test":"NODE_OPTIONS='--import tsx' concurrently --kill-others --success first --hide 0 \"hardhat node\" \"wait-on http://127.0.0.1:8545 && mocha --extension ts\""},"_id":"@0xsequence/google-kms-signer@0.3.0","types":"./dist/index.d.ts","_integrity":"sha512-XOzlIxthF7zKBOUp+A0hQ7tMHUV5tfsIB2BGZyWFBIBbE2DXgGkGGTX6sRSEVlU1wqR8AI5HM69p8ZqvfBhaUw==","_resolved":"/private/var/folders/fl/wwk4592n7jq38cl74c3wntb80000gn/T/3fd0e86cb10ccc1972915ad7c7d831b1/0xsequence-google-kms-signer-0.3.0.tgz","_from":"file:0xsequence-google-kms-signer-0.3.0.tgz","_nodeVersion":"23.7.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-XOzlIxthF7zKBOUp+A0hQ7tMHUV5tfsIB2BGZyWFBIBbE2DXgGkGGTX6sRSEVlU1wqR8AI5HM69p8ZqvfBhaUw==","shasum":"6799238f1a8680134b0abfcde5f46d32214efce1","tarball":"https://registry.npmjs.org/@0xsequence/google-kms-signer/-/google-kms-signer-0.3.0.tgz","fileCount":19,"unpackedSize":14002444,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIAy/1jXYz2NVqQFs8pQfR4LHAM3UeGAqLka24J2ry82zAiEAm5PC4+43YNU+QA4qXYYid6LQ5LcsBedYGXONmsESwKU="}]},"_npmUser":{"name":"pkieltyka","email":"pk@horizon.io"},"directories":{},"maintainers":[{"name":"naivesheep","email":"wh@horizongames.net"},{"name":"pkieltyka","email":"pk@horizon.io"},{"name":"agusx1211","email":"agusxrun@gmail.com"},{"name":"taylanpince","email":"taylan@hipolabs.com"},{"name":"milkytaste","email":"screaminghawk@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/google-kms-signer_0.3.0_1740684326961_0.5777207493269481"},"_hasShrinkwrap":false}},"time":{"created":"2024-01-04T13:55:47.965Z","modified":"2025-02-27T19:25:27.470Z","0.0.0":"2024-01-04T13:55:48.380Z","0.0.1":"2024-01-04T14:29:14.234Z","0.2.0":"2025-02-15T18:01:51.072Z","0.3.0":"2025-02-27T19:25:27.182Z"},"author":{"name":"Horizon Blockchain Games Inc."},"license":"Apache-2.0","keywords":["sequence","sequence.js","0xsequence","google","kms","signer","ethers","ethers.js"],"description":"an ethers.js- and sequence.js-compatible signer using Google Cloud Key Management Service keys","maintainers":[{"name":"naivesheep","email":"wh@horizongames.net"},{"name":"pkieltyka","email":"pk@horizon.io"},{"name":"agusx1211","email":"agusxrun@gmail.com"},{"name":"taylanpince","email":"taylan@hipolabs.com"},{"name":"milkytaste","email":"screaminghawk@gmail.com"}],"readme":"# google-kms-signer\n\n[GoogleKmsSigner](https://github.com/0xsequence/google-kms-signer) is an [ethers.js](https://ethers.org)- and [sequence.js](https://github.com/0xsequence/sequence.js)-compatible signer using [Google Cloud Key Management Service](https://cloud.google.com/security/products/security-key-management) keys\n\n## prerequisites\n\n### create google cloud kms key\n\nhttps://console.cloud.google.com/security/kms/keyrings\n\n1. create project or use existing one\n2. create key ring or use existing one\n3. create key\n  - protection level: hsm\n  - key material: hsm-generated\n  - purpose: asymmetric sign\n  - algorithm: elliptic curve secp256k1 - sha256 digest\n\n### set up application default credentials\n\nhttps://cloud.google.com/kms/docs/reference/libraries#authentication\n\n1. install [gcloud cli](https://cloud.google.com/sdk/docs/install)\n2. `gcloud auth application-default login`\n3. authenticate\n\n## installation\n\nthese instructions assume [pnpm](https://pnpm.io), please refer to docs if you use something else\n\n```sh\npnpm add @0xsequence/google-kms-signer\n```\n\n## usage\n\n### integration\n\ncreate a signer:\n\n```ts\nimport { GoogleKmsSigner } from '@0xsequence/google-kms-signer'\n\nconst signer = new GoogleKmsSigner({\n  project: 'my-project',\n  location: 'my-location',\n  keyRing: 'my-key-ring',\n  cryptoKey: 'my-crypto-key',\n  cryptoKeyVersion: 'my-crypto-key-version'\n})\n```\n\nget your signer's address:\n\n```ts\nconst address = await signer.getAddress()\nconsole.log(address)\n```\n\nsign a message:\n\n```ts\nconst message = 'hello world'\nconst signature = await signer.signMessage(message)\n\nconsole.log(signature)\nconsole.log(`${ethers.utils.verifyMessage(message, signature)} = ${address}`)\n```\n\nsend a transaction:\n\n```ts\nconst provider = new ethers.providers.JsonRpcProvider('https://my-json-rpc-provider.com')\nconst connectedSigner = signer.connect(provider)\n\nconst response = await connectedSigner.sendTransaction({\n  to: 'destination address',\n  value: 123\n})\n\nconst receipt = await response.wait()\nconsole.log(receipt)\n```\n\nsign for a sequence wallet:\n\n```ts\nimport { Session } from '@0xsequence/auth'\nimport { isValidMessageSignature } from '@0xsequence/provider'\n\nconst session = await Session.singleSigner({\n  signer,\n  projectAccessKey: 'my-project-access-key'\n})\n\nconst message = ethers.utils.toUtf8Bytes('hello world')\nconst signature = await session.account.signMessage(message, chainId, 'eip6492')\n\nconsole.log(isValidMessageSignature(session.account.address, message, signature, provider))\n```\n\n### running tests\n\n```sh\ncp .env.sample .env\n```\n\nedit the .env file, then:\n\n```sh\npnpm test\n```\n","readmeFilename":"README.md"}