CheckSignature
(Engine-Level Function)
Description: | Checks a digital signature with a key given a handle returned from Hash(). |
Returns: | Boolean |
Usage: | Script Only. |
Function Groups: | Cryptography |
Related to: | GenerateSignature |
Format: | CheckSignature(HashHandle, Signature, Key) |
Parameters: |
HashHandle |
Required. Handle returned from a call to Hash() |
Signature |
Required text. The signature to be checked. |
Key |
Required handle to the public key, with which to check the signature. Previously obtained from any of GenerateKey(), ImportKey(), DeriveKey(). This must be an asymmetric public key |
PaddingType |
Optional integer. Can be one of the following values: Value~Meaning 0~No padding is to added to the plaintext data before signing. 1~Padding is added to the data before signing in accordance with the RSASSA-PKCS1-v1_5 scheme. 2~Padding is added to the data before signing in accordance with the RSASSA-PSS scheme. |
PadHashAlgorithm |
Optional text value. The algorithm to be used for padding the data. The hash is then signed. |
SaltLength |
Optional integer. Only required for RSASSA-PSS padding. This is the length of the salt used by that scheme. |
Comments | none. |
Example:
< {============================ CheckSignatureSample ===========================} { Sample code using CheckSignature(). } {=============================================================================} CheckSignatureSample ( Message { Message to check }; Signature { Signature for message }; KeyBlob { Public key to check with }; ) [ Protected Constant PROV_RSA_AES = 24 { Enhanced RSA/AES provider }; Protected Constant KEY_SIZE = 2048 { 2048 bit keys }; Protected Constant PUBLICKEYBLOB = 6 { PUBLICKEYBLOB }; Protected Constant CRYPT_VERIFYCONTEXT = 0xF0000000 { CRYPT_VERIFYCONTEXT }; Protected CSP { Cryptographic context }; Protected HashObj { Intermediate handle returned from Hash() }; Protected Key { Handle to signing key pair }; Protected SignatureOK { True if the signature is correct }; ] Sign [ If 1; [ { Get cryptographic context } CSP = GetCryptoProvider(PROV_RSA_AES, Invalid, Invalid, CRYPT_VERIFYCONTEXT); { Import the public key } Key = ImportKey(CSP, PUBLICKEYBLOB, KeyBlob); { Compute a SHA-256 hash of the message } Hash(Message, 2 {SHA-256}, Invalid, HashObj, CSP); { Check signature } SignatureOK = CheckSignature(HashObj, Signature, Key); Return(SignatureOK); ] ] { End of CheckSignatureSample } >