Sample code for 30+ languages & platforms
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

Tcl

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