DataFlex
DataFlex
Get Certificate CRL Distribution Points
See more Certificates Examples
Demonstrates how to get a certificate's CRL Distribution Points extension data (assuming it exists). In the vast majority of cases, there will be one CRL Distribution Point.Note: This example requires Chilkat v9.5.0.76 or greater.
Chilkat DataFlex Downloads
Use ChilkatAx-win32.pkg
Procedure Test
Boolean iSuccess
Handle hoCert
String sExtensionXmlStr
Handle hoXml
Variant vSbDistPoint
Handle hoSbDistPoint
String sTemp1
Boolean bTemp1
Move False To iSuccess
Get Create (RefClass(cComChilkatCert)) To hoCert
If (Not(IsComObjectCreated(hoCert))) Begin
Send CreateComObject of hoCert
End
Get ComLoadFromFile Of hoCert "qa_data/certs/test_haswdt.cer" To iSuccess
If (iSuccess <> True) Begin
Get ComLastErrorText Of hoCert To sTemp1
Showln sTemp1
Procedure_Return
End
// Get the CRL Distribution Points extension, which is at OID 2.5.29.31
Get ComGetExtensionAsXml Of hoCert "2.5.29.31" To sExtensionXmlStr
Get ComLastMethodSuccess Of hoCert To bTemp1
If (bTemp1 = False) Begin
Showln "Certificate does not have the CDP extension."
Procedure_Return
End
Get Create (RefClass(cComChilkatXml)) To hoXml
If (Not(IsComObjectCreated(hoXml))) Begin
Send CreateComObject of hoXml
End
Get ComLoadXml Of hoXml sExtensionXmlStr To iSuccess
// See what we have..
Get ComGetXml Of hoXml To sTemp1
Showln sTemp1
// We should get XML like this:
// <?xml version="1.0" encoding="utf-8" ?>
// <sequence>
// <sequence>
// <contextSpecific tag="0" constructed="1">
// <contextSpecific tag="0" constructed="1">
// <contextSpecific tag="6" constructed="0">aHR0cDovL2NybC5jb21vZG9jYS5jb20vQ09NT0RPUlNBQ2xpZW50QXV0aGVudGljYXRpb25hbmRTZWN1
// cmVFbWFpbENBLmNybA==</contextSpecific>
// </contextSpecific>
// </contextSpecific>
// </sequence>
// </sequence>
//
// Assuming there is one CRL Distribution Point...
Get Create (RefClass(cComChilkatStringBuilder)) To hoSbDistPoint
If (Not(IsComObjectCreated(hoSbDistPoint))) Begin
Send CreateComObject of hoSbDistPoint
End
Get pvComObject of hoSbDistPoint to vSbDistPoint
Get ComGetChildContentSb Of hoXml "sequence|contextSpecific|contextSpecific|contextSpecific" vSbDistPoint To iSuccess
If (iSuccess = True) Begin
Get ComDecode Of hoSbDistPoint "base64" "utf-8" To iSuccess
Get ComGetAsString Of hoSbDistPoint To sTemp1
Showln "CRL Distribution Point: " sTemp1
End
// Sample output:
// CRL Distribution Point: http://crl.comodoca.com/COMODORSAClientAuthenticationandSecureEmailCA.crl
End_Procedure