Codebase list certgraph / 35f51725-2d64-4ce9-8f53-428e05be4475/upstream driver / save.go
35f51725-2d64-4ce9-8f53-428e05be4475/upstream

Tree @35f51725-2d64-4ce9-8f53-428e05be4475/upstream (Download .tar.gz)

save.go @35f51725-2d64-4ce9-8f53-428e05be4475/upstreamraw · history · blame

package driver

import (
	"crypto/x509"
	"encoding/pem"
	"os"
)

// CertsToPEMFile saves certificates to local pem file
func CertsToPEMFile(certs []*x509.Certificate, file string) error {
	if fileExists(file) {
		return nil
	}
	f, err := os.Create(file)
	if err != nil {
		return err
	}
	defer f.Close()
	for _, cert := range certs {
		err = pem.Encode(f, &pem.Block{Type: "CERTIFICATE", Bytes: cert.Raw})
		if err != nil {
			return err
		}
	}
	return nil
}

// RawCertToPEMFile saves raw certificate to local pem file
func RawCertToPEMFile(cert []byte, file string) error {
	if fileExists(file) {
		return nil
	}
	f, err := os.Create(file)
	if err != nil {
		return err
	}
	defer f.Close()
	err = pem.Encode(f, &pem.Block{Type: "CERTIFICATE", Bytes: cert})
	return err
}

func fileExists(f string) bool {
	_, err := os.Stat(f)
	if os.IsNotExist(err) {
		return false
	}
	return err == nil
}