in go/cmd/aggregate-crls/aggregate-crls.go [363:403]
func (ae *AggregateEngine) StoreRevokedCertificateList(ctx context.Context, issuer types.Issuer,
serials []types.SerialAndReason) error {
// Ensure that the output directory exists
err := os.MkdirAll(ae.rootPath, permModeDir)
if err != nil {
return err
}
path := filepath.Join(ae.rootPath, issuer.ID())
fd, err := os.OpenFile(path, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, permMode)
if err != nil {
return err
}
defer fd.Close()
writer := bufio.NewWriter(fd)
defer writer.Flush()
for _, s := range serials {
select {
case <-ctx.Done():
return ctx.Err()
default:
_, err = writer.WriteString(hex.EncodeToString([]byte{s.Reason}))
if err != nil {
return err
}
_, err := writer.WriteString(s.Serial.HexString())
if err != nil {
return err
}
err = writer.WriteByte('\n')
if err != nil {
return err
}
}
}
return nil
}