Codebase list certgraph / run/9a417281-b35f-4266-9fa8-4420819fa0c1/main driver / save.go
run/9a417281-b35f-4266-9fa8-4420819fa0c1/main

Tree @run/9a417281-b35f-4266-9fa8-4420819fa0c1/main (Download .tar.gz)

save.go @run/9a417281-b35f-4266-9fa8-4420819fa0c1/mainraw · 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
}