Sample code for 30+ languages & platforms
AutoIt

Load .crl, Convert to XML, Get Revoked Serial Numbers and Dates

See more Certificates Examples

Load a binary .crl file (Certificate Revocation List), converts to XML, and then gets the revoked certificate serial numbers and revocation dates.

Note: This example requires Chilkat v9.5.0.77 or greater.

Chilkat AutoIt Downloads

AutoIt
Local $bSuccess = False

; This example requires the Chilkat API to have been previously unlocked.
; See Global Unlock Sample for sample code.

; Load a binary .crl file.
$oBdCrl = ObjCreate("Chilkat.BinData")
$bSuccess = $oBdCrl.LoadFile("qa_data/crl/ca1.crl")
If ($bSuccess <> True) Then
    ConsoleWrite("Failed to load CRL file." & @CRLF)
    Exit
EndIf

$oAsn = ObjCreate("Chilkat.Asn")
$bSuccess = $oAsn.LoadBd($oBdCrl)
If ($bSuccess <> True) Then
    ConsoleWrite($oAsn.LastErrorText & @CRLF)
    Exit
EndIf

; Convert ASN.1 to XML and load into xml and re-emit for pretty printing..
$oXml = ObjCreate("Chilkat.Xml")
$oXml.LoadXml($oAsn.AsnToXml())
$bSuccess = $oXml.SaveXml("qa_output/crl.xml")

; Use this online tool to generate parsing code from CRL XML: 
; Generate Parsing Code from XML

; Here's code to parse the XML.  This code was generated by the above tool,
; and then we modified it by removing unneeded code and changing some names
Local $i
Local $iCount_i
Local $sTagPath
Local $iJ
Local $iCount_j
Local $iK
Local $iCount_k

Local $sRevokedCertSerialHex
Local $sDateRevoked

$oDt = ObjCreate("Chilkat.CkDateTime")

$i = 0
$iCount_i = $oXml.NumChildrenHavingTag("sequence")
While $i < $iCount_i
    $oXml.I = $i

    $iJ = 0
    $iCount_j = $oXml.NumChildrenHavingTag("sequence[i]|sequence")
    While $iJ < $iCount_j
        $oXml.J = $iJ

        $iK = 0
        $iCount_k = $oXml.NumChildrenHavingTag("sequence[i]|sequence[j]|sequence")
        While $iK < $iCount_k
            $oXml.K = $iK

            ; Get the revoked certificate's serial number in uppercase hex.
            $sRevokedCertSerialHex = $oXml.GetChildContent("sequence[i]|sequence[j]|sequence[k]|int")
            ConsoleWrite("serial number: " & $sRevokedCertSerialHex & @CRLF)

            ; Get the date/time revoked.  It will be a string formatted as "YYMMDDhhmmssZ", such as "181023093028Z"
            $sDateRevoked = $oXml.GetChildContent("sequence[i]|sequence[j]|sequence[k]|utctime")

            ; Starting in Chilkat v9.5.0.77, date/time strings formatted as YYMMDDhhmmssZ can be parsed as follows:
            $oDt.SetFromTimestamp($sDateRevoked)
            ConsoleWrite("date revoked: " & $oDt.GetAsRfc822(False) & @CRLF)

            $iK = $iK + 1
        Wend
        $iJ = $iJ + 1
    Wend
    $i = $i + 1
Wend