133 PBYTE pbOtsPrivateKey)
144 abTemp[
sizeof(
UINT32) + 2] = 0xff;
164 pKey->nNextUnusedLeaf = 0;
180 for (
UINT32 i = 0;
i < (cbString * 8 / nWidth);
i =
i + 1)
193 UINT32 n = pParams->cbHashOutput;
194 UINT32 p = pParams->nByteStringCount;
221 SIZE_T cbRemainingBytes = cbSignature;
227 PBYTE pbDest = pbSignature;
233 cbRemainingBytes -=
sizeof(
UINT32);
246 for (nIndex = 0; nIndex <
pKey->params.nByteStringCount; nIndex++)
253 for (
BYTE j = 0;
j < coeff;
j++)
280 UINT32 maxJ = (1 <<
pKey->params.nWinternitzChainWidth) - 1;
301 for (
BYTE j = 0;
j < maxJ;
j++)
342 if (nIndex >= nInternalNodes)
371 SIZE_T uLmsParametersCount = 0;
372 SIZE_T uLmsOtsParametersCount = 0;
385 for (
UINT32 i = 0;
i < uLmsParametersCount;
i++)
387 if (pLmsParameters[
i].lmsAlgId == lmsAlgID)
389 pParams->lmsAlgID = lmsAlgID;
403 scError = SYMCRYPT_INVALID_ARGUMENT;
408 for (
UINT32 i = 0;
i < uLmsOtsParametersCount;
i++)
417 scError = SYMCRYPT_INVALID_ARGUMENT;
421 pParams->nWinternitzChainWidth = pLmsOtsParameters[
i].
nWidth;
423 pParams->cbHashOutput,
424 pParams->nWinternitzChainWidth,
429 pParams->nByteStringCount =
u +
v;
436 scError = SYMCRYPT_INVALID_ARGUMENT;
454 size += pParams->nTreeHeight * pParams->cbHashOutput;
478 scError = SYMCRYPT_INVALID_ARGUMENT;
485 scError = SYMCRYPT_INVALID_ARGUMENT;
492 scError = SYMCRYPT_INVALID_ARGUMENT;
496 pParams->lmsAlgID = lmsAlgID;
503 pParams->cbHashOutput,
504 pParams->nWinternitzChainWidth,
508 pParams->nByteStringCount =
u +
v;
534 scError = SYMCRYPT_INVALID_ARGUMENT;
564 memcpy(&
pKey->params, pParams,
sizeof(*pParams));
596 scError = SYMCRYPT_INVALID_ARGUMENT;
605 pKey->params.cbHashOutput);
609 scError = SYMCRYPT_HBS_PUBLIC_ROOT_MISMATCH;
629 scError = SYMCRYPT_INVALID_ARGUMENT;
633 pKey->nNextUnusedLeaf = 0;
636 if (scError != SYMCRYPT_NO_ERROR)
643 if (scError != SYMCRYPT_NO_ERROR)
653 pKey->params.cbHashOutput);
658 if (scError != SYMCRYPT_NO_ERROR)
684 scError = SYMCRYPT_INVALID_ARGUMENT;
690 scError = SYMCRYPT_INVALID_ARGUMENT;
697 scError = SYMCRYPT_INVALID_ARGUMENT;
747 scError = SYMCRYPT_INVALID_ARGUMENT;
755 scError = SYMCRYPT_INVALID_ARGUMENT;
762 scError = SYMCRYPT_INVALID_ARGUMENT;
775 scError = SYMCRYPT_INVALID_BLOB;
787 pbBlob +=
pKey->params.cbHashOutput;
792 pKey->nNextUnusedLeaf = 0;
803 if (scError != SYMCRYPT_NO_ERROR)
811 if (scError != SYMCRYPT_NO_ERROR)
833 SIZE_T cbRemainingBytes = cbSignature;
844 scError = SYMCRYPT_INVALID_ARGUMENT;
850 scError = SYMCRYPT_INVALID_ARGUMENT;
856 scError = SYMCRYPT_INVALID_ARGUMENT;
861 if (scError != SYMCRYPT_NO_ERROR)
866 nLeafNumber = (
UINT32)SYMCRYPT_ATOMIC_ADD64_POST_RELAXED(&
pKey->nNextUnusedLeaf, 1) - 1;
867 if (nLeafNumber >= (nLeavesCount))
869 scError = SYMCRYPT_HBS_NO_OTS_KEYS_LEFT;
870 pKey->nNextUnusedLeaf = nLeavesCount;
874 pbSignature +=
sizeof(
UINT32);
875 cbRemainingBytes -=
sizeof(
UINT32);
885 pbSignature += cbOtsSignature;
886 cbRemainingBytes -= cbOtsSignature;
889 pbSignature +=
sizeof(
UINT32);
890 cbRemainingBytes -=
sizeof(
UINT32);
892 nNodeIndex = nLeavesCount + nLeafNumber;
896 nTemp = (nNodeIndex >> nIndex) ^ 1;
942 scError = SYMCRYPT_INVALID_ARGUMENT;
947 pbOtsSignature +=
sizeof(
UINT32);
948 if (nSigType != pSigParams->lmsOtsAlgID)
950 scError = SYMCRYPT_INVALID_ARGUMENT;
954 pbRandomizer = pbOtsSignature;
1010 UINT32 nNodeNum = (1 << pParams->nTreeHeight) + nLeafNumber;
1011 PBYTE pbTemp = pbRootCandidate;
1022 for (nIndex = 0; nIndex < pParams->nTreeHeight; nIndex ++)
1063 PCBYTE pbLocSignature = pbSignature;
1069 scError = SYMCRYPT_INVALID_ARGUMENT;
1075 scError = SYMCRYPT_INVALID_ARGUMENT;
1080 pbLocSignature +=
sizeof(
UINT32);
1081 if (nLeafNumber >= ((
UINT32)1 <<
pKey->params.nTreeHeight))
1083 scError = SYMCRYPT_INVALID_ARGUMENT;
1088 pbLocSignature +=
sizeof(
UINT32);
1090 if (nOtsSigtype != pLmsKeyParams->lmsOtsAlgID)
1092 scError = SYMCRYPT_INVALID_ARGUMENT;
1098 pbLocSignature +=
sizeof(
UINT32);
1100 if (nSigType != pLmsKeyParams->lmsAlgID)
1102 scError = SYMCRYPT_INVALID_ARGUMENT;
1110 pbSignature +
sizeof(
UINT32),
1114 abOtsPubKeyCandidate);
1115 if (scError != SYMCRYPT_NO_ERROR)
1125 abOtsPubKeyCandidate,
1129 scError = SYMCRYPT_SIGNATURE_VERIFICATION_FAILURE;
COMPILER_DEPENDENT_UINT64 UINT64
static void cleanup(void)
GLboolean GLboolean GLboolean GLboolean a
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble * u
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
void SYMCRYPT_CALL SymCryptCallbackFree(void *ptr)
void *SYMCRYPT_CALL SymCryptCallbackAlloc(SIZE_T size)
SYMCRYPT_ERROR SYMCRYPT_CALL SymCryptCallbackRandom(BYTE *buf, SIZE_T size)
PSYMCRYPT_LMS_KEY SYMCRYPT_CALL SymCryptLmskeyAllocate(_In_ PCSYMCRYPT_LMS_PARAMS pParams, UINT32 flags)
static const SYMCRYPT_LMS_OTS_PARAMETER_PREDEFINED LmsOtsParametersPredefined[]
static VOID LmsHashMessage(_In_ PCSYMCRYPT_HASH pHash, _In_reads_bytes_(SYMCRYPT_LMS_KEY_PAIR_IDENTIFIER_SIZE) PCBYTE pbId, _In_reads_bytes_(sizeof(UINT32)) PCBYTE pbLeafNumber, _In_reads_bytes_(cbRandomizer) PCBYTE pbRandomizer, SIZE_T cbRandomizer, _In_reads_bytes_(cbMessage) PCBYTE pbMessage, SIZE_T cbMessage, _Out_writes_bytes_(cbOut) PBYTE pbOut, SIZE_T cbOut)
struct _SYMCRYPT_LMS_OTS_PARAMETER_PREDEFINED * PSYMCRYPT_LMS_OTS_PARAMETER_PREDEFINED
struct _SYMCRYPT_LMS_OTS_PARAMETER_PREDEFINED SYMCRYPT_LMS_OTS_PARAMETER_PREDEFINED
static const BYTE SYMCRYPT_LMS_D_LEAF[]
struct _SYMCRYPT_LMS_PARAMETER_PREDEFINED * PSYMCRYPT_LMS_PARAMETER_PREDEFINED
static SYMCRYPT_ERROR SYMCRYPT_CALL LmsComputeOtsPubKeyCandidate(UINT32 nLeafNumber, _In_reads_bytes_(cbMessage) PCBYTE pbMessage, SIZE_T cbMessage, _In_reads_bytes_(cbOtsSignature) PCBYTE pbOtsSignature, SIZE_T cbOtsSignature, _In_reads_bytes_(SYMCRYPT_LMS_KEY_PAIR_IDENTIFIER_SIZE) PCBYTE pbId, _In_ PCSYMCRYPT_LMS_PARAMS pSigParams, _Out_writes_bytes_(pSigParams->cbHashOutput) PBYTE pbOtsPubKeyCandidate)
const SYMCRYPT_LMS_OTS_PARAMETER_PREDEFINED * PCSYMCRYPT_LMS_OTS_PARAMETER_PREDEFINED
SYMCRYPT_ERROR SYMCRYPT_CALL SymCryptLmsSetParams(_Out_ PSYMCRYPT_LMS_PARAMS pParams, UINT32 lmsAlgID, UINT32 lmsOtsAlgID, _In_ PCSYMCRYPT_HASH pLmsHashFunction, UINT32 cbHashOutput, UINT32 nTreeHeight, UINT32 nWinternitzChainWidth)
static UINT16 LmsOtsCalculateChecksum(_In_reads_bytes_(cbString) PCBYTE pbString, UINT32 cbString, UINT32 nWidth, UINT32 nLeftShift)
static SYMCRYPT_ERROR SYMCRYPT_CALL SymCryptLmskeyVerifyRoot(_In_ PCSYMCRYPT_LMS_KEY pKey)
static VOID SYMCRYPT_CALL LmsComputeRootCandidate(UINT32 nLeafNumber, _In_ PCSYMCRYPT_LMS_PARAMS pParams, _In_reads_bytes_(SYMCRYPT_LMS_KEY_PAIR_IDENTIFIER_SIZE) PCBYTE pbId, _In_reads_bytes_(pParams->nTreeHeight *pParams->cbHashOutput) PCBYTE pbPath, _In_reads_bytes_(pParams->cbHashOutput) PCBYTE pbPubKeyCandidate, _Out_writes_bytes_(pParams->cbHashOutput) PBYTE pbRootCandidate)
SYMCRYPT_ERROR SYMCRYPT_CALL SymCryptLmsVerifyInternal(_In_ PCSYMCRYPT_LMS_KEY pKey, _In_reads_bytes_(cbMessage) PCBYTE pbMessage, SIZE_T cbMessage, UINT32 flags, _In_reads_bytes_(cbSignature) PCBYTE pbSignature, SIZE_T cbSignature)
SYMCRYPT_ERROR SYMCRYPT_CALL SymCryptLmskeyGenerate(_Inout_ PSYMCRYPT_LMS_KEY pKey, UINT32 flags)
SIZE_T SYMCRYPT_CALL SymCryptLmsSizeofSignatureFromParams(_In_ PCSYMCRYPT_LMS_PARAMS pParams)
static const PCSYMCRYPT_HASH * LmsHashObjects[]
static const BYTE SYMCRYPT_LMS_D_INTR[]
static const SYMCRYPT_LMS_PARAMETER_PREDEFINED LmsParametersPredefined[]
static VOID SYMCRYPT_CALL LmsOtskeySign(_In_ PSYMCRYPT_LMS_KEY pKey, UINT64 nLeafNumber, _In_reads_bytes_(cbMessage) PCBYTE pbMessage, SIZE_T cbMessage, _In_reads_bytes_(pKey->params.cbHashOutput) PCBYTE pbRandomizer, _Out_writes_bytes_(cbSignature) PBYTE pbSignature, SIZE_T cbSignature)
SYMCRYPT_ERROR SYMCRYPT_CALL SymCryptLmskeySetValue(_In_reads_bytes_(cbBlob) PCBYTE pbBlob, SIZE_T cbBlob, SYMCRYPT_LMSKEY_TYPE keyType, UINT32 flags, _Inout_ PSYMCRYPT_LMS_KEY pKey)
VOID SYMCRYPT_CALL SymCryptLmskeyFree(_Inout_ PSYMCRYPT_LMS_KEY pKey)
static const BYTE SYMCRYPT_LMS_D_MESG[]
static SIZE_T SYMCRYPT_CALL LmsOtsSizeofSignatureFromParams(_In_ PCSYMCRYPT_LMS_PARAMS pParams)
SYMCRYPT_ERROR SYMCRYPT_CALL SymCryptLmsSizeofKeyBlobFromParams(_In_ PCSYMCRYPT_LMS_PARAMS pParams, SYMCRYPT_LMSKEY_TYPE keyType, _Out_ SIZE_T *pcbKey)
SYMCRYPT_ERROR SYMCRYPT_CALL SymCryptLmskeyGetValue(_In_ PCSYMCRYPT_LMS_KEY pKey, SYMCRYPT_LMSKEY_TYPE keyType, UINT32 flags, _Out_writes_bytes_(cbBlob) PBYTE pbBlob, SIZE_T cbBlob)
static const BYTE SYMCRYPT_LMS_D_PBLC[]
SYMCRYPT_ERROR SYMCRYPT_CALL SymCryptLmsSign(_Inout_ PSYMCRYPT_LMS_KEY pKey, _In_reads_bytes_(cbMessage) PCBYTE pbMessage, SIZE_T cbMessage, UINT32 flags, _Out_writes_bytes_(cbSignature) PBYTE pbSignature, SIZE_T cbSignature)
SYMCRYPT_ERROR SYMCRYPT_CALL SymCryptLmsParamsFromAlgId(SYMCRYPT_LMS_ALGID lmsAlgID, SYMCRYPT_LMS_OTS_ALGID lmsOtsAlgID, _Out_ PSYMCRYPT_LMS_PARAMS pParams)
static VOID SYMCRYPT_CALL LmsComputeNodeValue(_In_ PCSYMCRYPT_LMS_KEY pKey, UINT32 nIndex, _Out_writes_bytes_(pKey->params.cbHashOutput) PBYTE pbNodeValue, SIZE_T cbNodeValue)
static VOID SYMCRYPT_CALL LmsOtskeyComputePrivate(_In_ PCSYMCRYPT_LMS_KEY pKey, _In_ UINT32 nLeafNumber, _In_ UINT32 nPIdx, _Out_writes_bytes_(pKey->params.cbHashOutput) PBYTE pbOtsPrivateKey)
static VOID SYMCRYPT_CALL LmsOtskeyComputePublic(_In_ PCSYMCRYPT_LMS_KEY pKey, UINT32 nNodeIdx, _Out_writes_bytes_(pKey->params.cbHashOutput) PBYTE pbK)
static VOID SYMCRYPT_CALL LmskeyWipe(_Inout_ PSYMCRYPT_LMS_KEY pKey)
struct _SYMCRYPT_LMS_PARAMETER_PREDEFINED SYMCRYPT_LMS_PARAMETER_PREDEFINED
SYMCRYPT_ERROR SYMCRYPT_CALL SymCryptLmsVerify(_In_ PCSYMCRYPT_LMS_KEY pKey, _In_reads_bytes_(cbMessage) PCBYTE pbMessage, SIZE_T cbMessage, UINT32 flags, _In_reads_bytes_(cbSignature) PCBYTE pbSignature, SIZE_T cbSignature)
const SYMCRYPT_LMS_PARAMETER_PREDEFINED * PCSYMCRYPT_LMS_PARAMETER_PREDEFINED
#define memcpy(s1, s2, n)
#define _In_reads_bytes_(s)
#define _Out_writes_bytes_(s)
#define UNREFERENCED_PARAMETER(P)
static int sum(int x_, int y_)
#define SYMCRYPT_IS_VALID_WINTERNITZ_WIDTH(w)
VOID SYMCRYPT_CALL SymCryptHbsGetWinternitzLengths(UINT32 n, UINT32 w, _Out_ PUINT32 puLen1, _Out_ PUINT32 puLen2)
#define SYMCRYPT_LMS_PUB_KEY_SIZE(cbHashOutput)
#define SYMCRYPT_LMS_KEY_PAIR_IDENTIFIER_SIZE
#define SYMCRYPT_LMS_PRIV_KEY_SIZE(cbHashOutput)
BYTE abPublicRoot[SYMCRYPT_LMS_MAX_N]
SYMCRYPT_XMSSKEY_TYPE keyType
#define SYMCRYPT_LMS_MAX_N
#define SYMCRYPT_LMS_MAX_CUSTOM_TREE_HEIGHT
#define SYMCRYPT_RUN_SELFTEST_ONCE(AlgorithmSelftestFunction, AlgorithmSelftestFlag)
UINT32 SYMCRYPT_CALL SymCryptHbsGetDigit(UINT32 width, _In_ PCBYTE pbBuffer, SIZE_T cbBuffer, UINT32 index)
#define SYMCRYPT_ARRAY_SIZE(_x)
#define SYMCRYPT_LMS_CHECKSUM_SIZE
SYMCRYPT_LMS_OTS_ALGID lmsOtsAlgId
SYMCRYPT_LMS_ALGID lmsAlgId
#define SYMCRYPT_ASSERT(_x)
enum _SYMCRYPT_LMSKEY_TYPE SYMCRYPT_LMSKEY_TYPE
const PCSYMCRYPT_HASH SymCryptShake256HashAlgorithm
VOID SYMCRYPT_CALL SymCryptLmsSelftest(void)
VOID SYMCRYPT_CALL SymCryptHashAppend(_In_ PCSYMCRYPT_HASH pHash, _Inout_updates_bytes_(pHash->stateSize) PVOID pState, _In_reads_(cbData) PCBYTE pbData, SIZE_T cbData)
#define SYMCRYPT_LOAD_MSBFIRST32(p)
FORCEINLINE VOID SYMCRYPT_CALL SymCryptWipeKnownSize(_Out_writes_bytes_(cbData) PVOID pbData, SIZE_T cbData)
VOID SYMCRYPT_CALL SymCryptWipe(_Out_writes_bytes_(cbData) PVOID pbData, SIZE_T cbData)
const PCSYMCRYPT_HASH SymCryptSha256Algorithm
VOID SYMCRYPT_CALL SymCryptHashInit(_In_ PCSYMCRYPT_HASH pHash, _Out_writes_bytes_(pHash->stateSize) PVOID pState)
@ SYMCRYPT_LMS_OTS_SHA256_N24_W4
@ SYMCRYPT_LMS_OTS_SHAKE_N32_W1
@ SYMCRYPT_LMS_OTS_SHAKE_N32_W8
@ SYMCRYPT_LMS_OTS_SHAKE_N24_W4
@ SYMCRYPT_LMS_OTS_SHA256_N32_W8
@ SYMCRYPT_LMS_OTS_SHA256_N32_W1
@ SYMCRYPT_LMS_OTS_SHA256_N24_W2
@ SYMCRYPT_LMS_OTS_SHAKE_N32_W2
@ SYMCRYPT_LMS_OTS_SHA256_N32_W4
@ SYMCRYPT_LMS_OTS_SHAKE_N24_W2
@ SYMCRYPT_LMS_OTS_SHAKE_N32_W4
@ SYMCRYPT_LMS_OTS_SHA256_N24_W8
@ SYMCRYPT_LMS_OTS_SHA256_N32_W2
@ SYMCRYPT_LMS_OTS_SHAKE_N24_W1
@ SYMCRYPT_LMS_OTS_SHAKE_N24_W8
@ SYMCRYPT_LMS_OTS_SHA256_N24_W1
@ SYMCRYPT_LMSKEY_TYPE_PRIVATE
@ SYMCRYPT_LMSKEY_TYPE_PUBLIC
@ SYMCRYPT_LMSKEY_TYPE_NONE
#define SYMCRYPT_STORE_MSBFIRST16(p, v)
enum _SYMCRYPT_LMS_OTS_ALGID SYMCRYPT_LMS_OTS_ALGID
enum _SYMCRYPT_LMS_ALGID SYMCRYPT_LMS_ALGID
#define SYMCRYPT_FLAG_LMSKEY_VERIFY_ROOT
#define SYMCRYPT_STORE_MSBFIRST32(p, v)
BOOLEAN SYMCRYPT_CALL SymCryptEqual(_In_reads_(cbBytes) PCBYTE pbSrc1, _In_reads_(cbBytes) PCBYTE pbSrc2, SIZE_T cbBytes)
@ SYMCRYPT_LMS_SHA256_M24_H20
@ SYMCRYPT_LMS_SHAKE_M32_H25
@ SYMCRYPT_LMS_SHAKE_M24_H5
@ SYMCRYPT_LMS_SHAKE_M32_H10
@ SYMCRYPT_LMS_SHA256_M24_H15
@ SYMCRYPT_LMS_SHA256_M24_H25
@ SYMCRYPT_LMS_SHA256_M32_H25
@ SYMCRYPT_LMS_SHAKE_M24_H20
@ SYMCRYPT_LMS_SHA256_M32_H5
@ SYMCRYPT_LMS_SHA256_M32_H20
@ SYMCRYPT_LMS_SHA256_M32_H10
@ SYMCRYPT_LMS_SHAKE_M24_H25
@ SYMCRYPT_LMS_SHA256_M32_H15
@ SYMCRYPT_LMS_SHA256_M24_H10
@ SYMCRYPT_LMS_SHAKE_M24_H15
@ SYMCRYPT_LMS_SHAKE_M24_H10
@ SYMCRYPT_LMS_SHA256_M24_H5
@ SYMCRYPT_LMS_SHAKE_M32_H5
@ SYMCRYPT_LMS_SHAKE_M32_H15
@ SYMCRYPT_LMS_SHAKE_M32_H20
VOID SYMCRYPT_CALL SymCryptHashResult(_In_ PCSYMCRYPT_HASH pHash, _Inout_updates_bytes_(pHash->stateSize) PVOID pState, _Out_writes_(SYMCRYPT_MIN(cbResult, pHash->resultSize)) PBYTE pbResult, SIZE_T cbResult)
@ SYMCRYPT_SELFTEST_ALGORITHM_LMS
const SYMCRYPT_LMS_PARAMS * PCSYMCRYPT_LMS_PARAMS
SYMCRYPT_LMS_PARAMS * PSYMCRYPT_LMS_PARAMS
const SYMCRYPT_HASH * PCSYMCRYPT_HASH
PCSYMCRYPT_HASH pLmsHashFunction
#define SYMCRYPT_SET_MAGIC(p)
const SYMCRYPT_LMS_KEY * PCSYMCRYPT_LMS_KEY
SYMCRYPT_LMS_KEY * PSYMCRYPT_LMS_KEY
PCSYMCRYPT_HMAC_MD5_EXPANDED_KEY pKey
UINT32 nWinternitzChainWidth
struct _SYMCRYPT_LMS_KEY SYMCRYPT_LMS_KEY
#define SYMCRYPT_CHECK_MAGIC(p)