Rust Requires Chilkat v11.0.0+
Rust
RSA Hash Binary Data and Sign (and Verify)
See more RSA Examples
Demonstrates how to sign the hash of binary data. Also demonstrates how to verify the RSA signature.Chilkat Rust Downloads
// 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.
let priv_key = chilkat::PrivateKey::new();
if priv_key.load_encrypted_pem_file("qa_data/pem/rsa_passwd.pem", "passwd").is_err() {
println!("{}", priv_key.last_error_text());
return;
}
let rsa = chilkat::Rsa::new();
let _ = rsa.use_private_key(&priv_key);
// We have some binary data (in hex) to sign
let original_data = "0102030405060708090A".to_string();
let bd_data = chilkat::BinData::new();
let _ = bd_data.append_encoded(&original_data, "hex");
// Hash (SHA-256) and sign the hash:
let bd_signature = chilkat::BinData::new();
if rsa.sign_bd(&bd_data, "sha256", &bd_signature).is_err() {
println!("{}", rsa.last_error_text());
return;
}
// Show the RSA signature in base64
println!("{}", bd_signature.get_encoded("base64").unwrap_or_default());
// ------------------------------------------
// Get the public key from the private key
let pub_key = chilkat::PublicKey::new();
let _ = priv_key.to_public_key(&pub_key);
// Verify the signature..
let rsa2 = chilkat::Rsa::new();
let _ = rsa2.use_public_key(&pub_key);
let b_verified = rsa2.verify_bd(&bd_data, "sha256", &bd_signature).is_ok();
println!("signature verified: {}", b_verified);