hu_ECPVSRecover()

Recovers the encrypted part of the message from the signature using ECPVS.

Synopsis:

#include "huecpvs.h"
 
int hu_ECPVSRecover(sb_Params eccParams, sb_PublicKey publicKey, int hashId, int kdf, int encoding, int mode, size_t ivLen, const unsigned char *iv, size_t padLen, size_t sLen, const unsigned char *sValue, size_t rLen, const unsigned char *rValue, size_t visibleMessageLen, const unsigned char *visibleMessage, size_t *recoverableMessageLen, unsigned char *recoverableMessage, sb_GlobalCtx sbCtx)

Arguments:

eccParams

An ECC parameters object.

publicKey

An ECC public key object.

hashId

The hash algorithm to use. This is one of: HU_DIGEST_SHA1, HU_DIGEST_SHA224, HU_DIGEST_SHA256, HU_DIGEST_SHA384, or HU_DIGEST_SHA512.

kdf

The KDF algorithm to use. This is one of: HU_KDF_ANSI_SHA1, HU_KDF_ANSI_SHA224, HU_KDF_ANSI_SHA256, HU_KDF_ANSI_SHA384, or HU_KDF_ANSI_SHA512.

encoding

The symmetric encryption to use. Currently, the only valid value is HU_ECPVS_ENCRYPTION_STREAM.

mode

The encryption mode for block symmetric ciphers. Ignored for the stream cipher HU_ECPVS_ENCRYPTION_STREAM.

ivLen

The length (in bytes) of iv. Ignored for the stream cipher HU_ECPVS_ENCRYPTION_STREAM.

iv

The initialization vector for block symmetric ciphers. Ignored for the stream cipher HU_ECPVS_ENCRYPTION_STREAM.

padLen

The number of bytes for additional redundancy. It should be in the range 1..255 if the exact length is known. 0 means that the redundancy level is unknown. (Optional)

sLen

The length (in bytes) of sValue.

sValue

The s component from the signature computation.

rLen

The length (in bytes) of rValue.

rValue

The r component from the signature computation.

visibleMessageLen

The length (in bytes) of visibleMessage.

visibleMessage

The visible part of the message.

recoverableMessageLen

The length (in bytes) of recoverableMessage.

recoverableMessage

The recoverable part of the message.

sbCtx

A global context.

Library:

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

Description:

The ANSI X9.92-conformant usage of this API function should include only security primitives with the security level set at more than 80 bits.

Provide output buffer in recoverableMessage, and indicate the amount in recoverableMessageLen. If sufficient amount of buffer is supplied, this function will place the recovered message into recoverableMessage and set the actual length in recoverableMessageLen.

If recoverableMessage is NULL, this function will set the correct length of s in recoverableMessageLen.

If there is no recoverable data, or in order to check the padding, set both recoverableMessage and recoverableMessageLen to NULL.

Currently only the KDF-based symmetric stream cipher is supported (i.e. HU_ECPVS_ENCRYPTION_STREAM).

Returns:

SB_ERR_NULL_PARAMS

The eccParams object is NULL.

SB_ERR_BAD_PARAMS

The eccParams object is invalid.

SB_ERR_NULL_PUBLIC_KEY

The publicKey object is NULL.

SB_ERR_BAD_PUBLIC_KEY

The publicKey object is invalid.

SB_ERR_HASH_TYPE

The hash algorithm is not supported.

SB_ERR_BAD_ALG

The KDF algorithm or encryption is not supported.

SB_ERR_BAD_LENGTH

The padLen is out of range or the ivLen is too large.

SB_ERR_NULL_S_VALUE

The signature component is NULL.

SB_ERR_BAD_S_VALUE_LEN

The signature component length is invalid.

SB_ERR_NULL_R_VALUE

The signature component is NULL.

SB_ERR_NULL_INPUT_BUF

The visible part of the message is NULL, or iv is NULL and ivLen is greater than 0.

SB_FAIL_INVALID_SIGNATURE

Redundancy check failed. The padding value did not match the expected result.

SB_ERR_NULL_OUTPUT_BUF_LEN_PTR

The recoverable message length is NULL.

SB_ERR_BAD_OUTPUT_BUF_LEN

The recoverable message length is invalid.

SB_ERR_NULL_OUTPUT_BUF

The recoverable message buffer is NULL.

SB_FAIL_ALLOC

Memory allocation failure.

SB_SUCCESS

Success.

Last modified: 2014-05-14



Got questions about leaving a comment? Get answers from our Disqus FAQ.

comments powered by Disqus