hu_IDLCDSANoHashSign()

Generates a signature on the given message digest using DSA based on FIPS 186.

Synopsis:

#include "huidlc.h"
 
int hu_IDLCDSANoHashSign(sb_Params idlcParams, sb_PrivateKey privateKey, size_t length, const unsigned char *messageDigest, size_t *sLength, unsigned char *sValue, size_t *rLength, unsigned char *rValue, sb_GlobalCtx sbCtx)

Since:

BlackBerry 10.0.0

Arguments:

idlcParams

An IDLC parameters object.

privateKey

An IDLC private key object.

length

The length (in bytes) of the message digest.

messageDigest

A message digest.

sLength

The length (in bytes) of sValue.

sValue

The 's' component from the signature computation.

rLength

The length (in bytes) of rValue.

rValue

The 'r' component from the signature computation.

sbCtx

A global context.

Library:

libhuapi (For the qcc command, use the -l huapi option to link against this library)

Description:

This function assumes that the input is a message digest (of any length); no digest operation will be performed on the input.

The IDLC parameter object must have been created with an RNG context.

If the length of s is known, a pointer to a buffer large enough to hold s should be passed in sValue and its length in sLength. This function will copy s into sValue and set the actual length of s in sLength.

If sValue is NULL, this function will set the correct length of s in sLength. If sValue is not NULL but sLength is too small, this function will return an error.

Similarly for r.

s and r will always have the same length.

The length of s or r can also be determined by calling hu_IDLCParamsGet() and retrieving the qLength argument.

Returns:

SB_ERR_NULL_PARAMS

The idlcParams object is NULL.

SB_ERR_BAD_PARAMS

The tag for the params object is not of the expected type.

SB_ERR_NULL_PRIVATE_KEY

The private key object is NULL.

SB_ERR_BAD_PRIVATE_KEY

The private key object is invalid.

SB_ERR_BAD_INPUT_BUF_LEN

The length of the message digest is invalid.

SB_ERR_NULL_INPUT_BUF

The message digest is NULL.

SB_ERR_NULL_S_VALUE_LEN

The signature component length is NULL.

SB_ERR_BAD_S_VALUE_LEN

The signature component length is invalid.

SB_ERR_NULL_R_VALUE_LEN

The signature component length is NULL.

SB_ERR_BAD_R_VALUE_LEN

The signature component length is invalid.

SB_FAIL_ALLOC

Memory allocation failure.

SB_SUCCESS

Success.