mod contextual;
mod deterministic;
pub use contextual::{
AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_SESSION_TOKEN, AWS_TEMPORARY_ACCESS_KEY_ID,
AZURE_CLIENT_SECRET, AZURE_SHARED_ACCESS_SIGNATURE, AZURE_STORAGE_ACCOUNT_KEY,
DATABASE_PASSWORD_FIELD, GCP_CLIENT_SECRET, GCP_PRIVATE_KEY, GCP_PRIVATE_KEY_ID,
GENERIC_API_KEY, GENERIC_AUTH_TOKEN, GENERIC_SECRET, PASSPHRASE_FIELD, PASSWORD_FIELD,
SENSITIVE_HASH,
};
pub use deterministic::{
CLOUDFLARE_ACCOUNT_API_TOKEN, CLOUDFLARE_GLOBAL_API_KEY, CLOUDFLARE_USER_API_TOKEN,
GITHUB_APP_INSTALLATION_TOKEN, GITHUB_APP_REFRESH_TOKEN, GITHUB_APP_USER_TOKEN,
GITHUB_CLASSIC_PAT, GITHUB_FINE_GRAINED_PAT, GITHUB_OAUTH_TOKEN,
GITHUB_STATELESS_INSTALLATION_TOKEN, SIGNED_JWT, SLACK_APP_LEVEL_TOKEN, SLACK_BOT_TOKEN,
SLACK_USER_TOKEN, SLACK_WORKFLOW_TOKEN, STRIPE_LIVE_RESTRICTED_KEY, STRIPE_LIVE_SECRET_KEY,
STRIPE_TEST_RESTRICTED_KEY, STRIPE_TEST_SECRET_KEY, STRIPE_WEBHOOK_SIGNING_SECRET,
TELEGRAM_BOT_TOKEN,
};
use crate::RuleSpec;
pub const CURRENT: &[RuleSpec] = &[
GITHUB_CLASSIC_PAT,
GITHUB_FINE_GRAINED_PAT,
GITHUB_OAUTH_TOKEN,
GITHUB_APP_USER_TOKEN,
GITHUB_APP_INSTALLATION_TOKEN,
GITHUB_STATELESS_INSTALLATION_TOKEN,
GITHUB_APP_REFRESH_TOKEN,
STRIPE_LIVE_SECRET_KEY,
STRIPE_TEST_SECRET_KEY,
STRIPE_LIVE_RESTRICTED_KEY,
STRIPE_TEST_RESTRICTED_KEY,
STRIPE_WEBHOOK_SIGNING_SECRET,
CLOUDFLARE_GLOBAL_API_KEY,
CLOUDFLARE_USER_API_TOKEN,
CLOUDFLARE_ACCOUNT_API_TOKEN,
SLACK_BOT_TOKEN,
SLACK_USER_TOKEN,
SLACK_APP_LEVEL_TOKEN,
SLACK_WORKFLOW_TOKEN,
TELEGRAM_BOT_TOKEN,
SIGNED_JWT,
AWS_ACCESS_KEY_ID,
AWS_TEMPORARY_ACCESS_KEY_ID,
AWS_SECRET_ACCESS_KEY,
AWS_SESSION_TOKEN,
AZURE_CLIENT_SECRET,
AZURE_STORAGE_ACCOUNT_KEY,
AZURE_SHARED_ACCESS_SIGNATURE,
GCP_PRIVATE_KEY_ID,
GCP_CLIENT_SECRET,
GCP_PRIVATE_KEY,
PASSWORD_FIELD,
DATABASE_PASSWORD_FIELD,
PASSPHRASE_FIELD,
SENSITIVE_HASH,
GENERIC_API_KEY,
GENERIC_AUTH_TOKEN,
GENERIC_SECRET,
];
use std::sync::{Arc, LazyLock};
use crate::{Scanner, compiled_rule::CompiledRuleSet};
static CURRENT_COMPILED: LazyLock<Arc<CompiledRuleSet>> = LazyLock::new(|| {
let rules = CURRENT
.iter()
.map(|spec| spec.to_rule())
.collect::<Result<Vec<_>, _>>()
.expect("builtin rules must be valid");
Arc::new(CompiledRuleSet::compile(rules).expect("builtin rules must compile"))
});
pub(crate) fn current_scanner() -> Scanner {
Scanner::new(Arc::clone(&CURRENT_COMPILED))
}