.. _eccpverifydsa: ECCPVerifyDSA ============= Verifies authenticity of the digital signature over a message digest (ECDSA). Syntax ------ IppStatus ippsECCPVerifyDSA(const IppsBigNumState\* pMsgDigest, const IppsBigNumState\* pSignX, const IppsBigNumState\* pSignY, IppECResult\* pResult, IppsECCPState\* pECC); Include Files ------------- ``ippcp.h`` Parameters ---------- .. list-table:: :header-rows: 0 * - pMsgDigest - Pointer to the message digest *msg*. * - pSignX - Pointer to the integer *r* of the digital signature. * - pSignY - Pointer to the integer *s* of the digital signature. * - pResult - Pointer to the digital signature verification result. * - pECC - Pointer to the context of the elliptic cryptosystem. Description ----------- The function verifies authenticity of the digital signature over a message digest *msg*. The signature consists of two large integers: *r* and *s*. The scheme used to verify the signature is an elliptic curve analogue of the DSA scheme and assumes that the following cryptosystem key be hitherto set: .. list-table:: :header-rows: 0 * - \ *regPubKey*\ - Message sender's regular public key. The *regPubKey* is set by the function `ECCPSetKeyPair `__. The result of the digital signature verification can take one of two possible values: .. list-table:: :header-rows: 0 * - ippECValid - Digital signature is valid. * - ippECInvalidSignature - Digital signature is not valid. The call to the ECCPVerifyDSA function must be preceded by the call to the `ECCPSignDSA `__ function which computes the digital signature over the message digest *msg* and represents the signature with two numbers: *r* and *s*. The elliptic curve domain parameters must be hitherto defined by one of the functions: `ECCPSet `__ or `ECCPSetStd `__. For more information on digital signatures, please refer to the [`ANSI `__] standard. Return Values ------------- .. list-table:: :header-rows: 0 * - ippStsNoErr - Indicates no error. Any other value indicates an error or warning. * - ippStsNullPtrErr - Indicates an error condition if any of the specified pointers is NULL. * - ippStsContextMatchErr - Indicates an error condition if one of the contexts pointed by pMsgDigest, pSignX, pSignY, or ECC is not valid. * - ippStsMessageErr - Indicates an error condition if the value of *msg* pointed by pMsgDigest falls outside the range of [1, *n*-1] where *n* is the order of the elliptic curve base point *G*. * - ippStsRangeErr - Indicates an error condition if the value of pSignX or pSignY is less than 0. .. rubric:: Related Information :ref:`signing-verification-using-the-elliptic-curve-cryptography-functions-over-a-prime-finite-field`