pub struct VerificationEngine { /* private fields */ }Expand description
Live-verification engine with shared client, cache, and concurrency limits.
§Examples
use keyhog_core::{DetectorSpec, PatternSpec, Severity};
use keyhog_verifier::{VerificationEngine, VerifyConfig};
let detectors = vec![DetectorSpec {
id: "demo-token".into(),
name: "Demo Token".into(),
service: "demo".into(),
severity: Severity::High,
patterns: vec![PatternSpec {
regex: "demo_[A-Z0-9]{8}".into(),
description: None,
group: None,
}],
companion: None,
verify: None,
keywords: vec!["demo_".into()],
}];
let engine = VerificationEngine::new(&detectors, VerifyConfig::default()).unwrap();
let _ = engine;Implementations§
Source§impl VerificationEngine
impl VerificationEngine
Sourcepub fn new(
detectors: &[DetectorSpec],
config: VerifyConfig,
) -> Result<Self, VerifyError>
pub fn new( detectors: &[DetectorSpec], config: VerifyConfig, ) -> Result<Self, VerifyError>
Create a verifier with shared HTTP client, cache, and concurrency controls.
§Examples
use keyhog_core::{DetectorSpec, PatternSpec, Severity};
use keyhog_verifier::{VerificationEngine, VerifyConfig};
let engine = VerificationEngine::new(
&[DetectorSpec {
id: "demo-token".into(),
name: "Demo Token".into(),
service: "demo".into(),
severity: Severity::High,
patterns: vec![PatternSpec {
regex: "demo_[A-Z0-9]{8}".into(),
description: None,
group: None,
}],
companion: None,
verify: None,
keywords: vec!["demo_".into()],
}],
VerifyConfig::default(),
)
.unwrap();
let _ = engine;Sourcepub async fn verify_all(
&self,
groups: Vec<DedupedMatch>,
) -> Vec<VerifiedFinding>
pub async fn verify_all( &self, groups: Vec<DedupedMatch>, ) -> Vec<VerifiedFinding>
Verify a batch of deduplicated raw matches in parallel.
Returns one VerifiedFinding per unique (detector_id, credential).
§Examples
use keyhog_core::{DetectorSpec, MatchLocation, PatternSpec, RawMatch, Severity};
use keyhog_verifier::{VerificationEngine, VerifyConfig, dedup_matches};
let detector = DetectorSpec {
id: "demo-token".into(),
name: "Demo Token".into(),
service: "demo".into(),
severity: Severity::High,
patterns: vec![PatternSpec {
regex: "demo_[A-Z0-9]{8}".into(),
description: None,
group: None,
}],
companion: None,
verify: None,
keywords: vec!["demo_".into()],
};
let engine = VerificationEngine::new(&[detector], VerifyConfig::default()).unwrap();
let findings = engine
.verify_all(dedup_matches(vec![RawMatch {
detector_id: "demo-token".into(),
detector_name: "Demo Token".into(),
service: "demo".into(),
severity: Severity::High,
credential: "demo_ABC12345".into(),
companion: None,
location: MatchLocation {
source: "filesystem".into(),
file_path: Some(".env".into()),
line: Some(1),
offset: 0,
commit: None,
author: None,
date: None,
},
entropy: None,
confidence: None,
}]))
.await;
assert_eq!(findings.len(), 1);Auto Trait Implementations§
impl Freeze for VerificationEngine
impl !RefUnwindSafe for VerificationEngine
impl Send for VerificationEngine
impl Sync for VerificationEngine
impl Unpin for VerificationEngine
impl UnsafeUnpin for VerificationEngine
impl !UnwindSafe for VerificationEngine
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
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more