Sample code for 30+ languages & platforms
PureBasic

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 PureBasic Downloads

PureBasic
IncludeFile "CkBinData.pb"
IncludeFile "CkCert.pb"
IncludeFile "CkStringBuilder.pb"
IncludeFile "CkXml.pb"
IncludeFile "CkPublicKey.pb"

Procedure ChilkatExample()

    success.i = 0

    ; For this example, I have a certificate in raw base64 format (not PEM),
    ; that looks like this:  "MIIGkDCCBHigAwIBAgIUMDA ... s/iqLsLA=="
    sbCertBase64.i = CkStringBuilder::ckCreate()
    If sbCertBase64.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    success = CkStringBuilder::ckLoadFile(sbCertBase64,"qa_data/certs/base64Cert.txt","utf-8")

    cert.i = CkCert::ckCreate()
    If cert.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    success = CkCert::ckLoadFromBase64(cert,CkStringBuilder::ckGetAsString(sbCertBase64))
    If success = 0
        Debug CkCert::ckLastErrorText(cert)
        CkStringBuilder::ckDispose(sbCertBase64)
        CkCert::ckDispose(cert)
        ProcedureReturn
    EndIf

    ; Get the public key.
    pubKey.i = CkPublicKey::ckCreate()
    If pubKey.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    CkCert::ckGetPublicKey(cert,pubKey)

    numBits.i = CkPublicKey::ckKeySize(pubKey)
    Debug "Number of bits = " + Str(numBits)

    ; If using an older version of Chilkat, the key size can be obtained like this:
    xml.i = CkXml::ckCreate()
    If xml.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    CkXml::ckLoadXml(xml,CkPublicKey::ckGetXml(pubKey))

    binDat.i = CkBinData::ckCreate()
    If binDat.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    CkBinData::ckAppendEncoded(binDat,CkXml::ckGetChildContent(xml,"Modulus"),"base64")

    numBits = 8 * CkBinData::ckNumBytes(binDat)
    Debug "Number of bits = " + Str(numBits)


    CkStringBuilder::ckDispose(sbCertBase64)
    CkCert::ckDispose(cert)
    CkPublicKey::ckDispose(pubKey)
    CkXml::ckDispose(xml)
    CkBinData::ckDispose(binDat)


    ProcedureReturn
EndProcedure