Creates an ECPVS recovery context object.
#include "huecpvs.h"
int hu_ECPVSRecoverBeginV2(sb_Params eccParams, sb_PublicKey publicKey, int hash, int kdf, int encoding, int mode, int flag, size_t ivLen, const unsigned char *iv, size_t padLen, size_t addInfoLen, const unsigned char *addInfo, size_t sLen, unsigned char *sValue, sb_Context *ecpvsContext, sb_GlobalCtx sbCtx)
An ECC parameters object.
An ECC public key object.
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.
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.
The symmetric encryption to use. Currently, the only valid value is HU_ECPVS_ENCRYPTION_STREAM.
The encryption mode for block symmetric ciphers. Ignored for the stream cipher HU_ECPVS_ENCRYPTION_STREAM.
If flag is set to HU_ECPVS_FLAG_RAW, no padding will be added to the recoverable message.
The length (in bytes) of iv. Ignored for the stream cipher HU_ECPVS_ENCRYPTION_STREAM.
The initialization vector for block symmetric ciphers. Ignored for the stream cipher HU_ECPVS_ENCRYPTION_STREAM.
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)
The length (in bytes) of addInfo.
Additional information to be used by the KDF.
The length (in bytes) of sValue.
The s component from the signature computation.
ECPVS context object pointer.
A global context.
Note: This function is identical in functionality to hu_ECPVSRecoverBegin(), while allowing you to specify the additional information to be used by the KDF. This additional information is passed using the addInfoLen and addInfo fields.
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.
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 recovery process. It is followed by one or more calls to hu_ECPVSRecoverUpdate(), then one or more calls to hu_ECPVSRecoverDecrypt(), and then finally a call to hu_ECPVSRecoverEnd().
The eccParams object is NULL.
The eccParams object is invalid.
The publicKey object NULL.
The publicKey object is invalid.
The signature component is NULL.
The ecpvsContext is NULL.
iv is NULL and ivLen is greater than 0.
The hash algorithm is not supported.
The KDF algorithm or encryption is not supported.
The padLen is out of range or ivLen is too large.
Redundancy check failed. The padding value did not match the expected result.
The signature component length is invalid.
Memory allocation failure.
Success.