Sample code for 30+ languages & platforms
DataFlex

Get a Certificate's Key Size

See more Certificates Examples

Demonstrates how to get the RSA key size of a certificate (for example, 1024-bit, 2048-bit, etc.)

Chilkat DataFlex Downloads

DataFlex
Use ChilkatAx-win32.pkg

Procedure Test
    Boolean iSuccess
    Handle hoSbCertBase64
    Handle hoCert
    Variant vPubKey
    Handle hoPubKey
    Integer iNumBits
    Handle hoXml
    Handle hoBinDat
    String sTemp1
    Integer iTemp1

    Move False To iSuccess

    // For this example, I have a certificate in raw base64 format (not PEM),
    // that looks like this:  "MIIGkDCCBHigAwIBAgIUMDA ... s/iqLsLA=="
    Get Create (RefClass(cComChilkatStringBuilder)) To hoSbCertBase64
    If (Not(IsComObjectCreated(hoSbCertBase64))) Begin
        Send CreateComObject of hoSbCertBase64
    End
    Get ComLoadFile Of hoSbCertBase64 "qa_data/certs/base64Cert.txt" "utf-8" To iSuccess

    Get Create (RefClass(cComChilkatCert)) To hoCert
    If (Not(IsComObjectCreated(hoCert))) Begin
        Send CreateComObject of hoCert
    End
    Get ComGetAsString Of hoSbCertBase64 To sTemp1
    Get ComLoadFromBase64 Of hoCert sTemp1 To iSuccess
    If (iSuccess = False) Begin
        Get ComLastErrorText Of hoCert To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    // Get the public key.
    Get Create (RefClass(cComChilkatPublicKey)) To hoPubKey
    If (Not(IsComObjectCreated(hoPubKey))) Begin
        Send CreateComObject of hoPubKey
    End
    Get pvComObject of hoPubKey to vPubKey
    Get ComGetPublicKey Of hoCert vPubKey To iSuccess

    Get ComKeySize Of hoPubKey To iNumBits
    Showln "Number of bits = " iNumBits

    // If using an older version of Chilkat, the key size can be obtained like this:
    Get Create (RefClass(cComChilkatXml)) To hoXml
    If (Not(IsComObjectCreated(hoXml))) Begin
        Send CreateComObject of hoXml
    End
    Get ComGetXml Of hoPubKey To sTemp1
    Get ComLoadXml Of hoXml sTemp1 To iSuccess

    Get Create (RefClass(cComChilkatBinData)) To hoBinDat
    If (Not(IsComObjectCreated(hoBinDat))) Begin
        Send CreateComObject of hoBinDat
    End
    Get ComGetChildContent Of hoXml "Modulus" To sTemp1
    Get ComAppendEncoded Of hoBinDat sTemp1 "base64" To iSuccess

    Get ComNumBytes Of hoBinDat To iTemp1
    Move (8 * iTemp1) To iNumBits
    Showln "Number of bits = " iNumBits


End_Procedure