in go/rootprogram/issuers.go [372:413]
func (mi *MozIssuers) parseCCADB(aStream io.Reader) error {
mi.mutex.Lock()
defer mi.mutex.Unlock()
reader := csv.NewReader(aStream)
columnMap := make(map[string]int)
columns, err := reader.Read()
if err != nil {
return err
}
for index, attr := range columns {
columnMap[attr] = index
}
lineNum := 1
for {
row, err := reader.Read()
if err == io.EOF {
break
}
if err != nil {
return err
}
lineNum += 1
cert, err := decodeCertificateFromRow(columnMap, row, lineNum)
if err != nil {
return err
}
crls, err := decodeCrlsFromRow(columnMap, row, lineNum)
if err != nil {
return err
}
_ = mi.InsertIssuerFromCertAndPem(cert, strings.Trim(row[columnMap["PEM"]], "'"), crls)
lineNum += strings.Count(strings.Join(row, ""), "\n")
}
return nil
}