38 lines
776 B
Go
38 lines
776 B
Go
|
package ca
|
||
|
|
||
|
import (
|
||
|
"crypto/rand"
|
||
|
"crypto/rsa"
|
||
|
"fmt"
|
||
|
"os"
|
||
|
|
||
|
"github.com/spf13/cobra"
|
||
|
"src.lwithers.me.uk/go/rsa/pkg/ca"
|
||
|
)
|
||
|
|
||
|
// Intermediate uses an existing CA to create a new intermediate CA in a new
|
||
|
// directory.
|
||
|
func Intermediate(cmd *cobra.Command, args []string) {
|
||
|
newCADir := args[0]
|
||
|
desc := args[1]
|
||
|
|
||
|
ca, err := ca.Open(dir)
|
||
|
if err != nil {
|
||
|
fmt.Fprintln(os.Stderr, err)
|
||
|
os.Exit(1)
|
||
|
}
|
||
|
|
||
|
template := createCATemplate(desc)
|
||
|
key, err := rsa.GenerateKey(rand.Reader, bits)
|
||
|
if err != nil {
|
||
|
fmt.Fprintf(os.Stderr, "Failed to generate new key (%d bits): %v\n", bits, err)
|
||
|
os.Exit(1)
|
||
|
}
|
||
|
|
||
|
_, err = ca.CreateIntermediate(newCADir, template, key)
|
||
|
if err != nil {
|
||
|
fmt.Fprintf(os.Stderr, "Failed to initialise new intermediate CA: %v\n", err)
|
||
|
os.Exit(1)
|
||
|
}
|
||
|
}
|