#[cfg(feature = "aws_kms")]
pub mod aws {
use crate::signers::{eth::EthSigner, SignerError};
pub struct AwsEthKmsSigner {
key_id: String,
}
impl AwsEthKmsSigner {
pub fn from_env(_role: &str) -> Result<Self, SignerError> {
let key_id = std::env::var("SBO3L_ETH_AWS_KMS_KEY_ID")
.map_err(|_| SignerError::MissingEnv("SBO3L_ETH_AWS_KMS_KEY_ID"))?;
if key_id.is_empty() {
return Err(SignerError::MissingEnv("SBO3L_ETH_AWS_KMS_KEY_ID"));
}
Ok(Self { key_id })
}
}
impl EthSigner for AwsEthKmsSigner {
fn sign_digest_hex(&self, _digest: &[u8; 32]) -> Result<String, SignerError> {
Err(SignerError::Kms(format!(
"aws_kms eth signer (key={}) not yet implemented; pull aws-sdk-kms in the eth_kms_aws_live follow-up",
self.key_id
)))
}
fn eth_address(&self) -> Result<String, SignerError> {
Err(SignerError::Kms(format!(
"aws_kms eth signer (key={}) not yet implemented",
self.key_id
)))
}
fn key_id(&self) -> &str {
&self.key_id
}
}
}
#[cfg(feature = "gcp_kms")]
pub mod gcp {
use crate::signers::{eth::EthSigner, SignerError};
pub struct GcpEthKmsSigner {
key_name: String,
}
impl GcpEthKmsSigner {
pub fn from_env(_role: &str) -> Result<Self, SignerError> {
let key_name = std::env::var("SBO3L_ETH_GCP_KMS_KEY_NAME")
.map_err(|_| SignerError::MissingEnv("SBO3L_ETH_GCP_KMS_KEY_NAME"))?;
if key_name.is_empty() {
return Err(SignerError::MissingEnv("SBO3L_ETH_GCP_KMS_KEY_NAME"));
}
Ok(Self { key_name })
}
}
impl EthSigner for GcpEthKmsSigner {
fn sign_digest_hex(&self, _digest: &[u8; 32]) -> Result<String, SignerError> {
Err(SignerError::Kms(format!(
"gcp_kms eth signer (key={}) not yet implemented; pull google-cloud-kms in the eth_kms_gcp_live follow-up",
self.key_name
)))
}
fn eth_address(&self) -> Result<String, SignerError> {
Err(SignerError::Kms(format!(
"gcp_kms eth signer (key={}) not yet implemented",
self.key_name
)))
}
fn key_id(&self) -> &str {
&self.key_name
}
}
}