hu_ECPVSSignBegin()

Creates an ECPVS signing context object.

Synopsis:

#include "huecpvs.h"
 
int hu_ECPVSSignBegin(sb_Params eccParams, sb_PrivateKey privateKey, int hash, int kdf, int encoding, int mode, int flag, size_t ivLen, const unsigned char *iv, size_t padLen, sb_Context *ecpvsContext, sb_GlobalCtx sbCtx)

Arguments:

eccParams

An ECC parameters object.

privateKey

An ECC private key object.

hash

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.

flag

If flag is set to HU_ECPVS_FLAG_RAW, no padding will be added to the recoverable message. When no padding is used, there has to be sufficient amount of redundancy in the recoverable part of the message.

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 of additional redundancy. It should be in the range 1..255.

ecpvsContext

ECPVS context object pointer.

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.

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

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

This is the first of four API functions to be called during the ECPVS signing process. It is followed by one or more calls to hu_ECPVSSignEncrypt(), then one or more calls to hu_ECPVSSignUpdate(), and then finally a call to hu_ECPVSSignEnd().

Returns:

SB_ERR_NULL_PARAMS

The eccParams object is NULL.

SB_ERR_BAD_PARAMS

The eccParams object is invalid.

SB_ERR_NULL_GLOBAL_CTX

Global context is NULL.

SB_ERR_NULL_PRIVATE_KEY

The privateKey object is NULL.

SB_ERR_BAD_PRIVATE_KEY

The privateKey object is invalid.

SB_ERR_NULL_CONTEXT_PTR

The ecpvsContext is NULL.

SB_ERR_NULL_INPUT_BUF

iv is NULL and ivLen is greater than 0.

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 ivLen is too large.

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