3 ms·
package x import ( "errors" "regexp" ) type SecretsMarker struct { awsAccessKeyRegex regexp.Regexp awsSecretAccessKeyRegex regexp.Regexp openAIKeyR
by last_layer 2y ago
package x
import (
"errors"
"regexp"
)
type SecretsMarker struct {
awsAccessKeyRegex regexp.Regexp
awsSecretAccessKeyRegex regexp.Regexp
openAIKeyRegex regexp.Regexp
claudeKeyRegex regexp.Regexp
groqKeyRegex regexp.Regexp
slackTokenRegex regexp.Regexp
jiraTokenRegex regexp.Regexp
githubTokenRegex regexp.Regexp
}
// Init sets up the regular expressions for detecting various credentials
func (d SecretsMarker) Init(_ string) error {
var err error
d.awsAccessKeyRegex, err = regexp.Compile(`(AKIA[0-9A-Z]{16})`)
if err != nil {
return err
}
d.awsSecretAccessKeyRegex, err = regexp.Compile(`([0-9a-zA-Z/+]{40})`)
if err != nil {
return err
}
d.openAIKeyRegex, err = regexp.Compile(`(sk-)[0-9a-zA-Z]{32}`)
if err != nil {
return err
}
// Example pattern for Claude API Key (adjust according to the actual pattern)
d.claudeKeyRegex, err = regexp.Compile(`(claude-)[0-9a-zA-Z]{32}`)
if err != nil {
return err
}
// Example pattern for Groq API Key (adjust according to the actual pattern)
d.groqKeyRegex, err = regexp.Compile(`(groq-)[0-9a-zA-Z]{32}`)
if err != nil {
return err
}
// Slack Token pattern
d.slackTokenRegex, err = regexp.Compile(`(xox[abp]-[0-9a-zA-Z]{10,48})`)
if err != nil {
return err
}
// GitHub Token pattern
d.githubTokenRegex, err = regexp.Compile(`(gh[pousr]_[0-9a-zA-Z]{36})`)
if err != nil {
return err
}
return nil
}
// CheckMarkers inspects the blob for various service credentials
func (d SecretsMarker) CheckMarkers(blob string) error {
if d.awsAccessKeyRegex.MatchString(blob) ||
d.awsSecretAccessKeyRegex.MatchString(blob) ||
d.openAIKeyRegex.MatchString(blob) ||
d.claudeKeyRegex.MatchString(blob) ||
d.groqKeyRegex.MatchString(blob) ||
d.slackTokenRegex.MatchString(blob) ||
d.githubTokenRegex.MatchString(blob) {
return errors.New("detected potential service credentials")
}
return nil
}