Sample code for 30+ languages & platforms
Go

Subject Alternative Name for ICP Brasil Certs

See more Certificates Examples

Demonstrates how to access the multiple names contained in the Subject Alternative Name of a certificate. This example is for an ICP Brasil certificate.

Chilkat Go Downloads

Go
    success := false

    cert := chilkat.NewCert()

    success = cert.LoadFromFile("qa_data/certs/testIcpBrasil.cer")
    if success == false {
        fmt.Println(cert.LastErrorText())
        cert.DisposeCert()
        return
    }

    // If the cert's Subject Alternative Name contains multiple values, each specified by an OID,
    // then the Rfc822Name property returns XML.
    subjectAltNameXml := cert.Rfc822Name()

    fmt.Println(subjectAltNameXml)

    // Here's a sample of the subjectAltNameXml:

    // <SubjectAltName>
    //     <name type="oid" oid="2.16.76.1.3.4">290999653223955019700000000000000000000150424SRJUXPTS</name>
    //     <name type="oid" oid="2.16.76.1.3.2">JOAO SILVA</name>
    //     <name type="oid" oid="2.16.76.1.3.3">02408939000115</name>
    //     <name type="oid" oid="2.16.76.1.3.7">000000000000</name>
    // </SubjectAltName>

    // The XML can be parsed like this:

    xml := chilkat.NewXml()
    xml.LoadXml(subjectAltNameXml)

    var oid *string = new(string)
    var name *string = new(string)

    i := 0
    count_i := xml.NumChildrenHavingTag("name")
    for i < count_i {
        xml.SetI(i)
        oid = xml.ChilkatPath("name[i]|(oid)")
        name = xml.GetChildContent("name[i]")
        fmt.Println(*oid, ": ", *name)
        i = i + 1
    }


    cert.DisposeCert()
    xml.DisposeXml()