in go/storage/certdatabase.go [367:401]
func (db *CertDatabase) ReadSerialsFromStorage(aExpDate types.ExpDate, aIssuer types.Issuer) ([]types.Serial, error) {
path := db.serialFile(aExpDate, aIssuer)
fd, err := os.Open(path)
if errors.Is(err, os.ErrNotExist) {
// No serials with this issuer and expiry
return nil, nil
}
if err != nil {
return nil, err
}
defer fd.Close()
scanner := bufio.NewScanner(fd)
// The first line encodes the expiry date of the serials in the file
if scanner.Scan() {
line := scanner.Text()
expectedExpiryLine := serialListExpiryLine(aExpDate)
if line != expectedExpiryLine {
return nil, fmt.Errorf("Unexpected expiry line. Found '%s', expected '%s'", line, expectedExpiryLine)
}
}
var serialList []types.Serial
for scanner.Scan() {
line := scanner.Text()
serialList = append(serialList, types.NewSerialFromHex(line))
}
if err := scanner.Err(); err != nil {
return nil, err
}
return serialList, nil
}