func()

in go/storage/certdatabase.go [212:255]


func (db *CertDatabase) removeExpiredSerialsFromStorage(t time.Time) error {
	issuerDirs, err := os.ReadDir(db.serialsDir())
	if err != nil {
		return err
	}
	for _, issuerDir := range issuerDirs {
		issuerName := issuerDir.Name()
		issuerDirFull := filepath.Join(db.serialsDir(), issuerName)
		if !(issuerDir.IsDir() && strings.HasPrefix(issuerName, "issuer::")) {
			continue
		}
		serialFiles, err := os.ReadDir(issuerDirFull)
		if err != nil {
			return err
		}
		for _, serialFile := range serialFiles {
			name := serialFile.Name()
			serialFileFull := filepath.Join(issuerDirFull, name)
			parts := strings.Split(name, "::")
			if len(parts) != 3 {
				glog.Warningf("Unexpected serial file name: %s", name)
				continue
			}
			expDate, err := types.NewExpDate(parts[1])
			if err != nil {
				glog.Warningf("Couldn't parse expiration date %s: %s", name, err)
				continue
			}
			if expDate.IsExpiredAt(t) {
				os.Remove(serialFileFull)
			}
		}
		// If the issuerDir is now empty, remove it
		serialFiles, err = os.ReadDir(issuerDirFull)
		if err != nil {
			return err
		}
		if len(serialFiles) == 0 {
			os.Remove(issuerDirFull)
			continue
		}
	}
	return nil
}