func()

in go/storage/certdatabase.go [169:210]


func (db *CertDatabase) GetIssuerAndDatesFromStorage() ([]types.IssuerDate, error) {
	// The storage directory has the following structure:
	// storageDir
	//  ├─ serials
	//      ├─ issuer::<issuer id 1>
	//          ├─ serials::<date 1>::<issuer id 1>
	//          ├─ serials::<date 2>::<issuer id 1>
	//          ...
	//      ├─ issuer::<issuer id 2>
	//          ├─ serials::<date 1>::<issuer id 2>
	//          ├─ serials::<date 2>::<issuer id 2>
	//          ...
	//      ...
	//
	allChan := make(chan string)
	go func() {
		defer close(allChan)
		issuerDirs, err := os.ReadDir(db.serialsDir())
		if err != nil {
			glog.Fatal(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 {
				glog.Fatal(err)
			}
			for _, file := range serialFiles {
				name := file.Name()
				if strings.HasPrefix(name, "serials::") {
					allChan <- name
				}
			}
		}
	}()

	return db.GetIssuerAndDatesFromChannel(allChan)
}