hu_IDLCDHRawSharedGen()

Generates a shared secret that is the output of a DH key agreement.

Synopsis:

#include "huidlc.h"
 
int hu_IDLCDHRawSharedGen(sb_Params idlcParams, sb_PrivateKey privateKey, sb_PublicKey remotePublicKey, size_t *secretLen, unsigned char *sharedSecret, sb_GlobalCtx sbCtx)

Since:

BlackBerry 10.0.0

Arguments:

idlcParams

An IDLC parameters object.

privateKey

An IDLC private key object.

remotePublicKey

An IDLC public key object.

secretLen

The length (in bytes) of the shared secret.

sharedSecret

The shared secret buffer.

sbCtx

A global context.

Library:

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

Description:

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

If sharedSecret is NULL, this function will set the correct length of the shared secret in secretLen. If sharedSecret is not NULL but secretLen is too small, this function will return an error.

The length of the shared secret can also be determined by calling hu_IDLCParamsGet() and retrieving the pLength 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_NULL_PUBLIC_KEY

The public key object is NULL.

SB_ERR_BAD_PUBLIC_KEY

The public key object is invalid.

SB_ERR_NULL_OUTPUT_BUF_LEN

The shared secret buffer length is NULL.

SB_ERR_BAD_OUTPUT_BUF_LEN

The length of the shared secret is invalid.

SB_FAIL_ALLOC

Memory allocation failure.

SB_SUCCESS

Success.