@@ -16,6 +16,7 @@ import (
1616 mathrand "math/rand"
1717 "os"
1818 "path/filepath"
19+ "slices"
1920 "strings"
2021 "time"
2122
@@ -472,8 +473,8 @@ func inspect(pfxFile string, pfxPassword string, verbose bool) error {
472473
473474 fmt .Println ("Certificate:" )
474475
475- if cert .Subject .CommonName != "" {
476- fmt .Printf (" Subject : %s\n " , cert .Subject . String ( ))
476+ if len ( cert .Subject .Names ) > 0 {
477+ fmt .Printf (" Subject : %s\n " , nameAsString ( cert .Subject ))
477478 }
478479
479480 if len (otherNames ) > 0 {
@@ -885,6 +886,45 @@ func tryParseASN1GUID(asn1Data []byte) string {
885886 rawGUID [10 :])
886887}
887888
889+ func nameAsString (pkixName pkix.Name ) string {
890+ parts := make ([]string , 0 , len (pkixName .Names ))
891+
892+ for _ , name := range pkixName .Names {
893+ var key string
894+
895+ switch name .Type .String () {
896+ case "2.5.4.6" :
897+ key = "C"
898+ case "2.5.4.10" :
899+ key = "O"
900+ case "2.5.4.11" :
901+ key = "OU"
902+ case "2.5.4.3" :
903+ key = "CN"
904+ case "2.5.4.5" :
905+ key = "SERIALNUMBER"
906+ case "2.5.4.7" :
907+ key = "L"
908+ case "2.5.4.8" :
909+ key = "ST"
910+ case "2.5.4.9" :
911+ key = "STREET"
912+ case "2.5.4.17" :
913+ key = "POSTALCODE"
914+ case "0.9.2342.19200300.100.1.25" :
915+ key = "DC"
916+ default :
917+ key = "{" + name .Type .String () + "}"
918+ }
919+
920+ parts = append (parts , fmt .Sprintf ("%s=%v" , key , name .Value ))
921+ }
922+
923+ slices .Reverse (parts )
924+
925+ return strings .Join (parts , "," )
926+ }
927+
888928func joinStringers [T fmt.Stringer ](elems []T , sep string ) string {
889929 strs := make ([]string , 0 , len (elems ))
890930
0 commit comments