1.24 CRYPT_ECC_DSA_HashSign Function

C

int CRYPT_ECC_DSA_HashSign(
    CRYPT_ECC_CTX* ecc,
    CRYPT_RNG_CTX* rng,
    unsigned char* sig,
    unsigned int sigSz,
    unsigned int* usedSz,
    const unsigned char* in,
    unsigned int inSz
);

Description

This function takes a message digest and signs it using a private ECC key.

Preconditions

The ECC context must have been initialized with a call to CRYPT_ECC_Initialize. The RNG context must have been initialized with a call to CRYPT_RNG_Initialize. The private key used for the signature must have been imported or created prior to calling this function.

Parameters

ParametersDescription
eccPointer to ECC context which saves state between calls and holds keys
rngPointer to Random Number Generator context
sigDestination for the signature
sigSzThe maximum size of the signature, in bytes
usedSzThe resulting size of the signature, in bytes
inPointer to the message digest to sign
inSzThe length of the digest, in bytes

Returns

  • BAD_FUNC_ARG - An invalid pointer was passed to the function
  • 0 - An invalid pointer was not passed to the function

Remarks

None.

Example

CRYPT_ECC_CTX userA;
int           ret;
byte          sig[100];
unsigned int  sigSz = (unsigned int)sizeof(sig);
unsigned int  usedA = 0;

ret = CRYPT_ECC_Initialize(&userA);
...
// Import or generate private key
...
ret = CRYPT_ECC_DSA_HashSign(&userA, &mcRng, sig, sigSz, &usedA, ourData, CRYPT_SHA_DIGEST_SIZE);