func()

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
}