Tcl
Tcl
RSA Sign Binary Data and Verify (Recover the Original Data)
See more RSA Examples
Demonstrates how to RSA sign binary data and then verify/recover the original data.Note: This example uses methods introduced in Chilkat v9.5.0.77.
Chilkat Tcl Downloads
load ./chilkat.dll
set success 0
# This example requires the Chilkat API to have been previously unlocked.
# See Global Unlock Sample for sample code.
# Load an RSA private key for signing.
set privKey [new_CkPrivateKey]
set success [CkPrivateKey_LoadEncryptedPemFile $privKey "qa_data/pem/rsa_passwd.pem" "passwd"]
if {$success == 0} then {
puts [CkPrivateKey_lastErrorText $privKey]
delete_CkPrivateKey $privKey
exit
}
set rsa [new_CkRsa]
CkRsa_UsePrivateKey $rsa $privKey
# We have some binary data (in hex) to sign
set originalData "0102030405060708090A"
set bd [new_CkBinData]
CkBinData_AppendEncoded $bd $originalData "hex"
# If successful, the contents of bd are replaced with the RSA signature.
set success [CkRsa_SignRawBd $rsa $bd]
if {$success == 0} then {
puts [CkRsa_lastErrorText $rsa]
delete_CkPrivateKey $privKey
delete_CkRsa $rsa
delete_CkBinData $bd
exit
}
# Show the RSA signature in base64
puts [CkBinData_getEncoded $bd base64]
# ------------------------------------------
# Get the public key from the private key
set pubKey [new_CkPublicKey]
CkPrivateKey_ToPublicKey $privKey $pubKey
# Verify the signature and extract the original data.
set rsa2 [new_CkRsa]
CkRsa_UsePublicKey $rsa2 $pubKey
set bVerified [CkRsa_VerifyRawBd $rsa2 $bd]
puts "signature verified: $bVerified"
# Show the original data:
puts "original data: [CkBinData_getEncoded $bd hex]"
delete_CkPrivateKey $privKey
delete_CkRsa $rsa
delete_CkBinData $bd
delete_CkPublicKey $pubKey
delete_CkRsa $rsa2