12#define SYMCRYPT_MLDSA_Q_INV (58728449)
17#define SYMCRYPT_MLDSA_INTT_FIXUP_TIMES_R (16382)
23#define SYMCRYPT_MLDSA_RSQR (2365951)
29#define SYMCRYPT_MLDSA_REJNTTPOLY_SEED_SIZE (34)
35#define SYMCRYPT_MLDSA_REJBOUNDEDPOLY_SEED_SIZE (66)
40#define SYMCRYPT_POWER2ROUND_LOW_ORDER_BITS (13)
57 4193792, 25847, 5771523, 7861508, 237124, 7602457, 7504169, 466468,
58 1826347, 2353451, 8021166, 6288512, 3119733, 5495562, 3111497, 2680103,
59 2725464, 1024112, 7300517, 3585928, 7830929, 7260833, 2619752, 6271868,
60 6262231, 4520680, 6980856, 5102745, 1757237, 8360995, 4010497, 280005,
61 2706023, 95776, 3077325, 3530437, 6718724, 4788269, 5842901, 3915439,
62 4519302, 5336701, 3574422, 5512770, 3539968, 8079950, 2348700, 7841118,
63 6681150, 6736599, 3505694, 4558682, 3507263, 6239768, 6779997, 3699596,
64 811944, 531354, 954230, 3881043, 3900724, 5823537, 2071892, 5582638,
65 4450022, 6851714, 4702672, 5339162, 6927966, 3475950, 2176455, 6795196,
66 7122806, 1939314, 4296819, 7380215, 5190273, 5223087, 4747489, 126922,
67 3412210, 7396998, 2147896, 2715295, 5412772, 4686924, 7969390, 5903370,
68 7709315, 7151892, 8357436, 7072248, 7998430, 1349076, 1852771, 6949987,
69 5037034, 264944, 508951, 3097992, 44288, 7280319, 904516, 3958618,
70 4656075, 8371839, 1653064, 5130689, 2389356, 8169440, 759969, 7063561,
71 189548, 4827145, 3159746, 6529015, 5971092, 8202977, 1315589, 1341330,
72 1285669, 6795489, 7567685, 6940675, 5361315, 4499357, 4751448, 3839961,
73 2091667, 3407706, 2316500, 3817976, 5037939, 2244091, 5933984, 4817955,
74 266997, 2434439, 7144689, 3513181, 4860065, 4621053, 7183191, 5187039,
75 900702, 1859098, 909542, 819034, 495491, 6767243, 8337157, 7857917,
76 7725090, 5257975, 2031748, 3207046, 4823422, 7855319, 7611795, 4784579,
77 342297, 286988, 5942594, 4108315, 3437287, 5038140, 1735879, 203044,
78 2842341, 2691481, 5790267, 1265009, 4055324, 1247620, 2486353, 1595974,
79 4613401, 1250494, 2635921, 4832145, 5386378, 1869119, 1903435, 7329447,
80 7047359, 1237275, 5062207, 6950192, 7929317, 1312455, 3306115, 6417775,
81 7100756, 1917081, 5834105, 7005614, 1500165, 777191, 2235880, 3406031,
82 7838005, 5548557, 6709241, 6533464, 5796124, 4656147, 594136, 4603424,
83 6366809, 2432395, 2454455, 8215696, 1957272, 3369112, 185531, 7173032,
84 5196991, 162844, 1616392, 3014001, 810149, 1652634, 4686184, 6581310,
85 5341501, 3523897, 3866901, 269760, 2213111, 7404533, 1717735, 472078,
86 7953734, 1723600, 6577327, 1910376, 6712985, 7276084, 8119771, 4546524,
87 5441381, 6144432, 7959518, 6094090, 183443, 7403526, 1612842, 4834730,
88 7826001, 3919660, 8332111, 7018208, 3937738, 1400424, 7534263, 1976782
92 4186625, 8354570, 2608894, 518909, 8143293, 777960, 876248, 7913949,
93 6554070, 6026966, 359251, 2091905, 5260684, 2884855, 5268920, 5700314,
94 5654953, 7356305, 1079900, 4794489, 549488, 1119584, 5760665, 2108549,
95 2118186, 3859737, 1399561, 3277672, 6623180, 19422, 4369920, 8100412,
96 5674394, 8284641, 5303092, 4849980, 1661693, 3592148, 2537516, 4464978,
97 3861115, 3043716, 4805995, 2867647, 4840449, 300467, 6031717, 539299,
98 1699267, 1643818, 4874723, 3821735, 4873154, 2140649, 1600420, 4680821,
99 7568473, 7849063, 7426187, 4499374, 4479693, 2556880, 6308525, 2797779,
100 3930395, 1528703, 3677745, 3041255, 1452451, 4904467, 6203962, 1585221,
101 1257611, 6441103, 4083598, 1000202, 3190144, 3157330, 3632928, 8253495,
102 4968207, 983419, 6232521, 5665122, 2967645, 3693493, 411027, 2477047,
103 671102, 1228525, 22981, 1308169, 381987, 7031341, 6527646, 1430430,
104 3343383, 8115473, 7871466, 5282425, 8336129, 1100098, 7475901, 4421799,
105 3724342, 8578, 6727353, 3249728, 5991061, 210977, 7620448, 1316856,
106 8190869, 3553272, 5220671, 1851402, 2409325, 177440, 7064828, 7039087,
107 7094748, 1584928, 812732, 1439742, 3019102, 3881060, 3628969, 4540456,
108 6288750, 4972711, 6063917, 4562441, 3342478, 6136326, 2446433, 3562462,
109 8113420, 5945978, 1235728, 4867236, 3520352, 3759364, 1197226, 3193378,
110 7479715, 6521319, 7470875, 7561383, 7884926, 1613174, 43260, 522500,
111 655327, 3122442, 6348669, 5173371, 3556995, 525098, 768622, 3595838,
112 8038120, 8093429, 2437823, 4272102, 4943130, 3342277, 6644538, 8177373,
113 5538076, 5688936, 2590150, 7115408, 4325093, 7132797, 5894064, 6784443,
114 3767016, 7129923, 5744496, 3548272, 2994039, 6511298, 6476982, 1050970,
115 1333058, 7143142, 3318210, 1430225, 451100, 7067962, 5074302, 1962642,
116 1279661, 6463336, 2546312, 1374803, 6880252, 7603226, 6144537, 4974386,
117 542412, 2831860, 1671176, 1846953, 2584293, 3724270, 7786281, 3776993,
118 2013608, 5948022, 5925962, 164721, 6423145, 5011305, 8194886, 1207385,
119 3183426, 8217573, 6764025, 5366416, 7570268, 6727783, 3694233, 1799107,
120 3038916, 4856520, 4513516, 8110657, 6167306, 975884, 6662682, 7908339,
121 426683, 6656817, 1803090, 6470041, 1667432, 1104333, 260646, 3833893,
122 2939036, 2235985, 420899, 2286327, 8196974, 976891, 6767575, 3545687,
123 554416, 4460757, 48306, 1362209, 4442679, 6979993, 846154, 6403635
135 .privateKeyRange = 2,
136 .encodedCoefficientBitLength = 3,
137 .nChallengeNonZeroCoeffs = 39,
138 .nHintNonZeroCoeffs = 80,
139 .maskCoefficientRangeLog2 = 17,
140 .commitmentModulus = 44,
141 .decomposeR1Factor = 11275,
142 .commitmentRoundingRange = 95232,
143 .w1EncodeCoefficientBitLength = 6,
144 .cbCommitmentHash = 32,
145 .cbEncodedPrivateKey = 2560,
146 .cbEncodedPublicKey = 1312,
159 .privateKeyRange = 4,
160 .encodedCoefficientBitLength = 4,
161 .nChallengeNonZeroCoeffs = 49,
162 .nHintNonZeroCoeffs = 55,
163 .maskCoefficientRangeLog2 = 19,
164 .commitmentModulus = 16,
165 .decomposeR1Factor = 4100,
166 .commitmentRoundingRange = 261888,
167 .w1EncodeCoefficientBitLength = 4,
168 .cbCommitmentHash = 48,
169 .cbEncodedPrivateKey = 4032,
170 .cbEncodedPublicKey = 1952,
183 .privateKeyRange = 2,
184 .encodedCoefficientBitLength = 3,
185 .nChallengeNonZeroCoeffs = 60,
186 .nHintNonZeroCoeffs = 75,
187 .maskCoefficientRangeLog2 = 19,
188 .commitmentModulus = 16,
189 .decomposeR1Factor = 4100,
190 .commitmentRoundingRange = 261888,
191 .w1EncodeCoefficientBitLength = 4,
192 .cbCommitmentHash = 64,
193 .cbEncodedPrivateKey = 4896,
194 .cbEncodedPublicKey = 2592,
261 scError = SYMCRYPT_INCOMPATIBLE_FORMAT;
264 scError = SYMCRYPT_INVALID_ARGUMENT;
283 if( scError != SYMCRYPT_NO_ERROR )
288 switch( mlDsakeyFormat )
300 scError = SYMCRYPT_INVALID_ARGUMENT;
319 if( scError != SYMCRYPT_NO_ERROR )
352 pkMlDsakey->pParams = pInternalParams;
353 pkMlDsakey->cbTotalSize =
cbKey;
362 pbCurrent += cbRowVector;
366 pbCurrent += cbColVector;
369 pbCurrent += cbRowVector;
372 pbCurrent += cbRowVector;
402 for(
UINT8 i = 0;
i < pvTmp->nElems; ++
i)
640 pvVector->nElems =
nElems;
662 memcpy( pvDst, pvSrc, pvSrc->cbTotalSize );
671 for(
UINT32 i = 0;
i < pvDst->nElems; ++
i )
692 for(
UINT32 i = 0;
i < pvSrc1->nElems; ++
i )
716 for(
UINT32 i = 0;
i < pvSrc1->nElems; ++
i )
736 for(
UINT32 i = 0;
i < pvSrc1->nElems; ++
i )
751 for(
UINT32 i = 0;
i < pvSrc->nElems; ++
i )
762 for(
UINT32 i = 0;
i < pvSrc->nElems; ++
i )
786 pMatrix->nRows =
nRows;
787 pMatrix->nCols =
nCols;
820 for(
UINT32 i = 0;
i < pmSrc1->nRows; ++
i )
825 for(
UINT32 j = 0;
j < pmSrc1->nCols; ++
j )
861 shakeBytes[2] &= 0x7F;
883 memcpy( rejNttSeed, pbPublicSeed, cbPublicSeed );
885 for(
UINT8 i = 0;
i < pmA->nRows; ++
i )
887 for(
UINT8 j = 0;
j < pmA->nCols; ++
j )
892 #pragma prefast( suppress: 6385, "False warning - reading invalid data from rejNttSeed" );
912 UINT8 halfByteDiv5 = (
UINT8) ( ( halfByte * 13 ) >> 6 );
913 UINT8 halfByteMod5 = halfByte - (5 * halfByteDiv5);
914 return 2 - halfByteMod5;
929 PCBYTE pbRejBoundedPolySeed,
930 SIZE_T cbRejBoundedPolySeed,
979 PCBYTE pbPrivateVectorSeed,
980 SIZE_T cbPrivateVectorSeed,
993 memcpy( rejBoundedPolySeed, pbPrivateVectorSeed, cbPrivateVectorSeed );
1005 #pragma prefast( suppress: 6385, "False warning - reading invalid data from rejBoundedPolySeed" );
1049 powersOfNegativeOne >>= 1;
1076 BYTE shakeOutput[20 * 32];
1079 for(
UINT16 i = 0;
i < pvMask->nElems; ++
i)
1115 for(
UINT32 i = 0;
i < pvDst->nElems; ++
i )
1124 *nBitsSet += peDst->
coeffs[
j];
1142 UINT32 r0PrimeGtZeroMask;
1143 UINT32 positiveOffsetCoeff;
1144 UINT32 negativeOffsetCoeff;
1146 for(
UINT32 i = 0;
i < pvHint->nElems; ++
i)
1179 hintIsZeroMask = peHint->
coeffs[
j] - 1;
1185 positiveOffsetCoeff = tmpMask & (
r1 + 1);
1190 negativeOffsetCoeff = ( tmpMask & (pParams->
commitmentModulus - 1) ) | ( ~tmpMask & (
r1 - 1 ) );
1193 r1 &= hintIsZeroMask;
1194 positiveOffsetCoeff &= ~hintIsZeroMask & r0PrimeGtZeroMask;
1195 negativeOffsetCoeff &= ~hintIsZeroMask & ~r0PrimeGtZeroMask;
1203 peCommitment->
coeffs[
j] =
r1 | positiveOffsetCoeff | negativeOffsetCoeff;
1222 if( cbDst != cbEncodedKey )
1224 scError = SYMCRYPT_INVALID_ARGUMENT;
1229 if( pTemps ==
NULL )
1231 scError = SYMCRYPT_MEMORY_ALLOCATION_FAILURE;
1280 if( cbSrc != pkMlDsakey->pParams->cbEncodedPublicKey )
1282 scError = SYMCRYPT_WRONG_KEY_SIZE;
1290 if( pTemps ==
NULL )
1292 scError = SYMCRYPT_MEMORY_ALLOCATION_FAILURE;
1297 if( pkMlDsakey->hasRootSeed )
1300 pkMlDsakey->hasRootSeed =
FALSE;
1303 if( pkMlDsakey->hasPrivateKey )
1309 pkMlDsakey->hasPrivateKey =
FALSE;
1315 pShakeState = &(pTemps->shake256State);
1320 for(
UINT32 i = 0;
i < pkMlDsakey->pvt1->nElems; ++
i )
1322 memcpy( pTemps->pbScratch, pbCurr, cbEncodedPoly );
1331 if( scError != SYMCRYPT_NO_ERROR )
1338 pbCurr += cbEncodedPoly;
1346 pkMlDsakey->publicSeed,
1353 if( pTemps !=
NULL )
1375 if( !pkMlDsakey->hasPrivateKey )
1377 scError = SYMCRYPT_INCOMPATIBLE_FORMAT;
1381 if( cbDst != cbEncodedKey )
1383 scError = SYMCRYPT_INVALID_ARGUMENT;
1388 if( pTemps ==
NULL )
1390 scError = SYMCRYPT_MEMORY_ALLOCATION_FAILURE;
1474 if( cbSrc != pkMlDsakey->pParams->cbEncodedPrivateKey )
1476 scError = SYMCRYPT_WRONG_KEY_SIZE;
1486 if( pTemps ==
NULL )
1488 scError = SYMCRYPT_MEMORY_ALLOCATION_FAILURE;
1502 PBYTE pbEncodedPubKeyTmp = pTemps->pbScratch;
1505 pkMlDsakey->hasRootSeed =
FALSE;
1506 pkMlDsakey->hasPrivateKey =
FALSE;
1526 if( scError != SYMCRYPT_NO_ERROR )
1538 if( scError != SYMCRYPT_NO_ERROR )
1549 if( scError != SYMCRYPT_NO_ERROR )
1572 if(
memcmp( pkMlDsakey->pvt0, pvt0Tmp, pvt0Tmp->cbTotalSize ) != 0 )
1574 scError = SYMCRYPT_INVALID_BLOB;
1583 if( scError != SYMCRYPT_NO_ERROR )
1593 pkMlDsakey->publicKeyHash,
1598 scError = SYMCRYPT_INVALID_BLOB;
1602 pkMlDsakey->hasPrivateKey =
TRUE;
1605 if( pTemps !=
NULL )
1611 if( scError != SYMCRYPT_NO_ERROR )
1627 PBYTE pbCommitmentHash,
1641 memcpy( pbCurr, pbCommitmentHash, cbCommitmentHash );
1642 pbCurr += cbCommitmentHash;
1653 pbCurr += cbEncodedHint;
1665 PBYTE pbCommitmentHash,
1674 scError = SYMCRYPT_WRONG_DATA_SIZE;
1682 memcpy( pbCommitmentHash, pbSig, cbCommitmentHash );
1683 pbCurr += cbCommitmentHash;
1695 if( scError != SYMCRYPT_NO_ERROR )
1715 for(
UINT32 i = 0;
i < pvSrc->nElems; ++
i )
1722 if( peElement->
coeffs[
j] != 0 )
1751 for(
UINT32 i = 0;
i < pvDst->nElems; ++
i )
1759 if( ( maxIndex <
index) ||
1763 scError = SYMCRYPT_SIGNATURE_VERIFICATION_FAILURE;
1768 while(
index < maxIndex )
1773 scError = SYMCRYPT_SIGNATURE_VERIFICATION_FAILURE;
1784 if(
pbSrc[leftover] != 0 )
1787 scError = SYMCRYPT_SIGNATURE_VERIFICATION_FAILURE;
1809 SIZE_T cbHashExpected = 0;
1825 scError = SYMCRYPT_INVALID_ARGUMENT;
1834 if( (!fIsXof && cbHash != cbHashExpected ) ||
1835 ( cbHash < pParams->cbCommitmentHash ) )
1837 scError = SYMCRYPT_INVALID_ARGUMENT;
1886 curr = (curr &
~mask) | ((curr * -1) &
mask);
1904 for(
UINT32 i = 0;
i < pvSrc->nElems;
i++ )
1950 UINT32 rdiv128 = (
r + 127) >> 7;
1984 for(
UINT32 i = 0;
i < pvSrc->nElems;
i++)
2007 for(
UINT32 i = 0;
i < pvSrc->nElems;
i++)
2068 for(
UINT32 i = 0;
i < pvSrc->nElems;
i++)
2098 UINT32 nBitsPerCoefficient,
2099 UINT32 signedCoefficientBound,
2106 UINT32 nBitsInCoefficient;
2111 UINT32 nBitsInAccumulator = 0;
2115 nBitsInCoefficient = nBitsPerCoefficient;
2141 nBitsToEncode =
SYMCRYPT_MIN( nBitsInCoefficient, 32 - nBitsInAccumulator );
2143 bitsToEncode =
coefficient & ( ( 1UL << nBitsToEncode ) - 1 );
2145 nBitsInCoefficient -= nBitsToEncode;
2147 accumulator |= ( bitsToEncode << nBitsInAccumulator );
2148 nBitsInAccumulator += nBitsToEncode;
2149 if(nBitsInAccumulator == 32)
2154 nBitsInAccumulator = 0;
2156 }
while( nBitsInCoefficient > 0 );
2168 UINT32 nBitsPerCoefficient,
2169 UINT32 signedCoefficientBound,
2176 UINT32 nBitsInCoefficient;
2181 UINT32 nBitsInAccumulator = 0;
2186 nBitsInCoefficient = 0;
2191 if(nBitsInAccumulator == 0)
2195 nBitsInAccumulator = 32;
2198 nBitsToDecode =
SYMCRYPT_MIN(nBitsPerCoefficient-nBitsInCoefficient, nBitsInAccumulator);
2201 bitsToDecode = accumulator & ((1UL<<nBitsToDecode)-1);
2202 accumulator >>= nBitsToDecode;
2203 nBitsInAccumulator -= nBitsToDecode;
2205 coefficient |= (bitsToDecode << nBitsInCoefficient);
2206 nBitsInCoefficient += nBitsToDecode;
2207 }
while( nBitsPerCoefficient > nBitsInCoefficient );
2213 if( ( signedCoefficientBound != 0 ) && ( (
UINT32)
coefficient > 2 * signedCoefficientBound ) )
2222 return SYMCRYPT_INVALID_BLOB;
2229 if( signedCoefficientBound != 0 )
2241 return SYMCRYPT_NO_ERROR;
2249 UINT32 nBitsPerCoefficient,
2250 UINT32 signedCoefficientBound,
2256 for(
UINT32 i = 0;
i < pvSrc->nElems; ++
i )
2262 nBitsPerCoefficient,
2263 signedCoefficientBound,
2266 pbCurr += cbEncodedPoly;
2277 UINT32 nBitsPerCoefficient,
2278 UINT32 signedCoefficientBound,
2285 for(
UINT32 i = 0;
i < pvDst->nElems; ++
i )
2291 nBitsPerCoefficient,
2292 signedCoefficientBound,
2294 if( scError != SYMCRYPT_NO_ERROR )
2301 pbCurr += cbEncodedPoly;
2333 if( pbBuffer ==
NULL )
2389 pTemporaries->pbScratch = pbCurrent;
2397 return pTemporaries;
2408 SymCryptWipe( pTemporaries, pTemporaries->cbTotalSize );
_Tp _STLP_CALL norm(const complex< _Tp > &__z)
COMPILER_DEPENDENT_UINT64 UINT64
static void cleanup(void)
_ACRTIMP int __cdecl memcmp(const void *, const void *, size_t)
static const uint32_t k[]
GLdouble GLdouble GLdouble r
GLenum GLenum const GLfloat * coeffs
GLboolean GLboolean GLboolean b
GLboolean GLboolean GLboolean GLboolean a
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)
#define memcpy(s1, s2, n)
_Use_decl_annotations_ VOID SYMCRYPT_CALL SymCryptMlDsaPolyElementEncode(PCSYMCRYPT_MLDSA_POLYELEMENT peSrc, UINT32 nBitsPerCoefficient, UINT32 signedCoefficientBound, PBYTE pbDst)
UINT32 SYMCRYPT_CALL SymCryptMlDsaModSub(UINT32 a, UINT32 b)
_Use_decl_annotations_ SYMCRYPT_ERROR SYMCRYPT_CALL SymCryptMlDsaSkEncode(PCSYMCRYPT_MLDSAKEY pkMlDsakey, PBYTE pbDst, SIZE_T cbDst)
_Use_decl_annotations_ SYMCRYPT_ERROR SYMCRYPT_CALL SymCryptMlDsaGetInternalParamsFromParams(SYMCRYPT_MLDSA_PARAMS params, PCSYMCRYPT_MLDSA_INTERNAL_PARAMS *pInternalParams)
struct _SYMCRYPT_HASH_OID_MAPPING * PSYMCRYPT_HASH_OID_MAPPING
_Use_decl_annotations_ VOID SYMCRYPT_CALL SymCryptMlDsaVectorSetZero(PSYMCRYPT_MLDSA_VECTOR pvDst)
_Use_decl_annotations_ FORCEINLINE VOID SYMCRYPT_CALL SymCryptMlDsaDecompose(PCSYMCRYPT_MLDSA_INTERNAL_PARAMS pParams, UINT32 r, UINT32 *puR1, UINT32 *puR0)
_Use_decl_annotations_ VOID SYMCRYPT_CALL SymCryptMlDsaVectorEncode(PCSYMCRYPT_MLDSA_VECTOR pvSrc, UINT32 nBitsPerCoefficient, UINT32 signedCoefficientBound, PBYTE pbDst)
#define SYMCRYPT_MLDSA_Q_INV
#define SYMCRYPT_POWER2ROUND_LOW_ORDER_BITS
#define SYMCRYPT_MLDSA_REJNTTPOLY_SEED_SIZE
FORCEINLINE UINT32 SYMCRYPT_CALL SymCryptMlDsaSignedCoefficientModQ(INT32 coefficient)
_Use_decl_annotations_ VOID SYMCRYPT_CALL SymCryptMlDsaMatrixVectorMontMul(PCSYMCRYPT_MLDSA_MATRIX pmSrc1, PCSYMCRYPT_MLDSA_VECTOR pvSrc2, PSYMCRYPT_MLDSA_VECTOR pvDst, PSYMCRYPT_MLDSA_POLYELEMENT peTmp)
_Use_decl_annotations_ VOID SYMCRYPT_CALL SymCryptMlDsaExpandS(PCSYMCRYPT_MLDSA_INTERNAL_PARAMS pParams, PCBYTE pbPrivateVectorSeed, SIZE_T cbPrivateVectorSeed, PSYMCRYPT_MLDSA_VECTOR pvs1, PSYMCRYPT_MLDSA_VECTOR pvs2)
_Use_decl_annotations_ VOID SYMCRYPT_CALL SymCryptMlDsaPolyElementSub(PCSYMCRYPT_MLDSA_POLYELEMENT peSrc1, PCSYMCRYPT_MLDSA_POLYELEMENT peSrc2, PSYMCRYPT_MLDSA_POLYELEMENT peDst)
_Use_decl_annotations_ VOID SYMCRYPT_CALL SymCryptMlDsaPolyElementINTT(PSYMCRYPT_MLDSA_POLYELEMENT peSrc)
_Use_decl_annotations_ SYMCRYPT_ERROR SYMCRYPT_CALL SymCryptMlDsaSizeofKeyFormatFromParams(SYMCRYPT_MLDSA_PARAMS params, SYMCRYPT_MLDSAKEY_FORMAT mlDsakeyFormat, SIZE_T *pcbKeyFormat)
SYMCRYPT_ERROR SYMCRYPT_CALL SymCryptMlDsaVectorDecode(_In_reads_bytes_(pvDst->nElems *nBitsPerCoefficient *(SYMCRYPT_MLWE_POLYNOMIAL_COEFFICIENTS/8)) PCBYTE pbSrc, UINT32 nBitsPerCoefficient, UINT32 signedCoefficientBound, _Inout_ PSYMCRYPT_MLDSA_VECTOR pvDst)
_Use_decl_annotations_ SYMCRYPT_ERROR SYMCRYPT_CALL SymCryptMlDsaHintBitUnpack(PCSYMCRYPT_MLDSA_INTERNAL_PARAMS pParams, PCBYTE pbSrc, PSYMCRYPT_MLDSA_VECTOR pvDst)
_Use_decl_annotations_ VOID SYMCRYPT_CALL SymCryptMlDsaVectorAdd(PCSYMCRYPT_MLDSA_VECTOR pvSrc1, PCSYMCRYPT_MLDSA_VECTOR pvSrc2, PSYMCRYPT_MLDSA_VECTOR pvDst)
#define SYMCRYPT_MLDSA_RSQR
_Use_decl_annotations_ PSYMCRYPT_MLDSA_MATRIX SYMCRYPT_CALL SymCryptMlDsaMatrixCreate(PBYTE pbBuffer, UINT32 cbBuffer, UINT8 nRows, UINT8 nCols)
UINT32 SYMCRYPT_CALL SymCryptMlDsaModAdd(UINT32 a, UINT32 b)
const UINT32 MLDSA_NEGATIVE_ZETA_BITREV_TIMES_R[SYMCRYPT_MLWE_POLYNOMIAL_COEFFICIENTS]
_Use_decl_annotations_ SYMCRYPT_ERROR SYMCRYPT_CALL SymCryptMlDsaSkDecode(PCBYTE pbSrc, SIZE_T cbSrc, UINT32 flags, PSYMCRYPT_MLDSAKEY pkMlDsakey)
const UINT32 MLDSA_ZETA_BITREV_TIMES_R[SYMCRYPT_MLWE_POLYNOMIAL_COEFFICIENTS]
UINT32 SYMCRYPT_CALL SymCryptMlDsaMontMul(UINT32 a, UINT32 b)
_Use_decl_annotations_ VOID SYMCRYPT_CALL SymCryptMlDsaVectorPower2Round(PCSYMCRYPT_MLDSA_VECTOR pvSrc, PSYMCRYPT_MLDSA_VECTOR pvDst1, PSYMCRYPT_MLDSA_VECTOR pvDst0)
#define SYMCRYPT_MLDSA_REJBOUNDEDPOLY_SEED_SIZE
_Use_decl_annotations_ VOID SYMCRYPT_CALL SymCryptMlDsaPower2Round(UINT32 r, UINT32 *puR1, UINT32 *puR0)
_Use_decl_annotations_ PSYMCRYPT_MLDSA_INTERNAL_COMPUTATION_TEMPORARIES SYMCRYPT_CALL SymCryptMlDsaTemporariesAllocateAndInitialize(PCSYMCRYPT_MLDSA_INTERNAL_PARAMS pParams, UINT32 nRowVectors, UINT32 nColVectors, UINT32 nPolyElements, UINT32 cbScratch)
_Use_decl_annotations_ VOID SYMCRYPT_CALL SymCryptMlDsaRejNttPoly(PCBYTE pbRejNttPolySeed, SIZE_T cbRejNttPolySeed, PSYMCRYPT_MLDSA_POLYELEMENT peDst)
_Use_decl_annotations_ VOID SYMCRYPT_CALL SymCryptMlDsaVectorPolyElementMontMul(PCSYMCRYPT_MLDSA_VECTOR pvSrc1, PCSYMCRYPT_MLDSA_POLYELEMENT peSrc2, PSYMCRYPT_MLDSA_VECTOR pvDst)
_Use_decl_annotations_ VOID SYMCRYPT_CALL SymCryptMlDsaExpandMask(PCSYMCRYPT_MLDSA_INTERNAL_PARAMS pParams, PSYMCRYPT_SHAKE256_STATE pShakeState, PCBYTE pbPrivateRandom, SIZE_T cbPrivateRandom, UINT16 counter, PSYMCRYPT_MLDSA_VECTOR pvMask)
_Use_decl_annotations_ SYMCRYPT_ERROR SYMCRYPT_CALL SymCryptMlDsaPkDecode(PCBYTE pbSrc, SIZE_T cbSrc, UINT32 flags, PSYMCRYPT_MLDSAKEY pkMlDsakey)
_Use_decl_annotations_ VOID SYMCRYPT_CALL SymCryptMlDsaTemporariesFree(PSYMCRYPT_MLDSA_INTERNAL_COMPUTATION_TEMPORARIES pTemporaries)
const SYMCRYPT_HASH_OID_MAPPING g_hashOidMap[]
_Use_decl_annotations_ VOID SYMCRYPT_CALL SymCryptMlDsaPolyElementPower2Round(PCSYMCRYPT_MLDSA_POLYELEMENT peSrc, PSYMCRYPT_MLDSA_POLYELEMENT peDst1, PSYMCRYPT_MLDSA_POLYELEMENT peDst0)
_Use_decl_annotations_ VOID SYMCRYPT_CALL SymCryptMlDsakeyComputeT(PCSYMCRYPT_MLDSA_MATRIX pmA, PCSYMCRYPT_MLDSA_VECTOR pvs1, PCSYMCRYPT_MLDSA_VECTOR pvs2, PSYMCRYPT_MLDSA_VECTOR pvt0, PSYMCRYPT_MLDSA_VECTOR pvt1, PSYMCRYPT_MLDSA_VECTOR pvTmp, PSYMCRYPT_MLDSA_POLYELEMENT peTmp)
_Use_decl_annotations_ VOID SYMCRYPT_CALL SymCryptMlDsaPolyElementSetZero(PSYMCRYPT_MLDSA_POLYELEMENT peDst)
const SYMCRYPT_MLDSA_INTERNAL_PARAMS SymCryptMlDsaInternalParams65
_Use_decl_annotations_ VOID SYMCRYPT_CALL SymCryptMlDsaHintBitPack(PCSYMCRYPT_MLDSA_INTERNAL_PARAMS pParams, PCSYMCRYPT_MLDSA_VECTOR pvSrc, PBYTE pbDst)
_Use_decl_annotations_ FORCEINLINE INT8 SYMCRYPT_CALL SymCryptMlDsaCoeffFromHalfByte(PCSYMCRYPT_MLDSA_INTERNAL_PARAMS pParams, UINT8 halfByte)
_Use_decl_annotations_ SYMCRYPT_ERROR SYMCRYPT_CALL SymCryptMlDsaPolyElementDecode(PCBYTE pbSrc, UINT32 nBitsPerCoefficient, UINT32 signedCoefficientBound, PSYMCRYPT_MLDSA_POLYELEMENT peDst)
_Use_decl_annotations_ VOID SYMCRYPT_CALL SymCryptMlDsaVectorCopy(PCSYMCRYPT_MLDSA_VECTOR pvSrc, PSYMCRYPT_MLDSA_VECTOR pvDst)
_Use_decl_annotations_ VOID SYMCRYPT_CALL SymCryptMlDsaPolyElementAdd(PCSYMCRYPT_MLDSA_POLYELEMENT peSrc1, PCSYMCRYPT_MLDSA_POLYELEMENT peSrc2, PSYMCRYPT_MLDSA_POLYELEMENT peDst)
_Use_decl_annotations_ SYMCRYPT_ERROR SYMCRYPT_CALL SymCryptMlDsaSigDecode(PCSYMCRYPT_MLDSA_INTERNAL_PARAMS pParams, PCBYTE pbSig, SIZE_T cbSig, PBYTE pbCommitmentHash, SIZE_T cbCommitmentHash, PSYMCRYPT_MLDSA_VECTOR pvResponse, PSYMCRYPT_MLDSA_VECTOR pvHint)
_Use_decl_annotations_ VOID SYMCRYPT_CALL SymCryptMlDsaUseHint(PCSYMCRYPT_MLDSA_INTERNAL_PARAMS pParams, PCSYMCRYPT_MLDSA_VECTOR pvHint, PSYMCRYPT_MLDSA_VECTOR pvCommitment)
_Use_decl_annotations_ UINT32 SYMCRYPT_CALL SymCryptMlDsaVectorInfinityNorm(PCSYMCRYPT_MLDSA_VECTOR pvSrc)
_Use_decl_annotations_ VOID SYMCRYPT_CALL SymCryptMlDsaPolyElementMulR(PSYMCRYPT_MLDSA_POLYELEMENT peSrc)
struct _SYMCRYPT_HASH_OID_MAPPING SYMCRYPT_HASH_OID_MAPPING
_Use_decl_annotations_ PSYMCRYPT_MLDSA_POLYELEMENT SYMCRYPT_CALL SymCryptMlDsaPolyElementCreate(PBYTE pbBuffer, SIZE_T cbBuffer)
_Use_decl_annotations_ VOID SYMCRYPT_CALL SymCryptMlDsaPolyElementMontMul(PCSYMCRYPT_MLDSA_POLYELEMENT peSrc1, PCSYMCRYPT_MLDSA_POLYELEMENT peSrc2, PSYMCRYPT_MLDSA_POLYELEMENT peDst)
FORCEINLINE INT32 SYMCRYPT_CALL SymCryptMlDsaModPlusMinus(UINT32 r, UINT32 modulus)
_Use_decl_annotations_ VOID SYMCRYPT_CALL SymCryptMlDsaSigEncode(PCSYMCRYPT_MLDSA_INTERNAL_PARAMS pParams, PBYTE pbCommitmentHash, SIZE_T cbCommitmentHash, PCSYMCRYPT_MLDSA_VECTOR pvResponse, PCSYMCRYPT_MLDSA_VECTOR pvHint, PBYTE pbDst, SIZE_T cbDst)
_Use_decl_annotations_ VOID SYMCRYPT_CALL SymCryptMlDsaVectorSub(PCSYMCRYPT_MLDSA_VECTOR pvSrc1, PCSYMCRYPT_MLDSA_VECTOR pvSrc2, PSYMCRYPT_MLDSA_VECTOR pvDst)
_Use_decl_annotations_ FORCEINLINE UINT32 SYMCRYPT_CALL SymCryptMlDsaPolyElementInfinityNorm(PCSYMCRYPT_MLDSA_POLYELEMENT peSrc)
_Use_decl_annotations_ VOID SYMCRYPT_CALL SymCryptMlDsaSampleInBall(PCSYMCRYPT_MLDSA_INTERNAL_PARAMS pParams, PCBYTE pbCommitmentHash, SIZE_T cbCommitmentHash, PSYMCRYPT_MLDSA_POLYELEMENT peChallenge)
_Use_decl_annotations_ PSYMCRYPT_MLDSAKEY SYMCRYPT_CALL SymCryptMlDsakeyInitialize(PCSYMCRYPT_MLDSA_INTERNAL_PARAMS pInternalParams, PBYTE pbKey, UINT32 cbKey)
_Use_decl_annotations_ PSYMCRYPT_MLDSA_VECTOR SYMCRYPT_CALL SymCryptMlDsaVectorCreate(PBYTE pbBuffer, UINT32 cbBuffer, UINT8 nElems)
_Use_decl_annotations_ VOID SYMCRYPT_CALL SymCryptMlDsaRejBoundedPoly(PCSYMCRYPT_MLDSA_INTERNAL_PARAMS pParams, PCBYTE pbRejBoundedPolySeed, SIZE_T cbRejBoundedPolySeed, PSYMCRYPT_MLDSA_POLYELEMENT peDst)
_Use_decl_annotations_ VOID SYMCRYPT_CALL SymCryptMlDsaExpandA(PCBYTE pbPublicSeed, SIZE_T cbPublicSeed, PSYMCRYPT_MLDSA_MATRIX pmA)
VOID SYMCRYPT_CALL SymCryptMlDsaVectorINTT(_Inout_ PSYMCRYPT_MLDSA_VECTOR pvSrc)
_Use_decl_annotations_ SYMCRYPT_ERROR SYMCRYPT_CALL SymCryptMlDsaSizeofSignatureFromParams(SYMCRYPT_MLDSA_PARAMS params, SIZE_T *pcbSignature)
const SYMCRYPT_MLDSA_INTERNAL_PARAMS SymCryptMlDsaInternalParams44
_Use_decl_annotations_ VOID SYMCRYPT_CALL SymCryptMlDsaVectorHighBits(PCSYMCRYPT_MLDSA_INTERNAL_PARAMS pParams, PCSYMCRYPT_MLDSA_VECTOR pvSrc, PSYMCRYPT_MLDSA_VECTOR pvDst)
_Use_decl_annotations_ SYMCRYPT_ERROR SYMCRYPT_CALL SymCryptMlDsaPkEncode(PCSYMCRYPT_MLDSAKEY pkMlDsakey, PBYTE pbDst, SIZE_T cbDst)
_Use_decl_annotations_ VOID SYMCRYPT_CALL SymCryptMlDsaVectorNTT(PSYMCRYPT_MLDSA_VECTOR pvSrc)
_Use_decl_annotations_ VOID SYMCRYPT_CALL SymCryptMlDsaMakeHint(PCSYMCRYPT_MLDSA_INTERNAL_PARAMS pParams, PSYMCRYPT_MLDSA_VECTOR pvWMinusCs2, PSYMCRYPT_MLDSA_VECTOR pvWMinusCs2PlusCt0, PSYMCRYPT_MLDSA_VECTOR pvDst, UINT32 *nBitsSet)
_Use_decl_annotations_ VOID SYMCRYPT_CALL SymCryptMlDsaPolyElementNTT(PSYMCRYPT_MLDSA_POLYELEMENT peSrc)
UINT32 SYMCRYPT_CALL SymCryptMlDsaMontReduce(UINT64 a)
_Use_decl_annotations_ VOID SYMCRYPT_CALL SymCryptMlDsaVectorLowBits(PCSYMCRYPT_MLDSA_INTERNAL_PARAMS pParams, PCSYMCRYPT_MLDSA_VECTOR pvSrc, PSYMCRYPT_MLDSA_VECTOR pvDst)
#define SYMCRYPT_MLDSA_INTT_FIXUP_TIMES_R
const SYMCRYPT_MLDSA_INTERNAL_PARAMS SymCryptMlDsaInternalParams87
_Use_decl_annotations_ SYMCRYPT_ERROR SYMCRYPT_CALL SymCryptHashMlDsaValidateHashAlgAndGetOid(PCSYMCRYPT_MLDSA_INTERNAL_PARAMS pParams, SYMCRYPT_PQDSA_HASH_ID hashAlg, SIZE_T cbHash, PCSYMCRYPT_OID *ppOid)
static double float double int float z1
#define _In_reads_bytes_(s)
#define _Use_decl_annotations_
#define _Analysis_assume_
#define UNREFERENCED_PARAMETER(P)
const SYMCRYPT_HASH SymCryptSha3_384Algorithm_default
#define SYMCRYPT_MLWE_POLYNOMIAL_COEFFICIENTS
const SYMCRYPT_HASH SymCryptSha512_256Algorithm_default
const SYMCRYPT_HASH SymCryptSha256Algorithm_default
const SYMCRYPT_HASH SymCryptSha512Algorithm_default
const SYMCRYPT_HASH SymCryptSha3_512Algorithm_default
const SYMCRYPT_HASH SymCryptShake128HashAlgorithm_default
const SYMCRYPT_HASH SymCryptSha3_256Algorithm_default
const SYMCRYPT_HASH SymCryptSha384Algorithm_default
const SYMCRYPT_HASH SymCryptShake256HashAlgorithm_default
#define SYMCRYPT_ARRAY_SIZE(_x)
#define SYMCRYPT_MLDSA_PRIVATE_VECTOR_SEED_SIZE
#define SYMCRYPT_MLDSA_PUBLIC_KEY_HASH_SIZE
#define SYMCRYPT_MLDSA_PUBLIC_SEED_SIZE
SYMCRYPT_MLDSA_INTERNAL_COMPUTATION_TEMPORARIES
#define SYMCRYPT_MLDSA_MATRIX_MAX_NCOLS
const SYMCRYPT_MLDSA_MATRIX * PCSYMCRYPT_MLDSA_MATRIX
UINT32 UINT32 UINT32 nPolyElements
#define SYMCRYPT_INTERNAL_MLDSA_SIZEOF_VECTOR(_nElems)
struct _SYMCRYPT_MLDSA_POLYELEMENT * PSYMCRYPT_MLDSA_POLYELEMENT
const SYMCRYPT_MLDSA_VECTOR * PCSYMCRYPT_MLDSA_VECTOR
#define SYMCRYPT_MLDSA_ROOT_SEED_SIZE
#define SYMCRYPT_INTERNAL_MLDSA_SIZEOF_ENCODED_VECTOR(_pVector, _nBitsPerCoeff)
#define SYMCRYPT_INTERNAL_MLDSA_MATRIX_ELEMENT(_row, _col, _pMatrix)
#define SYMCRYPT_INTERNAL_MLDSA_SIZEOF_MATRIX(_nRows, _nCols)
UINT32 UINT32 nColVectors
#define SYMCRYPT_MLDSA_VECTOR_MAX_LENGTH
UINT32 UINT32 UINT32 UINT32 cbScratch
#define SYMCRYPT_INTERNAL_MLDSA_SHORT_COEFFICIENT_ENCODE_DECODE(_val, _bound)
#define SYMCRYPT_INTERNAL_MLDSA_SIZEOF_KEY(_nRows, _nCols)
#define SYMCRYPT_INTERNAL_MLDSA_VECTOR_ELEMENT(_row, _pVector)
* PSYMCRYPT_MLDSA_INTERNAL_COMPUTATION_TEMPORARIES
#define SYMCRYPT_MLDSA_SUPPORTED_HASH_OID_SIZE
#define SYMCRYPT_MLDSA_PRIVATE_SIGNING_SEED_SIZE
#define SYMCRYPT_INTERNAL_MLDSA_SIZEOF_POLYELEMENT
#define SYMCRYPT_MLDSA_R_LOG2
#define SYMCRYPT_MLDSA_MATRIX_MAX_NROWS
const PCSYMCRYPT_HASH pHashAlgorithm
SYMCRYPT_PQDSA_HASH_ID hashId
UINT8 maskCoefficientRangeLog2
UINT32 commitmentRoundingRange
UINT32 cbEncodedPublicKey
UINT8 encodedCoefficientBitLength
UINT32 cbEncodedSignature
UINT32 cbEncodedPrivateKey
UINT8 nChallengeNonZeroCoeffs
UINT32 coeffs[SYMCRYPT_MLWE_POLYNOMIAL_COEFFICIENTS]
#define SYMCRYPT_ASSERT(_x)
VOID SYMCRYPT_CALL SymCryptShake256(_In_reads_(cbData) PCBYTE pbData, SIZE_T cbData, _Out_writes_(cbResult) PBYTE pbResult, SIZE_T cbResult)
@ SYMCRYPT_MLDSA_PARAMS_MLDSA44
@ SYMCRYPT_MLDSA_PARAMS_MLDSA65
@ SYMCRYPT_MLDSA_PARAMS_NULL
@ SYMCRYPT_MLDSA_PARAMS_MLDSA87
#define SYMCRYPT_SHAKE256_RESULT_SIZE
VOID SYMCRYPT_CALL SymCryptShake128Append(_Inout_ PSYMCRYPT_SHAKE128_STATE pState, _In_reads_(cbData) PCBYTE pbData, SIZE_T cbData)
@ SYMCRYPT_MLDSAKEY_FORMAT_PRIVATE_KEY
@ SYMCRYPT_MLDSAKEY_FORMAT_PRIVATE_SEED
@ SYMCRYPT_MLDSAKEY_FORMAT_PUBLIC_KEY
FORCEINLINE VOID SYMCRYPT_CALL SymCryptWipeKnownSize(_Out_writes_bytes_(cbData) PVOID pbData, SIZE_T cbData)
#define SYMCRYPT_MLDSA_SIGNATURE_SIZE_MLDSA44
VOID SYMCRYPT_CALL SymCryptShake128Init(_Out_ PSYMCRYPT_SHAKE128_STATE pState)
#define SYMCRYPT_STORE_LSBFIRST16(p, v)
VOID SYMCRYPT_CALL SymCryptWipe(_Out_writes_bytes_(cbData) PVOID pbData, SIZE_T cbData)
enum _SYMCRYPT_PQDSA_HASH_ID SYMCRYPT_PQDSA_HASH_ID
#define SYMCRYPT_LOAD_LSBFIRST64(p)
VOID SYMCRYPT_CALL SymCryptShake256Result(_Inout_ PSYMCRYPT_SHAKE256_STATE pState, _Out_writes_(SYMCRYPT_SHAKE256_RESULT_SIZE) PBYTE pbResult)
@ SYMCRYPT_PQDSA_HASH_ID_SHA512
@ SYMCRYPT_PQDSA_HASH_ID_SHA256
@ SYMCRYPT_PQDSA_HASH_ID_SHA3_512
@ SYMCRYPT_PQDSA_HASH_ID_SHAKE256
@ SYMCRYPT_PQDSA_HASH_ID_SHA3_384
@ SYMCRYPT_PQDSA_HASH_ID_SHA384
@ SYMCRYPT_PQDSA_HASH_ID_SHA512_256
@ SYMCRYPT_PQDSA_HASH_ID_SHA3_256
@ SYMCRYPT_PQDSA_HASH_ID_SHAKE128
VOID SYMCRYPT_CALL SymCryptShake256Append(_Inout_ PSYMCRYPT_SHAKE256_STATE pState, _In_reads_(cbData) PCBYTE pbData, SIZE_T cbData)
#define SYMCRYPT_MLDSA_SIGNATURE_SIZE_MLDSA65
VOID SYMCRYPT_CALL SymCryptShake256Extract(_Inout_ PSYMCRYPT_SHAKE256_STATE pState, _Out_writes_(cbResult) PBYTE pbResult, SIZE_T cbResult, BOOLEAN bWipe)
#define SYMCRYPT_LOAD_LSBFIRST32(p)
VOID SYMCRYPT_CALL SymCryptShake256Init(_Out_ PSYMCRYPT_SHAKE256_STATE pState)
VOID SYMCRYPT_CALL SymCryptShake128Extract(_Inout_ PSYMCRYPT_SHAKE128_STATE pState, _Out_writes_(cbResult) PBYTE pbResult, SIZE_T cbResult, BOOLEAN bWipe)
#define SYMCRYPT_MLDSA_SIGNATURE_SIZE_MLDSA87
#define SYMCRYPT_STORE_LSBFIRST32(p, v)
enum _SYMCRYPT_MLDSA_PARAMS SYMCRYPT_MLDSA_PARAMS
enum _SYMCRYPT_MLDSAKEY_FORMAT SYMCRYPT_MLDSAKEY_FORMAT
#define SYMCRYPT_MASK32_NONZERO(_v)
#define SYMCRYPT_SHA512_256_OID_COUNT
const SYMCRYPT_MLDSAKEY * PCSYMCRYPT_MLDSAKEY
#define SYMCRYPT_MASK32_EQ(_a, _b)
#define SYMCRYPT_SHA3_256_OID_COUNT
const SYMCRYPT_OID SymCryptSha3_384OidList[SYMCRYPT_SHA3_384_OID_COUNT]
const SYMCRYPT_OID SymCryptShake256OidList[SYMCRYPT_SHAKE256_OID_COUNT]
#define SYMCRYPT_SHAKE256_OID_COUNT
SYMCRYPT_MAGIC_FIELD SYMCRYPT_SHAKE256_STATE
const SYMCRYPT_OID SymCryptSha384OidList[SYMCRYPT_SHA384_OID_COUNT]
struct _SYMCRYPT_MLDSAKEY SYMCRYPT_MLDSAKEY
#define SYMCRYPT_SHA384_OID_COUNT
const SYMCRYPT_OID SymCryptSha512OidList[SYMCRYPT_SHA512_OID_COUNT]
const SYMCRYPT_HASH * PCSYMCRYPT_HASH
#define SYMCRYPT_MIN(_a, _b)
#define SYMCRYPT_SHA3_384_OID_COUNT
const SYMCRYPT_OID SymCryptSha3_256OidList[SYMCRYPT_SHA3_256_OID_COUNT]
#define SYMCRYPT_SET_MAGIC(p)
const SYMCRYPT_OID SymCryptSha512_256OidList[SYMCRYPT_SHA512_256_OID_COUNT]
#define SYMCRYPT_SHA512_OID_COUNT
#define SYMCRYPT_SHA3_512_OID_COUNT
SYMCRYPT_MAGIC_FIELD SYMCRYPT_SHAKE128_STATE
SYMCRYPT_MLDSAKEY * PSYMCRYPT_MLDSAKEY
const SYMCRYPT_OID SymCryptSha256OidList[SYMCRYPT_SHA256_OID_COUNT]
#define SYMCRYPT_MASK32_ZERO(_v)
#define SYMCRYPT_MASK32_LT(_a, _b)
#define SYMCRYPT_CHECK_MAGIC(p)
const SYMCRYPT_OID SymCryptShake128OidList[SYMCRYPT_SHAKE128_OID_COUNT]
#define SYMCRYPT_SHAKE128_OID_COUNT
SYMCRYPT_MAGIC_FIELD * PSYMCRYPT_SHAKE256_STATE
#define SYMCRYPT_SHA256_OID_COUNT
const SYMCRYPT_OID SymCryptSha3_512OidList[SYMCRYPT_SHA3_512_OID_COUNT]