MCPcopy
hub / github.com/smallstep/cli / inspectAction

Function inspectAction

command/certificate/inspect.go:184–247  ·  view source on GitHub ↗
(ctx *cli.Context)

Source from the content-addressed store, hash-verified

182}
183
184func inspectAction(ctx *cli.Context) error {
185 if err := errs.MinMaxNumberOfArguments(ctx, 0, 1); err != nil {
186 return err
187 }
188
189 var (
190 crtFile = ctx.Args().Get(0)
191 bundle = ctx.Bool("bundle")
192 format = ctx.String("format")
193 roots = ctx.String("roots")
194 serverName = ctx.String("servername")
195 short = ctx.Bool("short")
196 insecure = ctx.Bool("insecure")
197 )
198
199 // Use stdin if no argument is used.
200 if crtFile == "" {
201 crtFile = "-"
202 }
203
204 if format != "text" && format != "json" && format != "pem" {
205 return errs.InvalidFlagValue(ctx, "format", format, "text, json, pem")
206 }
207 if short && (format == "json" || format == "pem") {
208 return errs.IncompatibleFlagWithFlag(ctx, "short", "format "+format)
209 }
210
211 switch addr, isURL, err := trimURL(crtFile); {
212 case err != nil:
213 return err
214 case isURL:
215 peerCertificates, err := getPeerCertificates(addr, serverName, roots, insecure)
216 if err != nil {
217 return err
218 }
219 if bundle {
220 return inspectCertificates(ctx, peerCertificates, os.Stdout)
221 }
222 return inspectCertificates(ctx, peerCertificates[:1], os.Stdout)
223 default: // is not URL
224 b, err := utils.ReadFile(crtFile)
225 if err != nil {
226 return errors.Wrapf(err, "error reading file %s", crtFile)
227 }
228
229 var pemError *pemutil.InvalidPEMError
230 crts, err := pemutil.ParseCertificateBundle(b)
231 switch {
232 case errors.As(err, &pemError) && pemError.Type == pemutil.PEMTypeCertificate:
233 csr, err := pemutil.ParseCertificateRequest(b)
234 if err != nil {
235 return errors.Errorf("file %s does not contain any valid CERTIFICATE or CERTIFICATE REQUEST blocks", crtFile)
236 }
237 return inspectCertificateRequest(ctx, csr, os.Stdout)
238 case err != nil:
239 return fmt.Errorf("error parsing %s: %w", crtFile, err)
240 default:
241 if bundle {

Callers

nothing calls this directly

Calls 6

ReadFileFunction · 0.92
trimURLFunction · 0.85
getPeerCertificatesFunction · 0.85
inspectCertificatesFunction · 0.85
StringMethod · 0.65

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…