Skip to main content

platform/config/
signer.rs

1//! Signer 配置
2//!
3//! Signer 服务用于生成和管理加密密钥,为其他服务提供密钥生成和公钥查询功能。
4
5use serde::{Deserialize, Serialize};
6
7/// Signer 服务器配置
8///
9/// 配置 KS 服务的服务器端参数
10/// 注意:只存储 key_id 和 public_key,不存储 secret_key。
11#[derive(Debug, Serialize, Deserialize, Clone, Default)]
12pub struct SignerServerConfig {}
13
14/// Signer 客户端配置
15///
16/// 其他服务作为客户端连接 Signer 服务时使用的配置
17#[derive(Debug, Serialize, Deserialize, Clone)]
18pub struct SignerClientConfig {
19    /// Signer 服务地址
20    ///
21    /// gRPC endpoint,例如: "http://127.0.0.1:8080" 或 "https://ks.example.com:8443"
22    pub endpoint: String,
23
24    /// 请求超时时间(秒)
25    ///
26    /// 连接 Signer 服务的超时时间
27    pub timeout_seconds: u64,
28
29    /// 是否启用 TLS
30    ///
31    /// 默认为 false(使用 HTTP)。设为 true 时使用 HTTPS/gRPC over TLS。
32    #[serde(default)]
33    pub enable_tls: bool,
34
35    /// TLS 域名(启用 TLS 时必需)
36    ///
37    /// 用于 TLS 证书验证的域名
38    pub tls_domain: Option<String>,
39
40    /// CA 证书路径(用于验证服务端证书)
41    ///
42    /// 用于验证 Signer 服务端证书的 CA 证书文件路径
43    pub ca_cert: Option<String>,
44
45    /// 客户端证书路径(mTLS)
46    ///
47    /// 用于双向 TLS 认证的客户端证书文件路径
48    pub client_cert: Option<String>,
49
50    /// 客户端私钥路径(mTLS)
51    ///
52    /// 用于双向 TLS 认证的客户端私钥文件路径
53    pub client_key: Option<String>,
54}
55
56/// Signer 配置(包含服务器和客户端配置)
57#[derive(Debug, Serialize, Deserialize, Clone)]
58pub struct SignerConfig {
59    /// Signer 服务器配置(当本实例作为 KS 服务器时使用)
60    pub server: Option<SignerServerConfig>,
61
62    /// Signer 客户端配置(当需要连接其他 KS 服务时使用)
63    pub client: Option<SignerClientConfig>,
64}
65
66impl Default for SignerClientConfig {
67    fn default() -> Self {
68        Self {
69            endpoint: "http://127.0.0.1:8080".to_string(), // 默认复用主 HTTP 端口
70            timeout_seconds: 30,
71            enable_tls: false,
72            tls_domain: None,
73            ca_cert: None,
74            client_cert: None,
75            client_key: None,
76        }
77    }
78}
79
80impl Default for SignerConfig {
81    fn default() -> Self {
82        Self {
83            server: Some(SignerServerConfig::default()),
84            client: Some(SignerClientConfig::default()),
85        }
86    }
87}