cloudflare/cfssl_trust

Public

mirrored from https://github.com/cloudflare/cfssl_trustAvailable

CodeCommitsIssuesPull requestsActionsInsightsSecurity
trust-store-2026.4.0

Branches

Tags

  • No tags available.
0Branches0Tags
Go to file
Add file
Code

Clone

HTTPS

Download ZIP

cli/release_info.go

85lines · modecode

1package cli
2
3import (
4 "database/sql"
5 "fmt"
6 "os"
7
8 "github.com/cloudflare/cfssl_trust/common"
9 "github.com/cloudflare/cfssl_trust/model/certdb"
10 "github.com/cloudflare/cfssl_trust/release"
11 "github.com/spf13/cobra"
12 "github.com/spf13/viper"
13)
14
15var releaseInfoCmd = &cobra.Command{
16 Use: "release-info",
17 Short: "Display a list of the certificates in a release.",
18 Long: "Display a list of the certificates in a release.",
19 Run: releaseInfo,
20}
21
22func init() {
23 rootCmd.AddCommand(releaseInfoCmd)
24}
25
26func releaseInfo(cmd *cobra.Command, args []string) {
27 switch len(args) {
28 case 0: // Don't do anything.
29 case 1:
30 _, err := release.Parse(args[0])
31 if err != nil {
32 fmt.Fprintf(os.Stderr, "[!] Invalid release '%s'.\n", bundleRelease)
33 fmt.Fprintf(os.Stderr, "\tReason: %s\n", err)
34 os.Exit(1)
35 }
36 bundleRelease = args[0]
37 default:
38 fmt.Fprintln(os.Stderr, "[!] Too many arguments passed to 'release'.")
39 }
40
41 dbPath := viper.GetString("database.path")
42 db, err := sql.Open("sqlite3", dbPath)
43 if err != nil {
44 fmt.Fprintf(os.Stderr, "[!] %s\n", err)
45 os.Exit(1)
46 }
47
48 var rel *certdb.Release
49 if bundleRelease == "" {
50 rel, err = certdb.LatestRelease(db, bundle)
51 } else {
52 rel, err = certdb.FetchRelease(db, bundle, bundleRelease)
53 }
54
55 if err == sql.ErrNoRows {
56 fmt.Fprintf(os.Stderr, "[!] release %s-%s doesn't exist.\n",
57 rel.Bundle, rel.Version)
58 os.Exit(1)
59 } else if err != nil {
60 fmt.Fprintf(os.Stderr, "[!] %s\n", err)
61 os.Exit(1)
62 }
63
64 tx, err := db.Begin()
65 if err != nil {
66 fmt.Fprintf(os.Stderr, "[!] %s\n", err)
67 os.Exit(1)
68 }
69 defer tx.Rollback()
70
71 certs, err := certdb.CollectRelease(rel.Bundle, rel.Version, tx)
72 if err != nil {
73 fmt.Fprintf(os.Stderr, "[!] %s\n", err)
74 os.Exit(1)
75 }
76
77 fmt.Printf("%d certificates in release %s-%s:\n", len(certs),
78 rel.Bundle, rel.Version)
79 for _, cert := range certs {
80 xc := cert.X509()
81 fmt.Printf("SKI: %s\tSerial: %s\tSubject: %s\n",
82 cert.SKI, xc.SerialNumber, common.NameToString(xc.Subject))
83 }
84 tx.Commit()
85}
86