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