certificates/cas/apiv1/options.go

51 lines
1.3 KiB
Go
Raw Normal View History

package apiv1
import (
"crypto"
"crypto/x509"
"github.com/pkg/errors"
)
// Options represents the configuration options used to select and configure the
// CertificateAuthorityService (CAS) to use.
type Options struct {
// The type of the CAS to use.
Type string `json:"type"`
// Path to the credentials file used in CloudCAS
CredentialsFile string `json:"credentialsFile"`
// CertificateAuthority reference. In CloudCAS the format is
// `projects/*/locations/*/certificateAuthorities/*`.
2020-10-20 01:44:27 +00:00
CertificateAuthority string `json:"certificateAuthority"`
// Issuer and signer are the issuer certificate and signer used in SoftCAS.
// They are configured in ca.json crt and key properties.
Issuer *x509.Certificate `json:"-"`
Signer crypto.Signer `json:"-"`
}
// Validate checks the fields in Options.
func (o *Options) Validate() error {
var typ Type
if o == nil {
typ = Type(SoftCAS)
} else {
typ = Type(o.Type)
}
// Check that the type can be loaded.
if _, ok := LoadCertificateAuthorityServiceNewFunc(typ); !ok {
return errors.Errorf("unsupported cas type %s", typ)
}
return nil
}
2020-09-10 23:19:18 +00:00
2020-09-21 22:11:25 +00:00
// Is returns if the options have the given type.
func (o *Options) Is(t Type) bool {
2020-09-10 23:19:18 +00:00
if o == nil {
return t.String() == SoftCAS
2020-09-10 23:19:18 +00:00
}
return Type(o.Type).String() == t.String()
}