func()

in go/rootprogram/issuers.go [179:217]


func (mi *MozIssuers) SaveIssuersList(filePath string) error {
	mi.mutex.Lock()
	defer mi.mutex.Unlock()
	certCount := 0

	issuers := make([]EnrolledIssuer, 0, len(mi.issuerMap))
	for _, val := range mi.issuerMap {
		for _, cert := range val.certs {
			pubKeyHash := sha256.Sum256(cert.cert.RawSubjectPublicKeyInfo)
			uniqueID := sha256.Sum256(append(cert.cert.RawSubject, cert.cert.RawSubjectPublicKeyInfo...))
			issuers = append(issuers, EnrolledIssuer{
				UniqueID:   base64.URLEncoding.EncodeToString(uniqueID[:]),
				PubKeyHash: base64.URLEncoding.EncodeToString(pubKeyHash[:]),
				Subject:    cert.subjectDN,
				Pem:        normalizePem(cert.pemInfo),
			})
			certCount++
		}
	}

	glog.Infof("Saving %d issuers and %d certs", len(mi.issuerMap), certCount)
	fd, err := os.OpenFile(filePath, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0644)
	if err != nil {
		glog.Errorf("Error opening enrolled issuer %s: %s", filePath, err)
		return err
	}

	enc := json.NewEncoder(fd)

	if err := enc.Encode(issuers); err != nil {
		glog.Errorf("Error marshaling enrolled issuer %s: %s", filePath, err)
	}

	if err = fd.Close(); err != nil {
		glog.Errorf("Error storing enrolled issuer %s: %s", filePath, err)
	}

	return err
}