9#define NROWS_MLKEM512 (2)
10#define NROWS_MLKEM768 (3)
11#define NROWS_MLKEM1024 (4)
79 scError = SYMCRYPT_INVALID_ARGUMENT;
101 pKey->fAlgorithmInfo = 0;
102 pKey->params = *pInternalParams;
112 pbCurr += pInternalParams->cbMatrix;
119 pbCurr += pInternalParams->cbVector;
126 pbCurr += pInternalParams->cbVector;
151 if( scError != SYMCRYPT_NO_ERROR )
193#define SYMCRYPT_MLKEM_SIZEOF_ENCODED_UNCOMPRESSED_VECTOR(_nRows) (384UL * _nRows)
197#define SYMCRYPT_MLKEM_SIZEOF_FORMAT_DECAPSULATION_KEY(_nRows) ((2*SYMCRYPT_MLKEM_SIZEOF_ENCODED_UNCOMPRESSED_VECTOR(_nRows)) + (3*32))
200#define SYMCRYPT_MLKEM_SIZEOF_FORMAT_ENCAPSULATION_KEY(_nRows) (SYMCRYPT_MLKEM_SIZEOF_ENCODED_UNCOMPRESSED_VECTOR(_nRows) + 32)
222 scError = SYMCRYPT_INCOMPATIBLE_FORMAT;
227 if( scError != SYMCRYPT_NO_ERROR )
232 switch( mlKemkeyFormat )
247 scError = SYMCRYPT_INVALID_ARGUMENT;
266 if( scError != SYMCRYPT_NO_ERROR )
275 *pcbCiphertext = cbU + cbV;
304 coordinates[1] = (
BYTE)
i;
307 coordinates[0] = (
BYTE)
j;
342 BYTE CBDSampleBuffer[3*64 + 1];
382 CBDSampleBuffer[0] = (
BYTE)
i;
444 if ( (
flags & ~allowedFlags ) != 0 )
446 scError = SYMCRYPT_INVALID_ARGUMENT;
454 scError = SYMCRYPT_INVALID_ARGUMENT;
460 scError = SYMCRYPT_INVALID_ARGUMENT;
474 if( pCompTemps ==
NULL )
476 scError = SYMCRYPT_MEMORY_ALLOCATION_FAILURE;
484 scError = SYMCRYPT_WRONG_KEY_SIZE;
502 scError = SYMCRYPT_WRONG_KEY_SIZE;
508 if( scError != SYMCRYPT_NO_ERROR )
512 pbCurr += cbEncodedVector;
516 pbCurr += cbEncodedVector;
518 if( scError != SYMCRYPT_NO_ERROR )
537 scError = SYMCRYPT_INVALID_BLOB;
553 scError = SYMCRYPT_WRONG_KEY_SIZE;
559 pbCurr += cbEncodedVector;
561 if( scError != SYMCRYPT_NO_ERROR )
582 scError = SYMCRYPT_NOT_IMPLEMENTED;
589 if( pCompTemps !=
NULL )
617 scError = SYMCRYPT_INVALID_ARGUMENT;
625 scError = SYMCRYPT_WRONG_KEY_SIZE;
631 scError = SYMCRYPT_INCOMPATIBLE_FORMAT;
645 scError = SYMCRYPT_INVALID_ARGUMENT;
651 scError = SYMCRYPT_INCOMPATIBLE_FORMAT;
658 pbCurr += cbEncodedVector;
661 pbCurr += cbEncodedVector;
676 scError = SYMCRYPT_INVALID_ARGUMENT;
681 pbCurr += cbEncodedVector;
688 scError = SYMCRYPT_NOT_IMPLEMENTED;
708 SIZE_T cbPctCipherText = 0;
713 if ( (
flags & ~allowedFlags ) != 0 )
715 scError = SYMCRYPT_INVALID_ARGUMENT;
720 if( scError != SYMCRYPT_NO_ERROR )
726 if( scError != SYMCRYPT_NO_ERROR )
746 cbPctCipherText = cbU + cbV;
749 if( pbPctCipherText ==
NULL )
751 scError = SYMCRYPT_MEMORY_ALLOCATION_FAILURE;
761 pbPctCipherText, cbPctCipherText );
762 if( scError != SYMCRYPT_NO_ERROR )
764 scError = SYMCRYPT_FIPS_FAILURE;
771 pbPctCipherText, cbPctCipherText,
773 if( scError != SYMCRYPT_NO_ERROR )
775 scError = SYMCRYPT_FIPS_FAILURE;
783 scError = SYMCRYPT_FIPS_FAILURE;
792 if( pbPctCipherText !=
NULL )
810 PBYTE pbAgreedSecret,
819 BYTE CBDSampleBuffer[3*64 + 1];
844 (cbCiphertext != cbU + cbV) )
846 scError = SYMCRYPT_INVALID_ARGUMENT;
877 CBDSampleBuffer[0] = (
BYTE)
i;
966 scError = SYMCRYPT_INVALID_ARGUMENT;
971 if( pCompTemps ==
NULL )
973 scError = SYMCRYPT_MEMORY_ALLOCATION_FAILURE;
979 pbAgreedSecret, cbAgreedSecret,
980 pbCiphertext, cbCiphertext,
985 if( pCompTemps !=
NULL )
1007 if( scError != SYMCRYPT_NO_ERROR )
1015 pbAgreedSecret, cbAgreedSecret,
1016 pbCiphertext, cbCiphertext );
1037 PBYTE pbReadCiphertext, pbReencapsulatedCiphertext;
1062 (cbCiphertext != cbU + cbV) ||
1065 scError = SYMCRYPT_INVALID_ARGUMENT;
1070 if( pbAlloc ==
NULL )
1072 scError = SYMCRYPT_MEMORY_ALLOCATION_FAILURE;
1080 pbReadCiphertext = pbCurr;
1081 pbCurr += cbCiphertext;
1083 pbReencapsulatedCiphertext = pbCurr;
1084 pbCurr += cbCiphertext;
1089 memcpy( pbReadCiphertext, pbCiphertext, cbCiphertext );
1128 pbDecapsulatedSecret,
sizeof(pbDecapsulatedSecret),
1129 pbReencapsulatedCiphertext, cbCiphertext,
1136 pShakeState = &pCompTemps->hashState0.shake256State;
1143 successfulReencrypt =
SymCryptEqual( pbReencapsulatedCiphertext, pbReadCiphertext, cbCiphertext );
1153 if( pbAlloc !=
NULL )
static void cleanup(void)
GLenum const GLfloat * params
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 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)
#define memcpy(s1, s2, n)
static PSYMCRYPT_MLKEMKEY SYMCRYPT_CALL SymCryptMlKemkeyInitialize(_In_ PCSYMCRYPT_MLKEM_INTERNAL_PARAMS pInternalParams, _Out_writes_bytes_(cbKey) PBYTE pbKey, UINT32 cbKey)
const SYMCRYPT_MLKEM_INTERNAL_PARAMS SymCryptMlKemInternalParamsMlKem1024
VOID SYMCRYPT_CALL SymCryptMlKemkeyFree(_Inout_ PSYMCRYPT_MLKEMKEY pkMlKemkey)
static VOID SYMCRYPT_CALL SymCryptMlKemkeyExpandPublicMatrixFromPublicSeed(_Inout_ PSYMCRYPT_MLKEMKEY pkMlKemkey, _Inout_ PSYMCRYPT_MLKEM_INTERNAL_COMPUTATION_TEMPORARIES pCompTemps)
SYMCRYPT_ERROR SYMCRYPT_CALL SymCryptMlKemEncapsulate(_In_ PCSYMCRYPT_MLKEMKEY pkMlKemkey, _Out_writes_bytes_(cbAgreedSecret) PBYTE pbAgreedSecret, SIZE_T cbAgreedSecret, _Out_writes_bytes_(cbCiphertext) PBYTE pbCiphertext, SIZE_T cbCiphertext)
SYMCRYPT_ERROR SYMCRYPT_CALL SymCryptMlKemSizeofKeyFormatFromParams(SYMCRYPT_MLKEM_PARAMS params, SYMCRYPT_MLKEMKEY_FORMAT mlKemkeyFormat, _Out_ SIZE_T *pcbKeyFormat)
SYMCRYPT_ERROR SYMCRYPT_CALL SymCryptMlKemkeyGenerate(_Inout_ PSYMCRYPT_MLKEMKEY pkMlKemkey, UINT32 flags)
static VOID SYMCRYPT_CALL SymCryptMlKemkeyExpandFromPrivateSeed(_Inout_ PSYMCRYPT_MLKEMKEY pkMlKemkey, _Inout_ PSYMCRYPT_MLKEM_INTERNAL_COMPUTATION_TEMPORARIES pCompTemps)
static VOID SYMCRYPT_CALL SymCryptMlKemkeyComputeEncapsulationKeyHash(_Inout_ PSYMCRYPT_MLKEMKEY pkMlKemkey, _Inout_ PSYMCRYPT_MLKEM_INTERNAL_COMPUTATION_TEMPORARIES pCompTemps, SIZE_T cbEncodedVector)
#define SYMCRYPT_MLKEM_SIZEOF_FORMAT_ENCAPSULATION_KEY(_nRows)
#define SYMCRYPT_MLKEM_SIZEOF_ENCODED_UNCOMPRESSED_VECTOR(_nRows)
const SYMCRYPT_MLKEM_INTERNAL_PARAMS SymCryptMlKemInternalParamsMlKem512
SYMCRYPT_ERROR SYMCRYPT_CALL SymCryptMlKemSizeofCiphertextFromParams(SYMCRYPT_MLKEM_PARAMS params, _Out_ SIZE_T *pcbCiphertext)
SYMCRYPT_ERROR SYMCRYPT_CALL SymCryptMlKemEncapsulateEx(_In_ PCSYMCRYPT_MLKEMKEY pkMlKemkey, _In_reads_bytes_(cbRandom) PCBYTE pbRandom, SIZE_T cbRandom, _Out_writes_bytes_(cbAgreedSecret) PBYTE pbAgreedSecret, SIZE_T cbAgreedSecret, _Out_writes_bytes_(cbCiphertext) PBYTE pbCiphertext, SIZE_T cbCiphertext)
SYMCRYPT_ERROR SYMCRYPT_CALL SymCryptMlKemEncapsulateInternal(_In_ PCSYMCRYPT_MLKEMKEY pkMlKemkey, _Out_writes_bytes_(cbAgreedSecret) PBYTE pbAgreedSecret, SIZE_T cbAgreedSecret, _Out_writes_bytes_(cbCiphertext) PBYTE pbCiphertext, SIZE_T cbCiphertext, _In_reads_bytes_(SYMCRYPT_MLKEM_SIZEOF_ENCAPS_RANDOM) PCBYTE pbRandom, _Inout_ PSYMCRYPT_MLKEM_INTERNAL_COMPUTATION_TEMPORARIES pCompTemps)
const SYMCRYPT_MLKEM_INTERNAL_PARAMS SymCryptMlKemInternalParamsMlKem768
SYMCRYPT_ERROR SYMCRYPT_CALL SymCryptMlKemkeySetValue(_In_reads_bytes_(cbSrc) PCBYTE pbSrc, SIZE_T cbSrc, SYMCRYPT_MLKEMKEY_FORMAT mlKemkeyFormat, UINT32 flags, _Inout_ PSYMCRYPT_MLKEMKEY pkMlKemkey)
#define SYMCRYPT_MLKEM_SIZEOF_FORMAT_DECAPSULATION_KEY(_nRows)
static SYMCRYPT_ERROR SYMCRYPT_CALL SymCryptMlKemkeyGetInternalParamsFromParams(SYMCRYPT_MLKEM_PARAMS params, _Out_ PSYMCRYPT_MLKEM_INTERNAL_PARAMS pInternalParams)
SYMCRYPT_ERROR SYMCRYPT_CALL SymCryptMlKemDecapsulate(_In_ PCSYMCRYPT_MLKEMKEY pkMlKemkey, _In_reads_bytes_(cbCiphertext) PCBYTE pbCiphertext, SIZE_T cbCiphertext, _Out_writes_bytes_(cbAgreedSecret) PBYTE pbAgreedSecret, SIZE_T cbAgreedSecret)
SYMCRYPT_ERROR SYMCRYPT_CALL SymCryptMlKemkeyGetValue(_In_ PCSYMCRYPT_MLKEMKEY pkMlKemkey, _Out_writes_bytes_(cbDst) PBYTE pbDst, SIZE_T cbDst, SYMCRYPT_MLKEMKEY_FORMAT mlKemkeyFormat, UINT32 flags)
PSYMCRYPT_MLKEMKEY SYMCRYPT_CALL SymCryptMlKemkeyAllocate(SYMCRYPT_MLKEM_PARAMS params)
VOID SYMCRYPT_CALL SymCryptMlKemPolyElementSub(_In_ PCSYMCRYPT_MLKEM_POLYELEMENT peSrc1, _In_ PCSYMCRYPT_MLKEM_POLYELEMENT peSrc2, _Out_ PSYMCRYPT_MLKEM_POLYELEMENT peDst)
VOID SYMCRYPT_CALL SymCryptMlKemVectorMulR(_In_ PCSYMCRYPT_MLKEM_VECTOR pvSrc, _Out_ PSYMCRYPT_MLKEM_VECTOR pvDst)
VOID SYMCRYPT_CALL SymCryptMlKemVectorCompressAndEncode(_In_ PCSYMCRYPT_MLKEM_VECTOR pvSrc, UINT32 nBitsPerCoefficient, _Out_writes_bytes_(cbDst) PBYTE pbDst, SIZE_T cbDst)
VOID SYMCRYPT_CALL SymCryptMlKemMatrixVectorMontMulAndAdd(_In_ PCSYMCRYPT_MLKEM_MATRIX pmSrc1, _In_ PCSYMCRYPT_MLKEM_VECTOR pvSrc2, _Inout_ PSYMCRYPT_MLKEM_VECTOR pvDst, _Inout_ PSYMCRYPT_MLKEM_POLYELEMENT_ACCUMULATOR paTmp)
VOID SYMCRYPT_CALL SymCryptMlKemVectorSetZero(_Inout_ PSYMCRYPT_MLKEM_VECTOR pvSrc)
PSYMCRYPT_MLKEM_VECTOR SYMCRYPT_CALL SymCryptMlKemVectorCreate(_Out_writes_bytes_(cbBuffer) PBYTE pbBuffer, UINT32 cbBuffer, UINT32 nRows)
VOID SYMCRYPT_CALL SymCryptMlKemPolyElementAdd(_In_ PCSYMCRYPT_MLKEM_POLYELEMENT peSrc1, _In_ PCSYMCRYPT_MLKEM_POLYELEMENT peSrc2, _Out_ PSYMCRYPT_MLKEM_POLYELEMENT peDst)
VOID SYMCRYPT_CALL SymCryptMlKemPolyElementSampleCBDFromBytes(_In_reads_bytes_(eta *2 *(SYMCRYPT_MLWE_POLYNOMIAL_COEFFICIENTS/8)+1) PCBYTE pbSrc, _In_range_(2, 3) UINT32 eta, _Out_ PSYMCRYPT_MLKEM_POLYELEMENT peDst)
VOID SYMCRYPT_CALL SymCryptMlKemMatrixTranspose(_Inout_ PSYMCRYPT_MLKEM_MATRIX pmSrc)
PSYMCRYPT_MLKEM_POLYELEMENT SYMCRYPT_CALL SymCryptMlKemPolyElementCreate(_Out_writes_bytes_(cbBuffer) PBYTE pbBuffer, UINT32 cbBuffer)
VOID SYMCRYPT_CALL SymCryptMlKemPolyElementSampleNTTFromShake128(_Inout_ PSYMCRYPT_SHAKE128_STATE pState, _Out_ PSYMCRYPT_MLKEM_POLYELEMENT peDst)
VOID SYMCRYPT_CALL SymCryptMlKemPolyElementINTTAndMulR(_Inout_ PSYMCRYPT_MLKEM_POLYELEMENT peSrc)
VOID SYMCRYPT_CALL SymCryptMlKemVectorNTT(_Inout_ PSYMCRYPT_MLKEM_VECTOR pvSrc)
PSYMCRYPT_MLKEM_POLYELEMENT_ACCUMULATOR SYMCRYPT_CALL SymCryptMlKemPolyElementAccumulatorCreate(_Out_writes_bytes_(cbBuffer) PBYTE pbBuffer, UINT32 cbBuffer)
SYMCRYPT_ERROR SYMCRYPT_CALL SymCryptMlKemPolyElementDecodeAndDecompress(_In_reads_bytes_(nBitsPerCoefficient *(SYMCRYPT_MLWE_POLYNOMIAL_COEFFICIENTS/8)) PCBYTE pbSrc, UINT32 nBitsPerCoefficient, _Out_ PSYMCRYPT_MLKEM_POLYELEMENT peDst)
VOID SYMCRYPT_CALL SymCryptMlKemVectorMontDotProduct(_In_ PCSYMCRYPT_MLKEM_VECTOR pvSrc1, _In_ PCSYMCRYPT_MLKEM_VECTOR pvSrc2, _Inout_ PSYMCRYPT_MLKEM_POLYELEMENT peDst, _Inout_ PSYMCRYPT_MLKEM_POLYELEMENT_ACCUMULATOR paTmp)
VOID SYMCRYPT_CALL SymCryptMlKemVectorINTTAndMulR(_Inout_ PSYMCRYPT_MLKEM_VECTOR pvSrc)
VOID SYMCRYPT_CALL SymCryptMlKemPolyElementCompressAndEncode(_In_ PCSYMCRYPT_MLKEM_POLYELEMENT peSrc, UINT32 nBitsPerCoefficient, _Out_writes_bytes_(nBitsPerCoefficient *(SYMCRYPT_MLWE_POLYNOMIAL_COEFFICIENTS/8)) PBYTE pbDst)
SYMCRYPT_ERROR SYMCRYPT_CALL SymCryptMlKemVectorDecodeAndDecompress(_In_reads_bytes_(cbSrc) PCBYTE pbSrc, SIZE_T cbSrc, UINT32 nBitsPerCoefficient, _Out_ PSYMCRYPT_MLKEM_VECTOR pvDst)
PSYMCRYPT_MLKEM_MATRIX SYMCRYPT_CALL SymCryptMlKemMatrixCreate(_Out_writes_bytes_(cbBuffer) PBYTE pbBuffer, UINT32 cbBuffer, UINT32 nRows)
#define _In_reads_bytes_(s)
#define _Out_writes_bytes_(s)
#define UNREFERENCED_PARAMETER(P)
#define SYMCRYPT_MLWE_POLYNOMIAL_COEFFICIENTS
PSYMCRYPT_MLKEMKEY pkMlKemkey
BYTE privateSeed[SYMCRYPT_COMPOSITE_MLKEM_IRTF_PRIVATE_SEED_SIZE]
#define SYMCRYPT_RUN_SELFTEST_ONCE(AlgorithmSelftestFunction, AlgorithmSelftestFlag)
SYMCRYPT_MLKEM_POLYELEMENT * PSYMCRYPT_MLKEM_POLYELEMENT
SYMCRYPT_MLKEM_POLYELEMENT_ACCUMULATOR * PSYMCRYPT_MLKEM_POLYELEMENT_ACCUMULATOR
* PSYMCRYPT_MLKEM_INTERNAL_PARAMS
#define SYMCRYPT_INTERNAL_MLKEM_SIZEOF_POLYRINGELEMENT
#define SYMCRYPT_MLKEM_SIZEOF_ENCAPS_RANDOM
#define SYMCRYPT_INTERNAL_MLKEM_VECTOR_ELEMENT(_row, _pVector)
#define SYMCRYPT_MLKEM_SIZEOF_AGREED_SECRET
SYMCRYPT_MLKEM_INTERNAL_COMPUTATION_TEMPORARIES
const SYMCRYPT_MLKEM_INTERNAL_PARAMS * PCSYMCRYPT_MLKEM_INTERNAL_PARAMS
SYMCRYPT_MLKEM_INTERNAL_PARAMS
SYMCRYPT_MLKEM_INTERNAL_COMPUTATION_TEMPORARIES * PSYMCRYPT_MLKEM_INTERNAL_COMPUTATION_TEMPORARIES
#define SYMCRYPT_MLKEM_ENCAPSULATION_KEY_SIZE_MLKEM512
#define SYMCRYPT_ASSERT(_x)
#define SYMCRYPT_MLKEM_ENCAPSULATION_KEY_SIZE_MLKEM768
#define SYMCRYPT_MLKEM_DECAPSULATION_KEY_SIZE_MLKEM768
#define SYMCRYPT_MLKEM_PRIVATE_SEED_SIZE
VOID SYMCRYPT_CALL SymCryptSha3_512Init(_Out_ PSYMCRYPT_SHA3_512_STATE pState)
VOID SYMCRYPT_CALL SymCryptShake128Append(_Inout_ PSYMCRYPT_SHAKE128_STATE pState, _In_reads_(cbData) PCBYTE pbData, SIZE_T cbData)
VOID SYMCRYPT_CALL SymCryptShake256StateCopy(_In_ PCSYMCRYPT_SHAKE256_STATE pSrc, _Out_ PSYMCRYPT_SHAKE256_STATE pDst)
@ SYMCRYPT_MLKEMKEY_FORMAT_PRIVATE_SEED
@ SYMCRYPT_MLKEMKEY_FORMAT_ENCAPSULATION_KEY
@ SYMCRYPT_MLKEMKEY_FORMAT_NULL
@ SYMCRYPT_MLKEMKEY_FORMAT_DECAPSULATION_KEY
FORCEINLINE VOID SYMCRYPT_CALL SymCryptWipeKnownSize(_Out_writes_bytes_(cbData) PVOID pbData, SIZE_T cbData)
VOID SYMCRYPT_CALL SymCryptSha3_512Append(_Inout_ PSYMCRYPT_SHA3_512_STATE pState, _In_reads_(cbData) PCBYTE pbData, SIZE_T cbData)
VOID SYMCRYPT_CALL SymCryptSha3_256Init(_Out_ PSYMCRYPT_SHA3_256_STATE pState)
VOID SYMCRYPT_CALL SymCryptShake128Init(_Out_ PSYMCRYPT_SHAKE128_STATE pState)
#define SYMCRYPT_MLKEM_ENCAPSULATION_KEY_SIZE_MLKEM1024
VOID SYMCRYPT_CALL SymCryptWipe(_Out_writes_bytes_(cbData) PVOID pbData, SIZE_T cbData)
#define SYMCRYPT_SHA3_512_RESULT_SIZE
#define SYMCRYPT_MLKEM_CIPHERTEXT_SIZE_MLKEM768
VOID SYMCRYPT_CALL SymCryptShake128StateCopy(_In_ PCSYMCRYPT_SHAKE128_STATE pSrc, _Out_ PSYMCRYPT_SHAKE128_STATE pDst)
#define SYMCRYPT_MLKEM_CIPHERTEXT_SIZE_MLKEM512
VOID SYMCRYPT_CALL SymCryptShake256Append(_Inout_ PSYMCRYPT_SHAKE256_STATE pState, _In_reads_(cbData) PCBYTE pbData, SIZE_T cbData)
VOID SYMCRYPT_CALL SymCryptSha3_256Result(_Inout_ PSYMCRYPT_SHA3_256_STATE pState, _Out_writes_(SYMCRYPT_SHA3_256_RESULT_SIZE) PBYTE pbResult)
VOID SYMCRYPT_CALL SymCryptShake256Extract(_Inout_ PSYMCRYPT_SHAKE256_STATE pState, _Out_writes_(cbResult) PBYTE pbResult, SIZE_T cbResult, BOOLEAN bWipe)
VOID SYMCRYPT_CALL SymCryptSha3_512(_In_reads_(cbData) PCBYTE pbData, SIZE_T cbData, _Out_writes_(SYMCRYPT_SHA3_512_RESULT_SIZE) PBYTE pbResult)
VOID SYMCRYPT_CALL SymCryptShake256Init(_Out_ PSYMCRYPT_SHAKE256_STATE pState)
enum _SYMCRYPT_MLKEMKEY_FORMAT SYMCRYPT_MLKEMKEY_FORMAT
#define SYMCRYPT_MLKEM_DECAPSULATION_KEY_SIZE_MLKEM1024
#define SYMCRYPT_FLAG_KEY_NO_FIPS
VOID SYMCRYPT_CALL SymCryptSha3_512Result(_Inout_ PSYMCRYPT_SHA3_512_STATE pState, _Out_writes_(SYMCRYPT_SHA3_512_RESULT_SIZE) PBYTE pbResult)
#define SYMCRYPT_MLKEM_CIPHERTEXT_SIZE_MLKEM1024
enum _SYMCRYPT_MLKEM_PARAMS SYMCRYPT_MLKEM_PARAMS
#define SYMCRYPT_MLKEM_DECAPSULATION_KEY_SIZE_MLKEM512
BOOLEAN SYMCRYPT_CALL SymCryptEqual(_In_reads_(cbBytes) PCBYTE pbSrc1, _In_reads_(cbBytes) PCBYTE pbSrc2, SIZE_T cbBytes)
#define SYMCRYPT_FLAG_KEY_MINIMAL_VALIDATION
@ SYMCRYPT_MLKEM_PARAMS_MLKEM768
@ SYMCRYPT_MLKEM_PARAMS_MLKEM512
@ SYMCRYPT_MLKEM_PARAMS_MLKEM1024
VOID SYMCRYPT_CALL SymCryptMlKemSelftest(void)
VOID SYMCRYPT_CALL SymCryptSha3_256Append(_Inout_ PSYMCRYPT_SHA3_256_STATE pState, _In_reads_(cbData) PCBYTE pbData, SIZE_T cbData)
struct _SYMCRYPT_MLKEMKEY SYMCRYPT_MLKEMKEY
@ SYMCRYPT_SELFTEST_ALGORITHM_MLKEM
SYMCRYPT_MLKEMKEY * PSYMCRYPT_MLKEMKEY
SYMCRYPT_MAGIC_FIELD * PSYMCRYPT_SHAKE128_STATE
#define SYMCRYPT_SET_MAGIC(p)
SYMCRYPT_MAGIC_FIELD * PSYMCRYPT_SHA3_512_STATE
PCSYMCRYPT_HMAC_MD5_EXPANDED_KEY pKey
SYMCRYPT_MAGIC_FIELD * PSYMCRYPT_SHA3_256_STATE
PSYMCRYPT_COMMON_HASH_STATE pState
#define SYMCRYPT_CHECK_MAGIC(p)
const SYMCRYPT_MLKEMKEY * PCSYMCRYPT_MLKEMKEY
SYMCRYPT_MAGIC_FIELD * PSYMCRYPT_SHAKE256_STATE
VOID SYMCRYPT_CALL SymCryptScsCopy(_In_reads_(cbDst) PCBYTE pbSrc, SIZE_T cbSrc, _Out_writes_(cbDst) PBYTE pbDst, SIZE_T cbDst)