@@ -21,62 +21,47 @@ var collection = new(sync.Map)
2121// requests using step certificates.
2222type Step struct {
2323 name string
24+ caBundle []byte
2425 provisioner * ca.Provisioner
2526}
2627
2728// NewFromStepIssuer returns a new Step provisioner, configured with the information in the
2829// given issuer.
2930func NewFromStepIssuer (iss * api.StepIssuer , password []byte ) (* Step , error ) {
30- var options []ca.ClientOption
31- if len (iss .Spec .CABundle ) > 0 {
32- options = append (options , ca .WithCABundle (iss .Spec .CABundle ))
31+ options := []ca.ClientOption {
32+ ca .WithCABundle (iss .Spec .CABundle ),
3333 }
34+
3435 provisioner , err := ca .NewProvisioner (iss .Spec .Provisioner .Name , iss .Spec .Provisioner .KeyID , iss .Spec .URL , password , options ... )
3536 if err != nil {
3637 return nil , err
3738 }
3839
3940 p := & Step {
4041 name : iss .Name + "." + iss .Namespace ,
42+ caBundle : iss .Spec .CABundle ,
4143 provisioner : provisioner ,
4244 }
4345
44- // Request identity certificate if required.
45- if version , err := provisioner .Version (); err == nil {
46- if version .RequireClientAuthentication {
47- if err := p .createIdentityCertificate (); err != nil {
48- return nil , err
49- }
50- }
51- }
52-
5346 return p , nil
5447}
5548
5649func NewFromStepClusterIssuer (iss * api.StepClusterIssuer , password []byte ) (* Step , error ) {
57- var options []ca.ClientOption
58- if len (iss .Spec .CABundle ) > 0 {
59- options = append (options , ca .WithCABundle (iss .Spec .CABundle ))
50+ options := []ca.ClientOption {
51+ ca .WithCABundle (iss .Spec .CABundle ),
6052 }
53+
6154 provisioner , err := ca .NewProvisioner (iss .Spec .Provisioner .Name , iss .Spec .Provisioner .KeyID , iss .Spec .URL , password , options ... )
6255 if err != nil {
6356 return nil , err
6457 }
6558
6659 p := & Step {
6760 name : iss .Name + "." + iss .Namespace ,
61+ caBundle : iss .Spec .CABundle ,
6862 provisioner : provisioner ,
6963 }
7064
71- // Request identity certificate if required.
72- if version , err := provisioner .Version (); err == nil {
73- if version .RequireClientAuthentication {
74- if err := p .createIdentityCertificate (); err != nil {
75- return nil , err
76- }
77- }
78- }
79-
8065 return p , nil
8166}
8267
@@ -95,45 +80,9 @@ func Store(namespacedName types.NamespacedName, provisioner *Step) {
9580 collection .Store (namespacedName , provisioner )
9681}
9782
98- func (s * Step ) createIdentityCertificate () error {
99- csr , pk , err := ca .CreateCertificateRequest (s .name )
100- if err != nil {
101- return err
102- }
103- token , err := s .provisioner .Token (s .name )
104- if err != nil {
105- return err
106- }
107- resp , err := s .provisioner .Sign (& capi.SignRequest {
108- CsrPEM : * csr ,
109- OTT : token ,
110- })
111- if err != nil {
112- return err
113- }
114- tr , err := s .provisioner .Client .Transport (context .Background (), resp , pk )
115- if err != nil {
116- return err
117- }
118- s .provisioner .Client .SetTransport (tr )
119- return nil
120- }
121-
12283// Sign sends the certificate requests to the Step CA and returns the signed
12384// certificate.
12485func (s * Step ) Sign (_ context.Context , cr * certmanager.CertificateRequest ) ([]byte , []byte , error ) {
125- // Get root certificate(s)
126- roots , err := s .provisioner .Roots ()
127- if err != nil {
128- return nil , nil , err
129- }
130-
131- // Encode root certificates
132- caPem , err := encodeX509 (roots .Certificates ... )
133- if err != nil {
134- return nil , nil , err
135- }
136-
13786 // decode and check certificate request
13887 csr , err := decodeCSR (cr .Spec .Request )
13988 if err != nil {
@@ -180,7 +129,7 @@ func (s *Step) Sign(_ context.Context, cr *certmanager.CertificateRequest) ([]by
180129 if err != nil {
181130 return nil , nil , err
182131 }
183- return chainPem , caPem , nil
132+ return chainPem , s . caBundle , nil
184133}
185134
186135// decodeCSR decodes a certificate request in PEM format and returns the
0 commit comments