use crate::TrustPolicy;
use anyhow::{Result, anyhow};
use sigstore::crypto::SigningScheme;
use sigstore::crypto::signing_key::SigStoreSigner;
pub struct TestSigner {
signer: SigStoreSigner,
public_key_pem: String,
}
impl TestSigner {
pub fn new() -> Result<Self> {
let signer = SigningScheme::ECDSA_P256_SHA256_ASN1
.create_signer()
.map_err(|e| anyhow!("create_signer: {e}"))?;
let public_key_pem = signer
.to_sigstore_keypair()
.map_err(|e| anyhow!("to_sigstore_keypair: {e}"))?
.public_key_to_pem()
.map_err(|e| anyhow!("public_key_to_pem: {e}"))?;
Ok(Self {
signer,
public_key_pem,
})
}
pub fn sign(&self, msg: &[u8]) -> Result<Vec<u8>> {
self.signer.sign(msg).map_err(|e| anyhow!("sign: {e}"))
}
pub fn public_key_pem(&self) -> &str {
&self.public_key_pem
}
pub fn trust_policy(&self) -> Result<TrustPolicy> {
TrustPolicy::from_pem_keys([self.public_key_pem.as_bytes()])
}
}
pub fn filter_hello_component() -> Vec<u8> {
std::fs::read(env!("FILTER_HELLO_COMPONENT")).expect("read filter-hello component")
}
pub fn filter_apikey_component() -> Vec<u8> {
std::fs::read(env!("FILTER_APIKEY_COMPONENT")).expect("read filter-apikey component")
}
pub fn filter_quickstart_component() -> Vec<u8> {
std::fs::read(env!("FILTER_QUICKSTART_COMPONENT")).expect("read filter-quickstart component")
}
pub fn filter_noop_component() -> Vec<u8> {
std::fs::read(env!("FILTER_NOOP_COMPONENT")).expect("read filter-noop component")
}
pub fn filter_resp_component() -> Vec<u8> {
std::fs::read(env!("FILTER_RESP_COMPONENT")).expect("read filter-resp component")
}
pub fn filter_cors_component() -> Vec<u8> {
std::fs::read(env!("FILTER_CORS_COMPONENT")).expect("read filter-cors component")
}
pub fn filter_compat_v02_component() -> Vec<u8> {
std::fs::read(env!("FILTER_COMPAT_V02_COMPONENT")).expect("read filter-compat-v02 component")
}
#[cfg(feature = "outbound-http")]
pub fn filter_extauthz_component() -> Vec<u8> {
std::fs::read(env!("FILTER_EXTAUTHZ_COMPONENT")).expect("read filter-extauthz component")
}
#[cfg(feature = "outbound-http")]
pub fn filter_jwt_component() -> Vec<u8> {
std::fs::read(env!("FILTER_JWT_COMPONENT")).expect("read filter-jwt component")
}
#[cfg(feature = "outbound-tcp")]
pub fn filter_tcp_gate_component() -> Vec<u8> {
std::fs::read(env!("FILTER_TCP_GATE_COMPONENT")).expect("read filter-tcp-gate component")
}
#[cfg(feature = "outbound-tcp")]
pub fn filter_ratelimit_redis_component() -> Vec<u8> {
std::fs::read(env!("FILTER_RATELIMIT_REDIS_COMPONENT"))
.expect("read filter-ratelimit-redis component")
}
pub use crate::dev_signer::bound_sbom;