pub struct KeyStore { /* private fields */ }Expand description
KeyStore:热可替换的 keys 集合
Implementations§
Source§impl KeyStore
impl KeyStore
Sourcepub fn reload(&self) -> Result<(), KeyStoreError>
pub fn reload(&self) -> Result<(), KeyStoreError>
SIGHUP 热重载:用同一路径重新读文件
Sourcepub fn verify(&self, plaintext: &str) -> Option<Arc<KeyRecord>>
pub fn verify(&self, plaintext: &str) -> Option<Arc<KeyRecord>>
明文校验:遍历所有未过期 key,匹配则返回 KeyRecord 快照
如果 key 设置了 allowed_machines 且本机不在白名单,会打 warn 日志并视为未匹配。
这样做法的代价:攻击者可以通过“能不能过“侧信道区分 key 是否存在 — 我们接受,
因为 plaintext 空间是 256 bit 随机 hex,侧信道没意义。
Sourcepub fn is_configured(&self) -> bool
pub fn is_configured(&self) -> bool
是否已加载 keys 文件(非 empty)
pub fn path(&self) -> Option<&Path>
pub fn len(&self) -> usize
pub fn is_empty(&self) -> bool
Sourcepub fn get_by_id(&self, id: &str) -> Option<Arc<KeyRecord>>
pub fn get_by_id(&self, id: &str) -> Option<Arc<KeyRecord>>
按 id 查询当前快照中的 key(不做 expiry / machine 校验,调用方自己做)
典型用法:MCP 在启动时 verify(plaintext) 拿到 id,后续每个请求用
get_by_id 取最新记录,这样 SIGHUP 重载 keys.json 后 scope / 限额 /
expires_at 的变更能立刻生效(不用重启进程)。
返回 None 表示 id 在当前文件里不存在(被 remove_key 删掉了),调用方应 视为“key 已吊销“直接拒绝。
Trait Implementations§
Auto Trait Implementations§
impl !Freeze for KeyStore
impl RefUnwindSafe for KeyStore
impl Send for KeyStore
impl Sync for KeyStore
impl Unpin for KeyStore
impl UnwindSafe for KeyStore
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more