Tcl Requires Chilkat v11.0.0+
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