cmd: add certser
This commit is contained in:
61
cmd/certser/main.go
Normal file
61
cmd/certser/main.go
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"crypto/x509"
|
||||||
|
"encoding/hex"
|
||||||
|
"flag"
|
||||||
|
"fmt"
|
||||||
|
"strings"
|
||||||
|
|
||||||
|
"git.wntrmute.dev/kyle/goutils/certlib"
|
||||||
|
"git.wntrmute.dev/kyle/goutils/die"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
displayInt = iota + 1
|
||||||
|
displayLHex
|
||||||
|
displayUHex
|
||||||
|
)
|
||||||
|
|
||||||
|
func parseDisplayMode(mode string) int {
|
||||||
|
mode = strings.ToLower(mode)
|
||||||
|
switch mode {
|
||||||
|
case "int":
|
||||||
|
return displayInt
|
||||||
|
case "hex":
|
||||||
|
return displayLHex
|
||||||
|
case "uhex":
|
||||||
|
return displayUHex
|
||||||
|
default:
|
||||||
|
die.With("invalid display mode ", mode)
|
||||||
|
}
|
||||||
|
|
||||||
|
return displayInt
|
||||||
|
}
|
||||||
|
|
||||||
|
func serialString(cert *x509.Certificate, mode int) string {
|
||||||
|
switch mode {
|
||||||
|
case displayInt:
|
||||||
|
return cert.SerialNumber.String()
|
||||||
|
case displayLHex:
|
||||||
|
return hex.EncodeToString(cert.SerialNumber.Bytes())
|
||||||
|
case displayUHex:
|
||||||
|
return strings.ToUpper(hex.EncodeToString(cert.SerialNumber.Bytes()))
|
||||||
|
default:
|
||||||
|
return cert.SerialNumber.String()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
displayAs := flag.String("d", "int", "display mode (int, hex, uhex)")
|
||||||
|
flag.Parse()
|
||||||
|
|
||||||
|
displayMode := parseDisplayMode(*displayAs)
|
||||||
|
|
||||||
|
for _, arg := range flag.Args() {
|
||||||
|
cert, err := certlib.LoadCertificate(arg)
|
||||||
|
die.If(err)
|
||||||
|
|
||||||
|
fmt.Printf("%s: %x\n", arg, serialString(cert, displayMode))
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user