XMSS Key Generation#

Performs the XMSS private and public keys generation.

Syntax#

IppStatus ippsXMSSKeyGen (IppsXMSSPrivateKeyState* pPrvKey,
                          IppsXMSSPublicKeyState* pPubKey,
                          IppBitSupplier rndFunc,
                          void* pRndParam,
                          Ipp8u* pBuffer);

Include Files#

ippcp.h

Parameters#

pPrvKey

Pointer to the initialized IppsXMSSPrivateKeyState context. Size is greater or equal to the value returned by ippsXMSSPrivateKeyStateGetSize.

pPubKey

Pointer to the initialized IppsXMSSPublicKeyState context. Size is greater or equal to the value returned by ippsXMSSPublicKeyStateGetSize.

rndFunc

Pointer to the random number generator function that is used for private key generation. The function should be defined as: IppStatus rndFunc(Ipp8u* pRnd, int size, void* pRndParam). This function must be cryptographically secure. The size parameter is the size of the buffer in bytes. The pRndParam parameter is a pointer to the user-defined parameter. If rndFunc is NULL then ippsPRNGenRDRAND is used as a random number generator.

pRndParam

Pointer to the user-defined parameter for the random number generator function. It can be a NULL pointer.

pBuffer

Pointer to the temporary buffer. Size is greater or equal to the value returned by ippsXMSSKeyGenBufferGetSize.

Description#

This function generates private and public XMSS keys.

pPrvKey and pPubKey are output parameters.

Note

Important

This is a Preview Feature. You need to enable the IPPCP_PREVIEW_XMSS 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

pPrvKey or pPubKey or pBuffer is a NULL pointer.

ippStsBadArgErr

pPrvKey->OIDAlgo > Max value for IppsXMSSAlgo or pPrvKey->OIDAlgo <= 0.