@@ -268,6 +268,7 @@ func processDER(fp string, p string) bool {
268
268
goto I
269
269
default :
270
270
fmt .Println ("failed to parse certificate: " + err .Error ())
271
+ return false
271
272
}
272
273
}
273
274
277
278
h .Write (cert .Raw )
278
279
c := certMapElm {Certificate : cert , CertHash : fmt .Sprintf ("%x" , h .Sum (nil ))}
279
280
// Insert Certificate
280
- err = insertLeafCertificate (fp , c )
281
+ err = insertLeafCertificate (p , c )
281
282
if err != nil {
282
- log .Fatal (fmt .Sprintf ("Insert Certificate into DB failed: %q" , err ))
283
+ // Not stopping on failed insertion
284
+ log .Println (fmt .Sprintf ("Insert Certificate into DB failed: %q" , err ))
283
285
}
284
286
285
287
return true
286
288
}
287
289
288
290
func insertLeafCertificate (fp string , c certMapElm ) error {
289
- q := `INSERT INTO "certificate" (hash, "is_CA", "is_SS", issuer, subject, cert_chain, is_valid_chain, file_path) VALUES ($1, $2, $3, $4, $5, $6, $7, $8) ON CONFLICT DO NOTHING`
290
- _ , err := db .Exec (q , c .CertHash , c .Certificate .IsCA , false , c .Certificate .Issuer .String (), c .Certificate .Subject .String (), nil , false , getFullPath (fp , c .CertHash ))
291
+ key , err := insertPublicKey (* c .Certificate )
291
292
if err != nil {
292
- return err
293
+ // Not stopping on Non Fatal Errors
294
+ switch err := err .(type ) {
295
+ case x509.NonFatalErrors :
296
+ goto J
297
+ default :
298
+ fmt .Println ("failed to Insert Key: " + err .Error ())
299
+ return err
300
+ }
293
301
}
294
- key , err := insertPublicKey (* c .Certificate )
302
+ J:
303
+ q := `INSERT INTO "certificate" (hash, "is_CA", "is_SS", issuer, subject, cert_chain, is_valid_chain, file_path) VALUES ($1, $2, $3, $4, $5, $6, $7, $8) ON CONFLICT DO NOTHING`
304
+ _ , err = db .Exec (q , c .CertHash , c .Certificate .IsCA , false , c .Certificate .Issuer .String (), c .Certificate .Subject .String (), nil , false , getFullPath (fp , c .CertHash ))
295
305
if err != nil {
296
306
return err
297
307
}
@@ -393,7 +403,7 @@ func insertPublicKey(c x509.Certificate) (string, error) {
393
403
pub , err := x509 .ParsePKIXPublicKey (c .RawSubjectPublicKeyInfo )
394
404
hash := fmt .Sprintf ("%x" , sha256 .Sum256 (c .RawSubjectPublicKeyInfo ))
395
405
if err != nil {
396
- return hash , nil
406
+ return hash , err
397
407
}
398
408
399
409
switch pub := pub .(type ) {
0 commit comments