MrReboot
MrReboot

Reputation: 263

Parsing a certificate string in go

I'm using ssldump to extract the certificate in a communication. When i parse the result I obtain a string in go defined as:

var string certStr
certStr = "30 82 06 9f...."

How can I parse it to a X509 certificate?

UPDATED

I have tried to parse it directly:

certSlc := []byte(certStr)
cert,err := x509.ParseCertificates(certSlc)

But the result was:

Error:asn1: structure error: tags don't match (16 vs {class:0 tag:19 length:48 isCompound:true}) {optional:false explicit:false application:false defaultValue:<nil> tag:<nil> stringType:0 timeType:0 set:false omitEmpty:false}

Should I do another kind of conversion? maybe is the string incomplete or has got wrong type of cert?

Upvotes: 3

Views: 6278

Answers (1)

MrReboot
MrReboot

Reputation: 263

I found the error. The problem was in the source. As I was explaining, my cert string was "30 82 06 09...". This source must be decoded with:

hex.DecodeString(certStr)

The problem is that hex decoding doesn't work with this format. The error I obtained was:

encoding/hex: invalid byte: U+0020 ' '

So, removing whitespaces and carriage returns in the original string is the solution to make it work.

After decoding in a byte slice the X509 certificate can be created with no problem.

Upvotes: 3

Related Questions