1
Я ищу простой пример для разбора X.509 PEM в go и сброса значений в stdout. Может ли кто-нибудь представить пример?Анализ и печать атрибутов X.509 от PEM
Я ищу простой пример для разбора X.509 PEM в go и сброса значений в stdout. Может ли кто-нибудь представить пример?Анализ и печать атрибутов X.509 от PEM
Вы хотите использовать encoding.pem
для декодирования файла pem, который даст вам блоки DER, которые вы можете декодировать с помощью пакета crypto/x509
.
Например:
certPEMBlock, err := ioutil.ReadFile(certFile)
if err != nil {
log.Fatal(err)
}
var blocks [][]byte
for {
var certDERBlock *pem.Block
certDERBlock, certPEMBlock = pem.Decode(certPEMBlock)
if certDERBlock == nil {
break
}
if certDERBlock.Type == "CERTIFICATE" {
blocks = append(blocks, certDERBlock.Bytes)
}
}
for _, block := range blocks {
cert, err := x509.ParseCertificate(block)
if err != nil {
log.Println(err)
continue
}
fmt.Println("Certificate:")
fmt.Printf("\tSubject: %+v\n", cert.Subject)
fmt.Printf("\tDNS Names: %+v\n", cert.DNSNames)
fmt.Printf("\tEmailAddresses: %+v\n", cert.EmailAddresses)
fmt.Printf("\tIPAddresses: %+v\n", cert.IPAddresses)
}
Совершенные благодарит вас - все примеры включены многие вещи, которые мне не нужно, чтобы я не мог видеть лес из деревьев. – user1513388
Фактически один другой вопрос. Если мне нужно получить читаемые значения из OIDS в расширениях. например '\t Расширения: [{Id: 2.5.29.19 Критическое: истинное значение: [48 6 1 1 255 2 1 0]} {Id: 2.5.29.15 Критическое: истинное значение: [3 2 1 6]} {Id: 2.5. 29.14 Критическое: ложное Значение: [4 20 130 58 82 76 175 51 150 249 100 78 198 192 222 152 125 138 116 43 190 57]} {Id: 2.5.29.35 Критическое: ложное Значение: [48 22 128 20 193 119 177 45 157 107 253 81 197 19 136 6 147 96 30 135 125 249 52 15]}] 'Есть ли простой способ получить их? – user1513388
@ user1513388: Я не уверен, что вы имеете в виду. У вас их уже есть; они декодируются как ['pkix.Extension'] (https://golang.org/pkg/crypto/x509/pkix/#Extension). – JimB