verify_signature Method
Verifies the signature for the specified data.
Syntax
def verify_signature() -> bool: ...
Remarks
on_verify_signature will verify a hash signature and return True if successful or False otherwise.
Before calling this method specify the input file by setting input_file or input_message.
A public key and the hash signature are required to perform the signature verification. Specify the public key in signer_key. Specify the hash signature in hash_signature.
When this method is called the class will compute the hash for the specified file and populate hash_value. It will verify the signature using the specified signer_key and hash_signature.
To verify the hash signature without first computing the hash simply specify hash_value before calling this method. Note: hash_value is not applicable when the message was signed with a PureEdDSA algorithm such as ed25519 or ed448.
The on_progress event will fire with updates for the hash computation progress only. The hash signature verification process is quick and does not require progress updates.
The following properties are applicable when calling this method:
- hash_signature (required)
- signer_key (required)
- EdDSAContext (applicable to ed25519 and ed448 only)
- hash_algorithm (applicable to secp256r1, secp384r1, and secp521r1 only)
- hash_ed_dsa (applicable to ed25519 and ed448 only)
- hash_value (not applicable to PureEdDSA)
- use_hex
Sign And Verify Example (ECDSA)
//Create an ECDSA key on Party 1
Ecc ecc1 = new Ecc();
ecc1.CreateKey("secp256r1");
string ecc1_priv = ecc1.Key.PrivateKey;
string ecc1_pub = ecc1.Key.PublicKey;
//Sign the data on Party 1
string originalData = "hello ecc";
ecc1.Reset();
ecc1.Key.PrivateKey = ecc1_priv;
ecc1.InputMessage = originalData;
ecc1.UseHex = true; //Hex encode the hash signature for ease of use.
ecc1.Sign();
string hashSignature = ecc1.HashSignature;
//Transmit the hash signature, public key, and original data to part 2
//Verify the data on Party 2
Ecc ecc2 = new Ecc();
ecc2.SignerKey.PublicKey = ecc1_pub;
ecc2.InputMessage = originalData;
ecc2.HashSignature = hashSignature;
ecc2.UseHex = true; //Decode the hex encoded hash signature
bool isVerified = ecc2.VerifySignature();
Sign And Verify Example (EdDSA - PureEdDSA)
//Create an EdDSA key on Party 1
Ecc ecc1 = new Ecc();
ecc1.CreateKey("ed25519");
string ecc1_priv = ecc1.Key.PrivateKey;
string ecc1_pub = ecc1.Key.PublicKey;
//Sign the data on Party 1
string originalData = "hello ecc";
ecc1.Reset();
ecc1.Key.PrivateKey = ecc1_priv;
ecc1.InputMessage = originalData;
ecc1.UseHex = true; //Hex encode the hash signature for ease of use.
ecc1.Sign();
string hashSignature = ecc1.HashSignature;
//Transmit the hash signature, public key, and original data to part 2
//Verify the data on Party 2
Ecc ecc2 = new Ecc();
ecc2.SignerKey.PublicKey = ecc1_pub;
ecc2.InputMessage = originalData;
ecc2.HashSignature = hashSignature;
ecc2.UseHex = true; //Decode the hex encoded hash signature
bool isVerified = ecc2.VerifySignature();
Sign And Verify Example (EdDSA - HashEdDSA)
//Create an EdDSA key on Party 1
Ecc ecc1 = new Ecc();
ecc1.CreateKey("ed25519");
string ecc1_priv = ecc1.Key.PrivateKey;
string ecc1_pub = ecc1.Key.PublicKey;
//Sign the data on Party 1
string originalData = "hello ecc";
ecc1.Reset();
ecc1.Key.PrivateKey = ecc1_priv;
ecc1.InputMessage = originalData;
ecc1.UseHex = true; //Hex encode the hash signature for ease of use.
ecc1.HashEdDSA = true; //Use "ed25519ph"
ecc1.Sign();
string hashSignature = ecc1.HashSignature;
//Transmit the hash signature, public key, and original data to part 2
//Verify the data on Party 2
Ecc ecc2 = new Ecc();
ecc2.SignerKey.PublicKey = ecc1_pub;
ecc2.InputMessage = originalData;
ecc2.HashSignature = hashSignature;
ecc2.HashEdDSA = true;
ecc2.UseHex = true; //Decode the hex encoded hash signature
bool isVerified = ecc2.VerifySignature();