-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsecrets.go
More file actions
54 lines (43 loc) · 1.63 KB
/
secrets.go
File metadata and controls
54 lines (43 loc) · 1.63 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
package tok
import (
"sync"
"github.com/GrayCodeAI/tok/internal/secrets"
)
// SecretMatch represents a detected secret within text.
type SecretMatch = secrets.SecretMatch
// SecretDetector detects and redacts secrets from text using compiled regex patterns.
type SecretDetector struct {
inner *secrets.SecretDetector
}
var (
defaultDetector *SecretDetector
defaultDetectorOnce sync.Once
)
// DefaultSecretDetector returns the singleton SecretDetector instance with all built-in patterns.
// It is safe for concurrent use.
func DefaultSecretDetector() *SecretDetector {
defaultDetectorOnce.Do(func() {
defaultDetector = &SecretDetector{inner: secrets.DefaultDetector()}
})
return defaultDetector
}
// NewSecretDetector creates a SecretDetector with all built-in patterns compiled and ready.
func NewSecretDetector() *SecretDetector {
return &SecretDetector{inner: secrets.NewDetector()}
}
// DetectSecrets finds all secrets in the given text.
func (sd *SecretDetector) DetectSecrets(text string) []SecretMatch {
return sd.inner.DetectSecrets(text)
}
// RedactSecrets replaces detected secrets with [REDACTED] markers.
func (sd *SecretDetector) RedactSecrets(text string) string {
return sd.inner.RedactSecrets(text)
}
// DetectAndRedactWithEntropy detects secrets using both pattern matching and entropy analysis.
func (sd *SecretDetector) DetectAndRedactWithEntropy(text string, entropyThreshold float64) string {
return sd.inner.DetectAndRedactWithEntropy(text, entropyThreshold)
}
// MaskSecret masks a secret value for safe display.
func MaskSecret(value, secretType string) string {
return secrets.MaskSecret(value, secretType)
}