88 "crypto/x509/pkix"
99 "encoding/pem"
1010 "fmt"
11- "log"
11+ "log" //nolint:depguard // TODO: replace with logger from mariadb-backup-s3
1212 "os"
1313 "time"
1414
@@ -38,7 +38,7 @@ func newServerCertificateRequestPEM(template x509.CertificateRequest, priv *ecds
3838 return nil , fmt .Errorf ("failed to create certificate request: %w" , err )
3939 }
4040
41- return pem .EncodeToMemory (& pem.Block {Type : "CERTIFICATE REQUEST" , Bytes : csrBytes }), nil
41+ return pem .EncodeToMemory (& pem.Block {Type : "CERTIFICATE REQUEST" , Headers : nil , Bytes : csrBytes }), nil
4242}
4343
4444func requestCertificate (c * cli.Context , typ ca.CSRType , template x509.CertificateRequest ) error {
@@ -54,8 +54,9 @@ func requestCertificate(c *cli.Context, typ ca.CSRType, template x509.Certificat
5454 }
5555
5656 privPemBytes := pem .EncodeToMemory (& pem.Block {
57- Type : "EC PRIVATE KEY" ,
58- Bytes : privBytes ,
57+ Type : "EC PRIVATE KEY" ,
58+ Headers : nil ,
59+ Bytes : privBytes ,
5960 })
6061
6162 log .Println ("Creating certificate request..." )
@@ -68,14 +69,15 @@ func requestCertificate(c *cli.Context, typ ca.CSRType, template x509.Certificat
6869 client := metadata .GetCAClient (c .App .Metadata )
6970
7071 resp , err := client .PostCSR (c .Context , ca.PostCSRRequest {
71- Type : typ ,
72- Content : string (csrPemBytes ),
72+ Type : typ ,
73+ Content : string (csrPemBytes ),
74+ Metadata : nil ,
7375 })
7476 if err != nil {
7577 return cli .Exit (err .Error (), codes .ClientError )
7678 }
7779
78- timeout := time .After (30 * time . Second )
80+ timeout := time .After (c . Duration ( "timeout" ) )
7981 for resp .Certificate == "" {
8082 select {
8183 case <- c .Context .Done ():
@@ -93,12 +95,14 @@ func requestCertificate(c *cli.Context, typ ca.CSRType, template x509.Certificat
9395 }
9496
9597 log .Println ("Saving certificate..." )
96- if err := os .WriteFile (c .String ("out" ), []byte (resp .Certificate ), 0644 ); err != nil {
97- return cli .Exit (err .Error (), codes .OutputError )
98+ if wrErr := os .WriteFile (c .String ("out" ), []byte (resp .Certificate ), 0600 ); wrErr != nil {
99+ return cli .Exit (wrErr .Error (), codes .OutputError )
98100 }
99- if err := os .WriteFile (c .String ("keyout" ), privPemBytes , 0400 ); err != nil {
100- os .Remove (c .String ("out" ))
101- return cli .Exit (err .Error (), codes .OutputError )
101+ if wrErr := os .WriteFile (c .String ("keyout" ), privPemBytes , 0400 ); wrErr != nil {
102+ if rmErr := os .Remove (c .String ("out" )); rmErr != nil {
103+ log .Printf ("Failed to remove certificate file %s: %s" , c .String ("out" ), rmErr .Error ())
104+ }
105+ return cli .Exit (wrErr .Error (), codes .OutputError )
102106 }
103107
104108 log .Printf ("Certificate saved to %s\n " , c .String ("out" ))
0 commit comments