You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

63 lines
1.6 KiB
Go

package hsm
import (
"log"
"git.cacert.org/cacert-gosigner/pkg/config"
"github.com/ThalesIgnite/crypto11"
)
func EnsureCAKeysAndCertificates(p11Context *crypto11.Context, conf *config.SignerConfig) error {
var err error
for _, root := range conf.CAs {
root.Certificate, root.KeyPair, err = GetRootCACertificate(p11Context, conf.Global, root)
if err != nil {
return err
}
log.Printf("got root CA certificate:\n Subject %s\n Issuer %s\n Valid from %s until %s\n Serial %s",
root.Certificate.Subject,
root.Certificate.Issuer,
root.Certificate.NotBefore,
root.Certificate.NotAfter,
root.Certificate.SerialNumber)
for _, intermediary := range root.SubCAs {
err := setupIntermediaries(p11Context, conf.Global, intermediary, root)
if err != nil {
return err
}
}
}
return nil
}
func setupIntermediaries(p11Context *crypto11.Context, settings *config.Settings, intermediary, parent *config.CaCertificateEntry) error {
var err error
intermediary.Parent = parent
intermediary.Certificate, intermediary.KeyPair, err = GetIntermediaryCACertificate(p11Context, settings, intermediary)
if err != nil {
return err
}
log.Printf("got intermediary CA certificate:\n Subject %s\n Issuer %s\n Valid from %s until %s\n Serial %s",
intermediary.Certificate.Subject,
intermediary.Certificate.Issuer,
intermediary.Certificate.NotBefore,
intermediary.Certificate.NotAfter,
intermediary.Certificate.SerialNumber)
for _, sub := range intermediary.SubCAs {
err := setupIntermediaries(p11Context, settings, sub, intermediary)
if err != nil {
return err
}
}
return nil
}