Skip to content

Commit d8296c8

Browse files
Use new nightfall API client (#57)
* Use new nightfall API client * lint * remove test logging * Use nightfall go client tag
1 parent f7ef6ae commit d8296c8

File tree

10 files changed

+541
-141
lines changed

10 files changed

+541
-141
lines changed

go.mod

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,13 @@ go 1.13
44

55
require (
66
github.com/gobwas/glob v0.2.3
7-
github.com/golang/mock v1.4.3
8-
github.com/google/go-cmp v0.5.1 // indirect
7+
github.com/golang/mock v1.4.4
98
github.com/google/go-github/v33 v33.0.0
109
github.com/google/uuid v1.1.2
11-
github.com/nightfallai/nightfall_go_client v1.0.3
10+
github.com/nightfallai/nightfall_go_client v1.1.0
1211
github.com/pkg/errors v0.9.1 // indirect
1312
github.com/spf13/pflag v1.0.5
1413
github.com/stretchr/testify v1.6.1
15-
golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d
14+
golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99
1615
gotest.tools v2.2.0+incompatible
1716
)

go.sum

Lines changed: 341 additions & 12 deletions
Large diffs are not rendered by default.

internal/clients/diffreviewer/circleci/circleci_service_test.go

Lines changed: 34 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,19 @@ const excludedCreditCardRegex = "4242-4242-4242-[0-9]{4}"
144144
const excludedApiToken = "xG0Ct4Wsu3OTcJnE1dFLAQfRgL6b8tIv"
145145
const excludedIPRegex = "^127\\."
146146

147+
var (
148+
one int32 = 1
149+
nightfallDetectorType = nightfallAPI.DETECTORTYPE_NIGHTFALL_DETECTOR
150+
ccDetector = nightfallAPI.NIGHTFALLDETECTORTYPE_CREDIT_CARD_NUMBER
151+
pnDetector = nightfallAPI.NIGHTFALLDETECTORTYPE_PHONE_NUMBER
152+
ipDetector = nightfallAPI.NIGHTFALLDETECTORTYPE_IP_ADDRESS
153+
confidencePossible = nightfallAPI.CONFIDENCE_POSSIBLE
154+
nightfallAPIKey = nightfallAPI.NIGHTFALLDETECTORTYPE_API_KEY
155+
nightfallAPIKeyName = string(nightfallAPI.NIGHTFALLDETECTORTYPE_API_KEY)
156+
nightfallCryptographicKey = nightfallAPI.NIGHTFALLDETECTORTYPE_CRYPTOGRAPHIC_KEY
157+
nightfallCryptographicKeyName = string(nightfallAPI.NIGHTFALLDETECTORTYPE_CRYPTOGRAPHIC_KEY)
158+
)
159+
147160
var envVars = []string{
148161
WorkspacePathEnvVar,
149162
CircleCurrentCommitShaEnvVar,
@@ -181,21 +194,21 @@ func (c *circleCiTestSuite) TestLoadConfig() {
181194
NightfallAPIKey: apiKey,
182195
NightfallConditions: []*nightfallAPI.Condition{
183196
{
184-
Detector: nightfallAPI.Detector{
185-
DetectorType: nightfallAPI.DETECTORTYPE_NIGHTFALL_DETECTOR,
186-
NightfallDetector: nightfallAPI.NIGHTFALLDETECTORTYPE_CREDIT_CARD_NUMBER,
197+
Detector: &nightfallAPI.Detector{
198+
DetectorType: &nightfallDetectorType,
199+
NightfallDetector: &ccDetector,
187200
},
188201
},
189202
{
190-
Detector: nightfallAPI.Detector{
191-
DetectorType: nightfallAPI.DETECTORTYPE_NIGHTFALL_DETECTOR,
192-
NightfallDetector: nightfallAPI.NIGHTFALLDETECTORTYPE_PHONE_NUMBER,
203+
Detector: &nightfallAPI.Detector{
204+
DetectorType: &nightfallDetectorType,
205+
NightfallDetector: &pnDetector,
193206
},
194207
},
195208
{
196-
Detector: nightfallAPI.Detector{
197-
DetectorType: nightfallAPI.DETECTORTYPE_NIGHTFALL_DETECTOR,
198-
NightfallDetector: nightfallAPI.NIGHTFALLDETECTORTYPE_IP_ADDRESS,
209+
Detector: &nightfallAPI.Detector{
210+
DetectorType: &nightfallDetectorType,
211+
NightfallDetector: &ipDetector,
199212
},
200213
},
201214
},
@@ -279,22 +292,22 @@ func (c *circleCiTestSuite) TestLoadEmptyConfig() {
279292
NightfallAPIKey: apiKey,
280293
NightfallConditions: []*nightfallAPI.Condition{
281294
{
282-
Detector: nightfallAPI.Detector{
283-
DetectorType: nightfallAPI.DETECTORTYPE_NIGHTFALL_DETECTOR,
284-
NightfallDetector: nightfallAPI.NIGHTFALLDETECTORTYPE_API_KEY,
285-
DisplayName: string(nightfallAPI.NIGHTFALLDETECTORTYPE_API_KEY),
295+
Detector: &nightfallAPI.Detector{
296+
DetectorType: &nightfallDetectorType,
297+
NightfallDetector: &nightfallAPIKey,
298+
DisplayName: &nightfallAPIKeyName,
286299
},
287-
MinConfidence: nightfallAPI.CONFIDENCE_POSSIBLE,
288-
MinNumFindings: 1,
300+
MinConfidence: &confidencePossible,
301+
MinNumFindings: &one,
289302
},
290303
{
291-
Detector: nightfallAPI.Detector{
292-
DetectorType: nightfallAPI.DETECTORTYPE_NIGHTFALL_DETECTOR,
293-
NightfallDetector: nightfallAPI.NIGHTFALLDETECTORTYPE_CRYPTOGRAPHIC_KEY,
294-
DisplayName: string(nightfallAPI.NIGHTFALLDETECTORTYPE_CRYPTOGRAPHIC_KEY),
304+
Detector: &nightfallAPI.Detector{
305+
DetectorType: &nightfallDetectorType,
306+
NightfallDetector: &nightfallCryptographicKey,
307+
DisplayName: &nightfallCryptographicKeyName,
295308
},
296-
MinConfidence: nightfallAPI.CONFIDENCE_POSSIBLE,
297-
MinNumFindings: 1,
309+
MinConfidence: &confidencePossible,
310+
MinNumFindings: &one,
298311
},
299312
},
300313
NightfallMaxNumberRoutines: nightfallconfig.DefaultMaxNumberRoutines,

internal/clients/diffreviewer/github/github_service_test.go

Lines changed: 34 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,19 @@ const excludedCreditCardRegex = "4242-4242-4242-[0-9]{4}"
145145
const excludedApiToken = "xG0Ct4Wsu3OTcJnE1dFLAQfRgL6b8tIv"
146146
const excludedIPRegex = "^127\\."
147147

148+
var (
149+
one int32 = 1
150+
nightfallDetectorType = nightfallAPI.DETECTORTYPE_NIGHTFALL_DETECTOR
151+
ccDetector = nightfallAPI.NIGHTFALLDETECTORTYPE_CREDIT_CARD_NUMBER
152+
pnDetector = nightfallAPI.NIGHTFALLDETECTORTYPE_PHONE_NUMBER
153+
ipDetector = nightfallAPI.NIGHTFALLDETECTORTYPE_IP_ADDRESS
154+
confidencePossible = nightfallAPI.CONFIDENCE_POSSIBLE
155+
nightfallAPIKey = nightfallAPI.NIGHTFALLDETECTORTYPE_API_KEY
156+
nightfallAPIKeyName = string(nightfallAPI.NIGHTFALLDETECTORTYPE_API_KEY)
157+
nightfallCryptographicKey = nightfallAPI.NIGHTFALLDETECTORTYPE_CRYPTOGRAPHIC_KEY
158+
nightfallCryptographicKeyName = string(nightfallAPI.NIGHTFALLDETECTORTYPE_CRYPTOGRAPHIC_KEY)
159+
)
160+
148161
var envVars = []string{
149162
githubservice.WorkspacePathEnvVar,
150163
githubservice.EventPathEnvVar,
@@ -177,21 +190,21 @@ func (g *githubTestSuite) TestLoadConfig() {
177190
NightfallAPIKey: apiKey,
178191
NightfallConditions: []*nightfallAPI.Condition{
179192
{
180-
Detector: nightfallAPI.Detector{
181-
DetectorType: nightfallAPI.DETECTORTYPE_NIGHTFALL_DETECTOR,
182-
NightfallDetector: nightfallAPI.NIGHTFALLDETECTORTYPE_CREDIT_CARD_NUMBER,
193+
Detector: &nightfallAPI.Detector{
194+
DetectorType: &nightfallDetectorType,
195+
NightfallDetector: &ccDetector,
183196
},
184197
},
185198
{
186-
Detector: nightfallAPI.Detector{
187-
DetectorType: nightfallAPI.DETECTORTYPE_NIGHTFALL_DETECTOR,
188-
NightfallDetector: nightfallAPI.NIGHTFALLDETECTORTYPE_PHONE_NUMBER,
199+
Detector: &nightfallAPI.Detector{
200+
DetectorType: &nightfallDetectorType,
201+
NightfallDetector: &pnDetector,
189202
},
190203
},
191204
{
192-
Detector: nightfallAPI.Detector{
193-
DetectorType: nightfallAPI.DETECTORTYPE_NIGHTFALL_DETECTOR,
194-
NightfallDetector: nightfallAPI.NIGHTFALLDETECTORTYPE_IP_ADDRESS,
205+
Detector: &nightfallAPI.Detector{
206+
DetectorType: &nightfallDetectorType,
207+
NightfallDetector: &ipDetector,
195208
},
196209
},
197210
},
@@ -268,22 +281,22 @@ func (g *githubTestSuite) TestLoadEmptyConfig() {
268281
NightfallAPIKey: apiKey,
269282
NightfallConditions: []*nightfallAPI.Condition{
270283
{
271-
Detector: nightfallAPI.Detector{
272-
DetectorType: nightfallAPI.DETECTORTYPE_NIGHTFALL_DETECTOR,
273-
NightfallDetector: nightfallAPI.NIGHTFALLDETECTORTYPE_API_KEY,
274-
DisplayName: string(nightfallAPI.NIGHTFALLDETECTORTYPE_API_KEY),
284+
Detector: &nightfallAPI.Detector{
285+
DetectorType: &nightfallDetectorType,
286+
NightfallDetector: &nightfallAPIKey,
287+
DisplayName: &nightfallAPIKeyName,
275288
},
276-
MinConfidence: nightfallAPI.CONFIDENCE_POSSIBLE,
277-
MinNumFindings: 1,
289+
MinConfidence: &confidencePossible,
290+
MinNumFindings: &one,
278291
},
279292
{
280-
Detector: nightfallAPI.Detector{
281-
DetectorType: nightfallAPI.DETECTORTYPE_NIGHTFALL_DETECTOR,
282-
NightfallDetector: nightfallAPI.NIGHTFALLDETECTORTYPE_CRYPTOGRAPHIC_KEY,
283-
DisplayName: string(nightfallAPI.NIGHTFALLDETECTORTYPE_CRYPTOGRAPHIC_KEY),
293+
Detector: &nightfallAPI.Detector{
294+
DetectorType: &nightfallDetectorType,
295+
NightfallDetector: &nightfallCryptographicKey,
296+
DisplayName: &nightfallCryptographicKeyName,
284297
},
285-
MinConfidence: nightfallAPI.CONFIDENCE_POSSIBLE,
286-
MinNumFindings: 1,
298+
MinConfidence: &confidencePossible,
299+
MinNumFindings: &one,
287300
},
288301
},
289302
NightfallMaxNumberRoutines: nightfallconfig.DefaultMaxNumberRoutines,

internal/clients/nightfall/nightfall.go

Lines changed: 28 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -92,12 +92,18 @@ func blurContent(content string) string {
9292
}
9393

9494
func getCommentMsg(finding nightfallAPI.ScanResponseV2) string {
95-
blurredContent := blurContent(finding.Fragment)
96-
return fmt.Sprintf("Suspicious content detected (%s, type %s)", blurredContent, finding.DetectorName)
95+
if finding.Fragment == nil || finding.DetectorName == nil {
96+
return ""
97+
}
98+
blurredContent := blurContent(*finding.Fragment)
99+
return fmt.Sprintf("Suspicious content detected (%s, type %s)", blurredContent, *finding.DetectorName)
97100
}
98101

99102
func getCommentTitle(finding nightfallAPI.ScanResponseV2) string {
100-
return fmt.Sprintf("Detected %s", finding.DetectorName)
103+
if finding.DetectorName == nil {
104+
return ""
105+
}
106+
return fmt.Sprintf("Detected %s", *finding.DetectorName)
101107
}
102108

103109
// wordSplitter is of type bufio.SplitFunc (https://golang.org/pkg/bufio/#SplitFunc)
@@ -172,7 +178,7 @@ func createCommentsFromScanResp(
172178
comments := []*diffreviewer.Comment{}
173179
for j, findingList := range resp {
174180
for _, finding := range findingList {
175-
if !isFindingInTokenExclusionList(finding.Fragment, tokenExclusionList) {
181+
if finding.Fragment != nil && !isFindingInTokenExclusionList(*finding.Fragment, tokenExclusionList) {
176182
// Found sensitive info
177183
// Create comment if fragment is not in exclusion set
178184
correspondingContent := inputContent[j]
@@ -212,14 +218,22 @@ func (n *Client) CreateScanRequest(items []string) nightfallAPI.ScanRequestV2 {
212218
for _, d := range n.Conditions {
213219
conds = append(conds, *d)
214220
}
221+
var conditionSetUUID *string = nil
222+
if n.ConditionSetUUID != "" {
223+
conditionSetUUID = &n.ConditionSetUUID
224+
}
225+
var conditionSet *nightfallAPI.ScanRequestV2ConfigConditionSet = nil
226+
if len(conds) > 0 {
227+
conditionSet = &nightfallAPI.ScanRequestV2ConfigConditionSet{
228+
Conditions: &conds,
229+
}
230+
}
215231
return nightfallAPI.ScanRequestV2{
216-
Config: nightfallAPI.ScanRequestV2Config{
217-
ConditionSetUUID: n.ConditionSetUUID,
218-
ConditionSet: nightfallAPI.ScanRequestV2ConfigConditionSet{
219-
Conditions: conds,
220-
},
232+
Config: &nightfallAPI.ScanRequestV2Config{
233+
ConditionSetUUID: conditionSetUUID,
234+
ConditionSet: conditionSet,
221235
},
222-
Payload: items,
236+
Payload: &items,
223237
}
224238
}
225239

@@ -296,7 +310,7 @@ func (n *Client) Scan(
296310
Key: n.APIKey,
297311
Prefix: "",
298312
}
299-
newCtx := context.WithValue(ctx, nightfallAPI.ContextAPIKey, APIKey)
313+
newCtx := context.WithValue(ctx, nightfallAPI.ContextAPIKeys, map[string]nightfallAPI.APIKey{"apiKeyAuth": APIKey})
300314
request := n.CreateScanRequest(items)
301315
return n.makeScanRequestWithRetries(newCtx, logger, request)
302316
}
@@ -324,7 +338,7 @@ func (n *Client) makeScanRequestWithRetries(
324338
logger.Error(
325339
fmt.Sprintf(
326340
"Error from Nightfall API, unable to successfully scan %d items",
327-
len(request.Payload),
341+
len(*request.Payload),
328342
),
329343
)
330344
return nil, err
@@ -380,10 +394,10 @@ func (n *Client) ReviewDiff(
380394
}
381395

382396
func filterFileDiffs(fileDiffs []*diffreviewer.FileDiff, fileIncludeList, fileExcludeList []string, logger logger.Logger) []*diffreviewer.FileDiff {
383-
if fileIncludeList != nil && len(fileIncludeList) > 0 {
397+
if len(fileIncludeList) > 0 {
384398
fileDiffs = filterByFilePath(fileDiffs, fileIncludeList, true, logger)
385399
}
386-
if fileExcludeList != nil && len(fileExcludeList) > 0 {
400+
if len(fileExcludeList) > 0 {
387401
fileDiffs = filterByFilePath(fileDiffs, fileExcludeList, false, logger)
388402
}
389403
return fileDiffs

internal/clients/nightfall/nightfall_api.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,5 +25,5 @@ func (c *APIClient) ScanPayload(
2525
ctx context.Context,
2626
scanReq nightfallAPI.ScanRequestV2,
2727
) ([][]nightfallAPI.ScanResponseV2, *http.Response, error) {
28-
return c.APIClient.ScanV2Api.ScanPayloadV2(ctx, scanReq)
28+
return c.APIClient.ScanApi.ScanPayloadV2(ctx).ScanReqV2(scanReq).Execute()
2929
}

internal/clients/nightfall/nightfall_internal_test.go

Lines changed: 12 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,6 @@ const (
2424
apiKeyContent = "my api key is yr+ZWwIZp6ifFgaHV8410b2BxbRt5QiAj1EZx1qj"
2525
)
2626

27-
var allLikelihoods = []nightfallAPI.Confidence{
28-
nightfallAPI.CONFIDENCE_VERY_LIKELY,
29-
nightfallAPI.CONFIDENCE_UNLIKELY,
30-
nightfallAPI.CONFIDENCE_POSSIBLE,
31-
nightfallAPI.CONFIDENCE_LIKELY,
32-
nightfallAPI.CONFIDENCE_VERY_LIKELY,
33-
}
34-
3527
func TestChunkContent(t *testing.T) {
3628
tests := []struct {
3729
haveBufSize int
@@ -382,17 +374,20 @@ func TestMatchGlob(t *testing.T) {
382374
}
383375
}
384376
func createScanResponse(fragment string, detType nightfallAPI.NightfallDetectorType) nightfallAPI.ScanResponseV2 {
377+
detectorName := string(detType)
378+
zero := int32(0)
379+
end := int32(len(fragment))
385380
return nightfallAPI.ScanResponseV2{
386-
Fragment: fragment,
387-
DetectorName: string(detType),
388-
Location: nightfallAPI.ScanResponseV2Location{
389-
ByteRange: nightfallAPI.ScanResponseV2LocationByteRange{
390-
Start: 0,
391-
End: int32(len(fragment)),
381+
Fragment: &fragment,
382+
DetectorName: &detectorName,
383+
Location: &nightfallAPI.ScanResponseLocation{
384+
ByteRange: &nightfallAPI.ScanResponseLocationByteRange{
385+
Start: &zero,
386+
End: &end,
392387
},
393-
UnicodeRange: nightfallAPI.ScanResponseV2LocationUnicodeRange{
394-
Start: 0,
395-
End: int32(len(fragment)),
388+
UnicodeRange: &nightfallAPI.ScanResponseLocationUnicodeRange{
389+
Start: &zero,
390+
End: &end,
396391
},
397392
},
398393
}

internal/clients/nightfall/nightfall_test.go

Lines changed: 25 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,19 @@ import (
1818
"github.com/stretchr/testify/suite"
1919
)
2020

21-
const (
21+
var (
2222
exampleCreditCardNumber = "4916-6734-7572-5015"
2323
blurredCreditCard = "49********"
2424
maxItemsForAPIReq = 479
25+
26+
one int32 = 1
27+
confidencePossible = nightfallAPI.CONFIDENCE_POSSIBLE
28+
nightfallDetectorType = nightfallAPI.DETECTORTYPE_NIGHTFALL_DETECTOR
29+
nightfallAPIKey = nightfallAPI.NIGHTFALLDETECTORTYPE_API_KEY
30+
nightfallAPIKeyName = string(nightfallAPI.NIGHTFALLDETECTORTYPE_API_KEY)
31+
nightfallCryptographicKey = nightfallAPI.NIGHTFALLDETECTORTYPE_CRYPTOGRAPHIC_KEY
32+
nightfallCryptographicKeyName = string(nightfallAPI.NIGHTFALLDETECTORTYPE_CRYPTOGRAPHIC_KEY)
33+
nightfallCreditCardName = string(nightfallAPI.NIGHTFALLDETECTORTYPE_CREDIT_CARD_NUMBER)
2534
)
2635

2736
type nightfallTestSuite struct {
@@ -30,16 +39,22 @@ type nightfallTestSuite struct {
3039

3140
var testConditions = []*nightfallAPI.Condition{
3241
{
33-
Detector: nightfallAPI.Detector{
34-
DetectorType: nightfallAPI.DETECTORTYPE_NIGHTFALL_DETECTOR,
35-
NightfallDetector: nightfallAPI.NIGHTFALLDETECTORTYPE_CREDIT_CARD_NUMBER,
42+
Detector: &nightfallAPI.Detector{
43+
DetectorType: &nightfallDetectorType,
44+
NightfallDetector: &nightfallAPIKey,
45+
DisplayName: &nightfallAPIKeyName,
3646
},
47+
MinNumFindings: &one,
48+
MinConfidence: &confidencePossible,
3749
},
3850
{
39-
Detector: nightfallAPI.Detector{
40-
DetectorType: nightfallAPI.DETECTORTYPE_NIGHTFALL_DETECTOR,
41-
NightfallDetector: nightfallAPI.NIGHTFALLDETECTORTYPE_PHONE_NUMBER,
51+
Detector: &nightfallAPI.Detector{
52+
DetectorType: &nightfallDetectorType,
53+
NightfallDetector: &nightfallCryptographicKey,
54+
DisplayName: &nightfallCryptographicKeyName,
4255
},
56+
MinNumFindings: &one,
57+
MinConfidence: &confidencePossible,
4358
},
4459
}
4560
var testItems = []string{
@@ -52,9 +67,9 @@ var expectedScanResponse = [][]nightfallAPI.ScanResponseV2{
5267
{},
5368
{
5469
{
55-
Fragment: exampleCreditCardNumber,
56-
DetectorName: string(nightfallAPI.NIGHTFALLDETECTORTYPE_CREDIT_CARD_NUMBER),
57-
Confidence: nightfallAPI.CONFIDENCE_LIKELY,
70+
Fragment: &exampleCreditCardNumber,
71+
DetectorName: &nightfallCreditCardName,
72+
Confidence: &confidencePossible,
5873
},
5974
},
6075
{},

0 commit comments

Comments
 (0)