(Tcl) Get a Certificate's Key Size
Demonstrates how to get the RSA key size of a certificate (for example, 1024-bit, 2048-bit, etc.) Note: This example requires Chilkat v11.0.0 or greater.
load ./chilkat.dll
set success 0
# For this example, I have a certificate in raw base64 format (not PEM),
# that looks like this: "MIIGkDCCBHigAwIBAgIUMDA ... s/iqLsLA=="
set sbCertBase64 [new_CkStringBuilder]
set success [CkStringBuilder_LoadFile $sbCertBase64 "qa_data/certs/base64Cert.txt" "utf-8"]
set cert [new_CkCert]
set success [CkCert_LoadFromBase64 $cert [CkStringBuilder_getAsString $sbCertBase64]]
if {$success == 0} then {
puts [CkCert_lastErrorText $cert]
delete_CkStringBuilder $sbCertBase64
delete_CkCert $cert
exit
}
# Get the public key.
set pubKey [new_CkPublicKey]
CkCert_GetPublicKey $cert $pubKey
set numBits [CkPublicKey_get_KeySize $pubKey]
puts "Number of bits = $numBits"
# If using an older version of Chilkat, the key size can be obtained like this:
set xml [new_CkXml]
CkXml_LoadXml $xml [CkPublicKey_getXml $pubKey]
set binDat [new_CkBinData]
CkBinData_AppendEncoded $binDat [CkXml_getChildContent $xml "Modulus"] "base64"
set numBits [expr 8 * [CkBinData_get_NumBytes $binDat]]
puts "Number of bits = $numBits"
delete_CkStringBuilder $sbCertBase64
delete_CkCert $cert
delete_CkPublicKey $pubKey
delete_CkXml $xml
delete_CkBinData $binDat
|