Moved global flag variables to the global scope. Refactored some functions interfaces and removed passing global flags.

This commit is contained in:
2025-07-28 13:48:38 +02:00
parent 911d33deb2
commit a8308e0f4f
2 changed files with 24 additions and 15 deletions

18
ca.go
View File

@@ -271,7 +271,7 @@ func parseValidity(validity string) (time.Duration, error) {
} }
} }
func SavePEM(filename string, data []byte, secure bool, overwrite bool) error { func SavePEM(filename string, data []byte, secure bool) error {
if !overwrite { if !overwrite {
if _, err := os.Stat(filename); err == nil { if _, err := os.Stat(filename); err == nil {
return fmt.Errorf("file %s already exists (overwrite not allowed)", filename) return fmt.Errorf("file %s already exists (overwrite not allowed)", filename)
@@ -321,7 +321,7 @@ func (c *_CAConfig) Validate() error {
return nil return nil
} }
func InitCA(overwrite bool) error { func InitCA() error {
var err error var err error
@@ -409,11 +409,11 @@ func InitCA(overwrite bool) error {
certPEM := pem.EncodeToMemory(&pem.Block{Type: "CERTIFICATE", Bytes: certDER}) certPEM := pem.EncodeToMemory(&pem.Block{Type: "CERTIFICATE", Bytes: certDER})
keyPEM := pem.EncodeToMemory(&pem.Block{Type: "RSA PRIVATE KEY", Bytes: x509.MarshalPKCS1PrivateKey(priv)}) keyPEM := pem.EncodeToMemory(&pem.Block{Type: "RSA PRIVATE KEY", Bytes: x509.MarshalPKCS1PrivateKey(priv)})
if err := SavePEM(filepath.Join(CAConfig.Paths.Certificates, "ca_cert.pem"), certPEM, false, overwrite); err != nil { if err := SavePEM(filepath.Join(CAConfig.Paths.Certificates, "ca_cert.pem"), certPEM, false); err != nil {
fmt.Println("Error saving CA certificate:", err) fmt.Println("Error saving CA certificate:", err)
return err return err
} }
if err := SavePEM(filepath.Join(CAConfig.Paths.PrivateKeys, "ca_key.pem"), keyPEM, true, overwrite); err != nil { if err := SavePEM(filepath.Join(CAConfig.Paths.PrivateKeys, "ca_key.pem"), keyPEM, true); err != nil {
fmt.Println("Error saving CA key:", err) fmt.Println("Error saving CA key:", err)
return err return err
} }
@@ -433,7 +433,7 @@ func InitCA(overwrite bool) error {
} }
// Helper: issue a single certificate and key, save to files, return error if any // Helper: issue a single certificate and key, save to files, return error if any
func issueSingleCertificate(def CertificateDefinition, overwrite, verbose bool) error { func issueSingleCertificate(def CertificateDefinition) error {
// Validate Name // Validate Name
isValidName, err := regexp.MatchString(`^[A-Za-z0-9_-]+$`, def.Name) isValidName, err := regexp.MatchString(`^[A-Za-z0-9_-]+$`, def.Name)
@@ -536,10 +536,10 @@ func issueSingleCertificate(def CertificateDefinition, overwrite, verbose bool)
} }
certFile := filepath.Join(CAConfig.Paths.Certificates, basename+".crt.pem") certFile := filepath.Join(CAConfig.Paths.Certificates, basename+".crt.pem")
keyFile := filepath.Join(CAConfig.Paths.PrivateKeys, basename+".key.pem") keyFile := filepath.Join(CAConfig.Paths.PrivateKeys, basename+".key.pem")
if err := SavePEM(certFile, certPEM, false, overwrite); err != nil { if err := SavePEM(certFile, certPEM, false); err != nil {
return fmt.Errorf("error saving certificate: %v", err) return fmt.Errorf("error saving certificate: %v", err)
} }
if err := SavePEM(keyFile, keyPEM, true, overwrite); err != nil { if err := SavePEM(keyFile, keyPEM, true); err != nil {
return fmt.Errorf("error saving key: %v", err) return fmt.Errorf("error saving key: %v", err)
} }
if verbose { if verbose {
@@ -622,7 +622,7 @@ func ProvisionCertificates(filePath string, overwrite bool, dryRun bool, verbose
continue continue
} }
err = issueSingleCertificate(certDefs.Certificates[i], overwrite, verbose) err = issueSingleCertificate(certDefs.Certificates[i])
if err != nil { if err != nil {
fmt.Printf("error: %v\n", err) fmt.Printf("error: %v\n", err)
errors++ errors++
@@ -664,7 +664,7 @@ func IssueCertificate(certDef CertificateDefinition, overwrite bool, dryRun bool
return nil return nil
} }
err = issueSingleCertificate(certDef, overwrite, verbose) err = issueSingleCertificate(certDef)
if err != nil { if err != nil {
return err return err

21
main.go
View File

@@ -9,22 +9,31 @@ import (
var Version = "dev" var Version = "dev"
// Global flags available to all commands
var overwrite bool
var dryRun bool
var verbose bool
func main() { func main() {
var overwrite bool // issue command flags
var name string
var subject string var subject string
var certType string var certType string
var validity string var validity string
var san []string var san []string
var name string
var dryRun bool // provision command flags
var verbose bool var provisionFile string
// crl command flags
var crlFile string var crlFile string
var crlValidityDays int var crlValidityDays int
// revoke command flags
var revokeName string var revokeName string
var revokeSerial string var revokeSerial string
var revokeReasonStr string var revokeReasonStr string
var provisionFile string
var rootCmd = &cobra.Command{ var rootCmd = &cobra.Command{
Use: "lab-ca", Use: "lab-ca",
@@ -46,7 +55,7 @@ func main() {
Use: "initca", Use: "initca",
Short: "Generate a new CA certificate and key", Short: "Generate a new CA certificate and key",
Run: func(cmd *cobra.Command, args []string) { Run: func(cmd *cobra.Command, args []string) {
InitCA(overwrite) InitCA()
}, },
} }
rootCmd.AddCommand(initCmd) rootCmd.AddCommand(initCmd)