.. _eccpverifynr: ECCPVerifyNR ============ Verifies authenticity of the digital signature over a message digest (the Nyberg-Rueppel scheme). Syntax ------ IppStatus ippsECCPVerifyNR(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 is presented with two large integers *r* and *s*. The scheme used to compute the digital signature is an elliptic curve analogue of the El-Gamal Digital Signature scheme with the message recovery (the Nyberg-Rueppel signature scheme). The scheme that the given function uses assumes that the following cryptosystem keys be hitherto set up by the message sender: .. list-table:: :header-rows: 0 * - \ *regPubKey*\ - Message sender's regular private key. The key can be generated and set up by the function `ECCPGenKeyPair `__. The result of the digital signature verification can take one of two possible values: .. list-table:: :header-rows: 0 * - ippECValid - The digital signature is valid. * - ippECInvalidSignature - The digital signature is not valid. The call to the ECCPVerifyNR function must be preceded by the call to the `ECCPSignNR `__ 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.