Set LMS Signature State

Set LMS Signature State#

Syntax#

IppStatus ippsLMSSetSignatureState (const IppsLMSAlgoType OIDAlgo,
                                    Ipp32u q,
                                    const Ipp8u* pC,
                                    const Ipp8u* pY,
                                    const Ipp8u* pAuthPath,
                                    IppsLMSSignatureState* pState);

Include Files#

ippcp.h

Parameters#

OIDAlgo

LMS Algorithm ID. It defines a set of LMS parameters. See Supported LMS Algorithms for more information.

q

Index of the LMS tree leaf.

pC

Pointer to the random string C.

pY

Pointer to Y that is a part of the LM-OTS string.

pAuthPath

Pointer to the LMS authorization path.

pState

Pointer to the LMS signature state.

Description#

This function sets the LMS signature state. The scheme of the signature is shown below:

+---------------------------------+
|                q                | 4 bytes
+---------------------------------+
|          LM-OTS signature       | 4 + n * (p + 1) bytes
+---------------------------------+
|           IppsLMSAlgo           | 4 bytes
+---------------------------------+
|        authorisation path       | h * m bytes
+---------------------------------+

m, h are LMS parameters.

The scheme of the LM-OTS signature is shown below:

+---------------------------------+
|          IppsLMOTSAlgo          | 4 bytes
+---------------------------------+
|                C                | n bytes
+---------------------------------+
|                Y                | p * n bytes
+---------------------------------+

n, p are LM-OTS parameters.

Note

Important

This is a Preview Feature. You need to enable the IPPCP_PREVIEW_LMS macro to use the feature.

Return Values#

ippStsNoErr

Indicates no error. All single operations executed without errors. Any other value indicates an error or warning.

ippStsNullPtrErr

Any of the input parameters is a NULL pointer.

ippStsBadArgErr

OIDAlgo.lmotsOIDAlgo < the minimum value for IppsLMOTSAlgo, OIDAlgo.lmotsOIDAlgo > the maximum value for IppsLMOTSAlgo, OIDAlgo.prmLmsAlg < the minimum value for IppsLMSAlgo, OIDAlgo.prmLmsAlg > the maximum value for IppsLMSAlgo or q is incorrect.