6 个版本
0.1.5 | 2023 年 12 月 20 日 |
---|---|
0.1.4 | 2023 年 7 月 25 日 |
0.1.3 | 2023 年 6 月 5 日 |
0.1.2 | 2023 年 4 月 19 日 |
#2396 in 魔法豆
398 每月下载量
17KB
303 行
ethers-gcp-kms-signer
安装
Cargo
cargo add ethers-gcp-kms-signer
用法
签署者
use ethers::prelude::*;
use ethers_gcp_kms_signer::{GcpKeyRingRef, GcpKmsProvider, GcpKmsSigner};
let project_id = std::env::var("GOOGLE_PROJECT_ID").expect("GOOGLE_PROJECT_ID");
let location = std::env::var("GOOGLE_LOCATION").expect("GOOGLE_LOCATION");
let keyring = std::env::var("GOOGLE_KEYRING").expect("GOOGLE_KEYRING");
let key_name = std::env::var("GOOGLE_KEY_NAME").expect("GOOGLE_KEY_NAME");
let keyring = GcpKeyRingRef::new(&project_id, &location, &keyring);
let provider = GcpKmsProvider::new(keyring)
.await
.expect("Failed to create GCP KMS provider");
let signer = GcpKmsSigner::new(provider, key_name.to_string(), 1, 1)
.await
.expect("get key");
您可以用它作为常规的 ethers
签署者
let provider = Provider::<Http>::try_from(RPC_URL).unwrap().with_signer(signer);
凭证
该库将尝试按照 GCP 的典型方式加载凭证-
- 如果应用程序在 k8s 集群中运行,它应该会自动获取凭证
- 如果设置了
GOOGLE_APPLICATION_CREDENTIALS
环境变量,尝试从该路径加载服务帐户 JSON
演示
仓库中包含一个示例应用程序,其中包含 terraform 清单来配置一个基于 HSM 的密钥,创建一个具有使用该密钥签名权限的服务帐户,并导出一个包含此服务帐户凭证的 json 密钥。
首先,初始化并应用 terraform
$ cd example/terraform
$ terraform init
$ terraform apply
输出服务帐户凭证
$ terraform output service_account_key > service_account_key.json
以导出可用的服务帐户密钥格式
$ cat service_account_key.json | jq -r | base64 -d > ../demo-app/service_account_key.json
运行示例
❯ export GOOGLE_PROJECT_ID=<project_id>
❯ export GOOGLE_LOCATION=<location>
❯ export GOOGLE_KEYRING=<keyring-name>
❯ export GOOGLE_KEY_NAME=<key-name>
❯ export GOOGLE_APPLICATION_CREDENTIALS=service_account_key.json
❯ cargo run
Compiling demo-app v0.1.0 (/home/grw/src/ethers-gcp-kms-signer/example/demo-app)
Finished dev [unoptimized + debuginfo] target(s) in 6.14s
Running `target/debug/demo-app`
Created signer: GcpKmsSigner { ... }
Signer address: 0xa2e83c0ecc9ffeddb34e027bf3c44971c45fca12
Anvil running at `https://127.0.0.1:40023`
Sent 1 ETH to the signer
Sent 1 Wei from the signer
Signer balance: 999960621324999999
许可
根据您的选择,许可协议为以下之一
- Apache 许可协议,版本 2.0 (LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT 许可协议 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
。
贡献
除非您明确说明,否则根据 Apache-2.0 许可证定义,您提交的任何有意包含在作品中的贡献,都将根据上述条款进行双重许可,不附加任何其他条款或条件。
请参阅 CONTRIBUTING.md。
依赖关系
~130MB
~2M SLoC