Tcl
Tcl
Verify an RSA Signature Against the Signed Hash
See more Apple Keychain Examples
Demonstrates how to validate an RSA Signature against the hash that was signed.Chilkat Tcl Downloads
load ./chilkat.dll
set success 0
set bd [new_CkBinData]
for {set i 0} {$i <= 100} {incr i} {
CkBinData_AppendEncoded $bd "000102030405060708090A0B0C0D0E0F" "hex"
}
set sha256_base64 [CkBinData_getHash $bd "sha256" "base64"]
puts "sha256 hash in base64 format: $sha256_base64"
set base64_rsa_sig "AwF2BbOvL6jA5DwmMAc9n6J2Cc8PI6Rj5W079+aKJcIEtPWRzHor0Bvc3aftGM3Jbgj6SXlIC3M3RYS7UZOnfiHKFNZgbxaNT5WwsWooK42ZkC8DBZl0p7OunBUKd5SciUo+TKilioeUkriN3L1Zl9hwi3HVDVqgVo3XXskwIftSqLSFlepTLTmOWj9Y93dp8J4D9RyLtNgFQBc0WB22tyJTsuY56mLcWe1AMF3LizB9OrbwjynF2u16xWlrJdugccz795fJBUV9aQSD+8S3KeqwQhoi8RK1uhD68aGCyaSpBq0NZ8COAkn7MXaF4POxrAAt8udfHM+PRfSOptcH/w=="
# Get the public key to be used for signature verification.
set pubKey [new_CkPublicKey]
set success [CkPublicKey_LoadFromFile $pubKey "rsaKeys/chilkat-rsa-2048.pem"]
if {$success == 0} then {
puts [CkPublicKey_lastErrorText $pubKey]
delete_CkBinData $bd
delete_CkPublicKey $pubKey
exit
}
set rsa [new_CkRsa]
set success [CkRsa_UsePublicKey $rsa $pubKey]
if {$success == 0} then {
puts [CkRsa_lastErrorText $rsa]
delete_CkBinData $bd
delete_CkPublicKey $pubKey
delete_CkRsa $rsa
exit
}
# Verify the hash against the signature.
CkRsa_put_EncodingMode $rsa "base64"
set success [CkRsa_VerifyHashENC $rsa $sha256_base64 "sha256" $base64_rsa_sig]
if {$success == 0} then {
puts [CkRsa_lastErrorText $rsa]
puts "Signature invalid."
} else {
puts "Signature valid."
}
delete_CkBinData $bd
delete_CkPublicKey $pubKey
delete_CkRsa $rsa