Skip to content

Commit 597e5a6

Browse files
Rename ChecksumCompare to show its role in ignoring files
Authored-by: Owen Nelson <[email protected]>
1 parent 832268c commit 597e5a6

16 files changed

+88
-91
lines changed

cmd/runner.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,12 +31,12 @@ func NewRunner(additions []gitrepo.Addition, mode string) *runner {
3131
func (r *runner) Run(tRC *talismanrc.TalismanRC, promptContext prompt.PromptContext) int {
3232
wd, _ := os.Getwd()
3333
repo := gitrepo.RepoLocatedAt(wd)
34-
cc := helpers.BuildCC(r.mode, tRC, repo)
34+
ie := helpers.BuildIgnoreEvaluator(r.mode, tRC, repo)
3535

3636
setCustomSeverities(tRC)
3737
additionsToScan := tRC.FilterAdditions(r.additions)
3838

39-
detector.DefaultChain(tRC, cc).Test(additionsToScan, tRC, r.results)
39+
detector.DefaultChain(tRC, ie).Test(additionsToScan, tRC, r.results)
4040
r.printReport(promptContext)
4141
exitStatus := r.exitStatus()
4242
return exitStatus

cmd/scanner_cmd.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,11 @@ func (s *ScannerCmd) Run(tRC *talismanrc.TalismanRC) int {
3131

3232
wd, _ := os.Getwd()
3333
repo := gitrepo.RepoLocatedAt(wd)
34-
cc := helpers.BuildCC("default", tRC, repo)
34+
ie := helpers.BuildIgnoreEvaluator("default", tRC, repo)
3535

3636
additionsToScan := tRC.FilterAdditions(s.additions)
3737

38-
detector.DefaultChain(tRC, cc).Test(additionsToScan, tRC, s.results)
38+
detector.DefaultChain(tRC, ie).Test(additionsToScan, tRC, s.results)
3939
reportsPath, err := report.GenerateReport(s.results, s.reportDirectory)
4040
if err != nil {
4141
logr.Errorf("error while generating report: %v", err)

detector/chain.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,20 +17,20 @@ import (
1717
// Chain represents a chain of Detectors.
1818
// It is itself a detector.
1919
type Chain struct {
20-
detectors []detector.Detector
21-
ignoreChecker *helpers.ChecksumCompare
20+
detectors []detector.Detector
21+
ignoreEvaluator *helpers.IgnoreEvaluator
2222
}
2323

2424
// NewChain returns an empty DetectorChain
2525
// It is itself a detector, but it tests nothing.
26-
func NewChain(ignoreChecker *helpers.ChecksumCompare) *Chain {
27-
result := Chain{[]detector.Detector{}, ignoreChecker}
26+
func NewChain(ignoreEvaluator *helpers.IgnoreEvaluator) *Chain {
27+
result := Chain{[]detector.Detector{}, ignoreEvaluator}
2828
return &result
2929
}
3030

3131
// DefaultChain returns a DetectorChain with pre-configured detectors
32-
func DefaultChain(tRC *talismanrc.TalismanRC, ignoreChecker *helpers.ChecksumCompare) *Chain {
33-
chain := NewChain(ignoreChecker)
32+
func DefaultChain(tRC *talismanrc.TalismanRC, ignoreEvaluator *helpers.IgnoreEvaluator) *Chain {
33+
chain := NewChain(ignoreEvaluator)
3434
chain.AddDetector(filename.DefaultFileNameDetector(tRC.Threshold))
3535
chain.AddDetector(filecontent.NewFileContentDetector(tRC))
3636
chain.AddDetector(pattern.NewPatternDetector(tRC.CustomPatterns))
@@ -52,7 +52,7 @@ func (dc *Chain) Test(additions []gitrepo.Addition, talismanRC *talismanrc.Talis
5252
progressBar := utility.GetProgressBar(os.Stdout, "Talisman Scan")
5353
progressBar.Start(total)
5454
for _, v := range dc.detectors {
55-
v.Test(*dc.ignoreChecker, additions, talismanRC, result, func() {
55+
v.Test(*dc.ignoreEvaluator, additions, talismanRC, result, func() {
5656
progressBar.Increment()
5757
})
5858
}

detector/chain_test.go

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -21,26 +21,26 @@ func init() {
2121

2222
type FailingDetection struct{}
2323

24-
func (v FailingDetection) Test(comparator helpers.ChecksumCompare, currentAdditions []gitrepo.Addition, ignoreConfig *talismanrc.TalismanRC, result *helpers.DetectionResults, additionCompletionCallback func()) {
24+
func (v FailingDetection) Test(comparator helpers.IgnoreEvaluator, currentAdditions []gitrepo.Addition, ignoreConfig *talismanrc.TalismanRC, result *helpers.DetectionResults, additionCompletionCallback func()) {
2525
result.Fail("some_file", "filecontent", "FAILED BY DESIGN", []string{}, severity.Low)
2626
}
2727

2828
type PassingDetection struct{}
2929

30-
func (p PassingDetection) Test(comparator helpers.ChecksumCompare, currentAdditions []gitrepo.Addition, ignoreConfig *talismanrc.TalismanRC, result *helpers.DetectionResults, additionCompletionCallback func()) {
30+
func (p PassingDetection) Test(comparator helpers.IgnoreEvaluator, currentAdditions []gitrepo.Addition, ignoreConfig *talismanrc.TalismanRC, result *helpers.DetectionResults, additionCompletionCallback func()) {
3131
}
3232

3333
func TestEmptyValidationChainPassesAllValidations(t *testing.T) {
34-
cc := helpers.BuildCC("pre-push", nil, gitrepo.RepoLocatedAt("."))
35-
v := NewChain(cc)
34+
ie := helpers.BuildIgnoreEvaluator("pre-push", nil, gitrepo.RepoLocatedAt("."))
35+
v := NewChain(ie)
3636
results := helpers.NewDetectionResults(talismanrc.HookMode)
3737
v.Test(nil, &talismanrc.TalismanRC{}, results)
3838
assert.False(t, results.HasFailures(), "Empty validation chain is expected to always pass")
3939
}
4040

4141
func TestValidationChainWithFailingValidationAlwaysFails(t *testing.T) {
42-
cc := helpers.BuildCC("pre-push", nil, gitrepo.RepoLocatedAt("."))
43-
v := NewChain(cc)
42+
ie := helpers.BuildIgnoreEvaluator("pre-push", nil, gitrepo.RepoLocatedAt("."))
43+
v := NewChain(ie)
4444
v.AddDetector(PassingDetection{})
4545
v.AddDetector(FailingDetection{})
4646
results := helpers.NewDetectionResults(talismanrc.HookMode)
@@ -54,8 +54,8 @@ func TestDefaultChainShouldCreateChainSpecifiedModeAndPresetDetectors(t *testing
5454
Threshold: severity.Medium,
5555
CustomPatterns: []talismanrc.PatternString{"AKIA*"},
5656
}
57-
cc := helpers.BuildCC("pre-push", talismanRC, gitrepo.RepoLocatedAt("."))
58-
v := DefaultChain(talismanRC, cc)
57+
ie := helpers.BuildIgnoreEvaluator("pre-push", talismanRC, gitrepo.RepoLocatedAt("."))
58+
v := DefaultChain(talismanRC, ie)
5959
assert.Equal(t, 3, len(v.detectors))
6060

6161
defaultFileNameDetector := filename.DefaultFileNameDetector(talismanRC.Threshold)

detector/detector/detector.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@ import (
66
"talisman/talismanrc"
77
)
88

9-
//Detector represents a single kind of test to be performed against a set of Additions
10-
//Detectors are expected to honor the ignores that are passed in and log them in the results
11-
//Detectors are expected to signal any errors to the results
9+
// Detector represents a single kind of test to be performed against a set of Additions
10+
// Detectors are expected to honor the ignores that are passed in and log them in the results
11+
// Detectors are expected to signal any errors to the results
1212
type Detector interface {
13-
Test(comparator helpers.ChecksumCompare, currentAdditions []gitrepo.Addition, ignoreConfig *talismanrc.TalismanRC, result *helpers.DetectionResults, additionCompletionCallback func())
13+
Test(comparator helpers.IgnoreEvaluator, currentAdditions []gitrepo.Addition, ignoreConfig *talismanrc.TalismanRC, result *helpers.DetectionResults, additionCompletionCallback func())
1414
}

detector/filecontent/base64_aggressive_detector_test.go

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ import (
1313
var _blankTalismanRC = &talismanrc.TalismanRC{}
1414
var dummyCompletionCallbackFunc = func() {}
1515
var aggressiveModeFileContentDetector = NewFileContentDetector(_blankTalismanRC).AggressiveMode()
16-
var defaultCompareChecker = *helpers.BuildCC("default", _blankTalismanRC, gitrepo.RepoLocatedAt("."))
1716

1817
func TestShouldFlagPotentialAWSAccessKeysInAggressiveMode(t *testing.T) {
1918
const awsAccessKeyIDExample string = "AKIAIOSFODNN7EXAMPLE\n"
@@ -23,7 +22,7 @@ func TestShouldFlagPotentialAWSAccessKeysInAggressiveMode(t *testing.T) {
2322

2423
aggressiveModeFileContentDetector.
2524
Test(
26-
defaultCompareChecker,
25+
defaultIgnoreEvaluator,
2726
additions,
2827
_blankTalismanRC,
2928
results,
@@ -40,7 +39,7 @@ func TestShouldFlagPotentialAWSAccessKeysAtPropertyDefinitionInAggressiveMode(t
4039

4140
aggressiveModeFileContentDetector.
4241
Test(
43-
defaultCompareChecker,
42+
defaultIgnoreEvaluator,
4443
additions,
4544
_blankTalismanRC,
4645
results,
@@ -62,7 +61,7 @@ func TestShouldNotFlagPotentialSecretsWithinSafeJavaCodeEvenInAggressiveMode(t *
6261

6362
aggressiveModeFileContentDetector.
6463
Test(
65-
defaultCompareChecker,
64+
defaultIgnoreEvaluator,
6665
additions,
6766
_blankTalismanRC,
6867
results,

detector/filecontent/filecontent_detector.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ type content struct {
7676
severity severity.Severity
7777
}
7878

79-
func (fc *FileContentDetector) Test(comparator helpers.ChecksumCompare, currentAdditions []gitrepo.Addition, talismanRC *talismanrc.TalismanRC, result *helpers.DetectionResults, additionCompletionCallback func()) {
79+
func (fc *FileContentDetector) Test(comparator helpers.IgnoreEvaluator, currentAdditions []gitrepo.Addition, talismanRC *talismanrc.TalismanRC, result *helpers.DetectionResults, additionCompletionCallback func()) {
8080
contentTypes := []struct {
8181
contentType
8282
fn

detector/filecontent/filecontent_detector_test.go

Lines changed: 19 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import (
1414
)
1515

1616
var emptyTalismanRC = &talismanrc.TalismanRC{IgnoreConfigs: []talismanrc.IgnoreConfig{}}
17-
var defaultChecksumCompareUtility = *helpers.BuildCC("default", emptyTalismanRC, gitrepo.RepoLocatedAt("."))
17+
var defaultIgnoreEvaluator = *helpers.BuildIgnoreEvaluator("default", emptyTalismanRC, gitrepo.RepoLocatedAt("."))
1818
var dummyCallback = func() {}
1919
var filename = "filename"
2020

@@ -23,7 +23,7 @@ func TestShouldNotFlagSafeText(t *testing.T) {
2323
additions := []gitrepo.Addition{gitrepo.NewAddition(filename, []byte("prettySafe"))}
2424

2525
NewFileContentDetector(emptyTalismanRC).
26-
Test(defaultChecksumCompareUtility, additions, emptyTalismanRC, results, dummyCallback)
26+
Test(defaultIgnoreEvaluator, additions, emptyTalismanRC, results, dummyCallback)
2727
assert.False(t, results.HasFailures(), "Expected file to not contain base64 encoded texts.")
2828
}
2929

@@ -35,10 +35,9 @@ func TestShouldIgnoreFileIfNeeded(t *testing.T) {
3535
&talismanrc.FileIgnoreConfig{FileName: filename},
3636
},
3737
}
38-
checksumCompare := defaultChecksumCompareUtility
3938

4039
NewFileContentDetector(talismanRCIWithFilenameIgnore).
41-
Test(checksumCompare, additions, talismanRCIWithFilenameIgnore, results, dummyCallback)
40+
Test(defaultIgnoreEvaluator, additions, talismanRCIWithFilenameIgnore, results, dummyCallback)
4241

4342
assert.True(t, results.Successful(), "Expected file %s to be ignored by pattern", filename)
4443
}
@@ -52,7 +51,7 @@ func TestShouldNotFlag4CharSafeText(t *testing.T) {
5251
additions := []gitrepo.Addition{gitrepo.NewAddition(filename, []byte("abcd"))}
5352

5453
NewFileContentDetector(emptyTalismanRC).
55-
Test(defaultChecksumCompareUtility, additions, emptyTalismanRC, results, dummyCallback)
54+
Test(defaultIgnoreEvaluator, additions, emptyTalismanRC, results, dummyCallback)
5655
assert.False(t, results.HasFailures(), "Expected file to not contain base64 encoded texts.")
5756
}
5857

@@ -63,7 +62,7 @@ func TestShouldNotFlagLowEntropyBase64Text(t *testing.T) {
6362
additions := []gitrepo.Addition{gitrepo.NewAddition(filename, content)}
6463

6564
NewFileContentDetector(emptyTalismanRC).
66-
Test(defaultChecksumCompareUtility, additions, emptyTalismanRC, results, dummyCallback)
65+
Test(defaultIgnoreEvaluator, additions, emptyTalismanRC, results, dummyCallback)
6766
assert.False(t, results.HasFailures(), "Expected file to not contain base64 encoded texts.")
6867
}
6968

@@ -74,7 +73,7 @@ func TestShouldFlagPotentialAWSSecretKeys(t *testing.T) {
7473
filePath := additions[0].Path
7574

7675
NewFileContentDetector(emptyTalismanRC).
77-
Test(defaultChecksumCompareUtility, additions, emptyTalismanRC, results, dummyCallback)
76+
Test(defaultIgnoreEvaluator, additions, emptyTalismanRC, results, dummyCallback)
7877

7978
expectedMessage := fmt.
8079
Sprintf("Expected file to not contain base64 encoded texts such as: %s", awsSecretAccessKey)
@@ -90,7 +89,7 @@ func TestShouldFlagPotentialSecretWithoutTrimmingWhenLengthLessThan50Characters(
9089
filePath := additions[0].Path
9190

9291
NewFileContentDetector(emptyTalismanRC).
93-
Test(defaultChecksumCompareUtility, additions, emptyTalismanRC, results, dummyCallback)
92+
Test(defaultIgnoreEvaluator, additions, emptyTalismanRC, results, dummyCallback)
9493

9594
expectedMessage := fmt.Sprintf("Expected file to not contain base64 encoded texts such as: %s", secret)
9695
assert.True(t, results.HasFailures(), "Expected file to not contain base64 encoded texts.")
@@ -107,7 +106,7 @@ func TestShouldFlagPotentialJWT(t *testing.T) {
107106
filePath := additions[0].Path
108107

109108
NewFileContentDetector(emptyTalismanRC).
110-
Test(defaultChecksumCompareUtility, additions, emptyTalismanRC, results, dummyCallback)
109+
Test(defaultIgnoreEvaluator, additions, emptyTalismanRC, results, dummyCallback)
111110

112111
expectedMessage := fmt.
113112
Sprintf("Expected file to not contain base64 encoded texts such as: %s", jwt[:47]+"...")
@@ -130,7 +129,7 @@ func TestShouldFlagPotentialSecretsWithinJavaCode(t *testing.T) {
130129
filePath := additions[0].Path
131130

132131
NewFileContentDetector(emptyTalismanRC).
133-
Test(defaultChecksumCompareUtility, additions, emptyTalismanRC, results, dummyCallback)
132+
Test(defaultIgnoreEvaluator, additions, emptyTalismanRC, results, dummyCallback)
134133
expectedMessage := "Expected file to not contain base64 encoded texts such as: " +
135134
"accessKey=\"wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPL..."
136135
assert.True(t, results.HasFailures(), "Expected file to not contain base64 encoded texts.")
@@ -149,7 +148,7 @@ func TestShouldNotFlagPotentialSecretsWithinSafeJavaCode(t *testing.T) {
149148
additions := []gitrepo.Addition{gitrepo.NewAddition(filename, []byte(safeJavaCode))}
150149

151150
NewFileContentDetector(emptyTalismanRC).
152-
Test(defaultChecksumCompareUtility, additions, emptyTalismanRC, results, dummyCallback)
151+
Test(defaultIgnoreEvaluator, additions, emptyTalismanRC, results, dummyCallback)
153152
assert.False(t, results.HasFailures(), "Expected file to not contain base64 encoded texts.")
154153
}
155154

@@ -159,7 +158,7 @@ func TestShouldNotFlagPotentialSecretsWithinSafeLongMethodName(t *testing.T) {
159158
additions := []gitrepo.Addition{gitrepo.NewAddition(filename, []byte(safeLongMethodName))}
160159

161160
NewFileContentDetector(emptyTalismanRC).
162-
Test(defaultChecksumCompareUtility, additions, emptyTalismanRC, results, dummyCallback)
161+
Test(defaultIgnoreEvaluator, additions, emptyTalismanRC, results, dummyCallback)
163162
assert.False(t, results.HasFailures(), "Expected file to not contain base64 encoded texts.")
164163
}
165164

@@ -170,7 +169,7 @@ func TestShouldFlagPotentialSecretsEncodedInHex(t *testing.T) {
170169
filePath := additions[0].Path
171170

172171
NewFileContentDetector(emptyTalismanRC).
173-
Test(defaultChecksumCompareUtility, additions, emptyTalismanRC, results, dummyCallback)
172+
Test(defaultIgnoreEvaluator, additions, emptyTalismanRC, results, dummyCallback)
174173
expectedMessage := "Expected file to not contain hex encoded texts such as: " + hex
175174
assert.Equal(t, expectedMessage, getFailureMessages(results, filePath)[0])
176175
assert.Len(t, results.Results, 1)
@@ -181,10 +180,10 @@ func TestShouldNotFlagPotentialCreditCardNumberIfAboveThreshold(t *testing.T) {
181180
results := helpers.NewDetectionResults(talismanrc.HookMode)
182181
additions := []gitrepo.Addition{gitrepo.NewAddition(filename, []byte(creditCardNumber))}
183182
talismanRCWithThreshold := &talismanrc.TalismanRC{Threshold: severity.High}
184-
checksumCompareWithThreshold := *helpers.BuildCC("default", talismanRCWithThreshold, gitrepo.RepoLocatedAt("."))
183+
ignoreEvaluatorWithThreshold := *helpers.BuildIgnoreEvaluator("default", talismanRCWithThreshold, gitrepo.RepoLocatedAt("."))
185184

186185
NewFileContentDetector(emptyTalismanRC).
187-
Test(checksumCompareWithThreshold, additions, talismanRCWithThreshold, results, dummyCallback)
186+
Test(ignoreEvaluatorWithThreshold, additions, talismanRCWithThreshold, results, dummyCallback)
188187

189188
assert.False(t, results.HasFailures(), "Expected no base64 detection when threshold is higher")
190189
}
@@ -197,7 +196,7 @@ func TestShouldNotFlagPotentialSecretsIfIgnored(t *testing.T) {
197196
additions := []gitrepo.Addition{gitrepo.NewAddition(filename, []byte(hex))}
198197

199198
NewFileContentDetector(emptyTalismanRC).
200-
Test(defaultChecksumCompareUtility, additions, talismanRCWithIgnores, results, dummyCallback)
199+
Test(defaultIgnoreEvaluator, additions, talismanRCWithIgnores, results, dummyCallback)
201200

202201
assert.False(t, results.HasFailures(), "Expected file ignore allowed pattern for hex text")
203202
}
@@ -215,7 +214,7 @@ func TestResultsShouldNotFlagCreditCardNumberIfSpecifiedInFileIgnores(t *testing
215214
additions := []gitrepo.Addition{gitrepo.NewAddition(filename, []byte(creditCardNumber))}
216215

217216
NewFileContentDetector(emptyTalismanRC).
218-
Test(defaultChecksumCompareUtility, additions, talismanRCWithFileIgnore, results, dummyCallback)
217+
Test(defaultIgnoreEvaluator, additions, talismanRCWithFileIgnore, results, dummyCallback)
219218

220219
assert.False(t, results.HasFailures(), "Expected the creditcard number to be ignored based on talisman RC")
221220

@@ -230,7 +229,7 @@ func TestResultsShouldContainHexTextsIfHexAndBase64ExistInFile(t *testing.T) {
230229
filePath := additions[0].Path
231230

232231
NewFileContentDetector(emptyTalismanRC).
233-
Test(defaultChecksumCompareUtility, additions, emptyTalismanRC, results, dummyCallback)
232+
Test(defaultIgnoreEvaluator, additions, emptyTalismanRC, results, dummyCallback)
234233
expectedMessage := "Expected file to not contain hex encoded texts such as: " + hex
235234
messageReceived := strings.Join(getFailureMessages(results, filePath), " ")
236235
assert.Regexp(t, expectedMessage, messageReceived, "Should contain hex detection message")
@@ -246,7 +245,7 @@ func TestResultsShouldContainBase64TextsIfHexAndBase64ExistInFile(t *testing.T)
246245
filePath := additions[0].Path
247246

248247
NewFileContentDetector(emptyTalismanRC).
249-
Test(defaultChecksumCompareUtility, additions, emptyTalismanRC, results, dummyCallback)
248+
Test(defaultIgnoreEvaluator, additions, emptyTalismanRC, results, dummyCallback)
250249

251250
expectedMessage := "Expected file to not contain base64 encoded texts such as: " + base64
252251
messageReceived := strings.Join(getFailureMessages(results, filePath), " ")
@@ -261,7 +260,7 @@ func TestResultsShouldContainCreditCardNumberIfCreditCardNumberExistInFile(t *te
261260
filePath := additions[0].Path
262261

263262
NewFileContentDetector(emptyTalismanRC).
264-
Test(defaultChecksumCompareUtility, additions, emptyTalismanRC, results, dummyCallback)
263+
Test(defaultIgnoreEvaluator, additions, emptyTalismanRC, results, dummyCallback)
265264

266265
expectedMessage := "Expected file to not contain credit card numbers such as: " + creditCardNumber
267266
assert.Equal(t, expectedMessage, getFailureMessages(results, filePath)[0])

detector/filename/filename_detector.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ func NewFileNameDetector(patternsWithSeverity []*severity.PatternSeverity, thres
8383
}
8484

8585
// Test tests the fileNames of the Additions to ensure that they don't look suspicious
86-
func (fd FileNameDetector) Test(comparator helpers.ChecksumCompare, currentAdditions []gitrepo.Addition, ignoreConfig *talismanrc.TalismanRC, result *helpers.DetectionResults, additionCompletionCallback func()) {
86+
func (fd FileNameDetector) Test(comparator helpers.IgnoreEvaluator, currentAdditions []gitrepo.Addition, ignoreConfig *talismanrc.TalismanRC, result *helpers.DetectionResults, additionCompletionCallback func()) {
8787
for _, addition := range currentAdditions {
8888
if comparator.ShouldIgnore(addition, "filename") {
8989
log.WithFields(log.Fields{

0 commit comments

Comments
 (0)