github.com/vmware/govmomi@v0.51.0/cli/library/trust/ls.go (about) 1 // © Broadcom. All Rights Reserved. 2 // The term “Broadcom” refers to Broadcom Inc. and/or its subsidiaries. 3 // SPDX-License-Identifier: Apache-2.0 4 5 package trust 6 7 import ( 8 "context" 9 "crypto/x509" 10 "encoding/pem" 11 "flag" 12 "fmt" 13 "io" 14 "text/tabwriter" 15 16 "github.com/vmware/govmomi/cli" 17 "github.com/vmware/govmomi/cli/flags" 18 "github.com/vmware/govmomi/vapi/library" 19 ) 20 21 type ls struct { 22 *flags.ClientFlag 23 *flags.OutputFlag 24 } 25 26 func init() { 27 cli.Register("library.trust.ls", &ls{}) 28 } 29 30 func (cmd *ls) Register(ctx context.Context, f *flag.FlagSet) { 31 cmd.ClientFlag, ctx = flags.NewClientFlag(ctx) 32 cmd.OutputFlag, ctx = flags.NewOutputFlag(ctx) 33 cmd.ClientFlag.Register(ctx, f) 34 cmd.OutputFlag.Register(ctx, f) 35 } 36 37 func (cmd *ls) Process(ctx context.Context) error { 38 if err := cmd.ClientFlag.Process(ctx); err != nil { 39 return err 40 } 41 return nil 42 } 43 44 func (cmd *ls) Description() string { 45 return `List trusted certificates for content libraries. 46 47 Examples: 48 govc library.trust.ls 49 govc library.trust.ls -json` 50 } 51 52 type lsResultsWriter struct { 53 TrustedCertificates []library.TrustedCertificateSummary `json:"certificates,omitempty"` 54 } 55 56 func (r lsResultsWriter) Write(w io.Writer) error { 57 tw := tabwriter.NewWriter(w, 2, 0, 2, ' ', 0) 58 59 for _, cert := range r.TrustedCertificates { 60 block, _ := pem.Decode([]byte(cert.Text)) 61 x, err := x509.ParseCertificate(block.Bytes) 62 if err != nil { 63 return err 64 } 65 66 x.Subject.Names = nil // trim x.Subject.String() output 67 68 fmt.Fprintf(tw, "%s\t%s\n", cert.ID, x.Subject) 69 } 70 71 return tw.Flush() 72 } 73 74 func (r lsResultsWriter) Dump() any { 75 return r.TrustedCertificates 76 } 77 78 func (cmd *ls) Run(ctx context.Context, _ *flag.FlagSet) error { 79 c, err := cmd.RestClient() 80 if err != nil { 81 return err 82 } 83 84 certs, err := library.NewManager(c).ListTrustedCertificates(ctx) 85 if err != nil { 86 return err 87 } 88 89 return cmd.WriteResult(&lsResultsWriter{certs}) 90 }