11#define DLGROUP_MR_ITERATIONS (64)
24static const BYTE ggen[] = {
'g',
'g',
'e',
'n' };
233 pgDst->cbTotalSize = pgSrc->cbTotalSize;
234 pgDst->fHasPrimeQ = pgSrc->fHasPrimeQ;
236 pgDst->nBitsOfP = pgSrc->nBitsOfP;
237 pgDst->cbPrimeP = pgSrc->cbPrimeP;
238 pgDst->nDigitsOfP = pgSrc->nDigitsOfP;
239 pgDst->nMaxBitsOfP = pgSrc->nMaxBitsOfP;
241 pgDst->nBitsOfQ = pgSrc->nBitsOfQ;
242 pgDst->cbPrimeQ = pgSrc->cbPrimeQ;
243 pgDst->nDigitsOfQ = pgSrc->nDigitsOfQ;
244 pgDst->nMaxBitsOfQ = pgSrc->nMaxBitsOfQ;
246 pgDst->isSafePrimeGroup = pgSrc->isSafePrimeGroup;
247 pgDst->nMinBitsPriv = pgSrc->nMinBitsPriv;
248 pgDst->nDefaultBitsPriv = pgSrc->nDefaultBitsPriv;
250 pgDst->nBitsOfSeed = pgSrc->nBitsOfSeed;
251 pgDst->cbSeed = pgSrc->cbSeed;
253 pgDst->eFipsStandard = pgSrc->eFipsStandard;
254 pgDst->pHashAlgorithm = pgSrc->pHashAlgorithm;
255 pgDst->dwGenCounter = pgSrc->dwGenCounter;
256 pgDst->bIndexGenG = pgSrc->bIndexGenG;
257 pgDst->pbQ = pgSrc->pbQ;
271 pTrialDivisionContext,
310 pbTrHash = pbScratch;
311 pbHashExtra = pbTrHash + cbHash;
315 if (scError != SYMCRYPT_NO_ERROR)
325 scError = SYMCRYPT_FIPS_FAILURE;
334 if (scError != SYMCRYPT_NO_ERROR)
352 pbTrHash = pbScratch;
357 scError = SYMCRYPT_FIPS_FAILURE;
363 pbTrHash[0] &= ((
BYTE)0xff >> (dwShiftBits));
364 pbTrHash[0] |= ((
BYTE)0x01 << (7 - dwShiftBits));
369 if (scError != SYMCRYPT_NO_ERROR)
397 if (scError != SYMCRYPT_NO_ERROR)
426 pTrialDivisionContext,
466 PBYTE pbScratchInternal = 0;
467 SIZE_T cbScratchInternal = 0;
475 pbScratchInternal = pbScratch;
478 pbScratch += cbScratchInternal;
481 pbScratch += cbIntTwoQ;
484 pbScratch += cbIntTwoQ;
486 pbHashOutput = pbScratch;
489 pbTempSeed = pbScratch;
496 if (scError != SYMCRYPT_NO_ERROR)
509 scError = SYMCRYPT_FIPS_FAILURE;
524 while (cbWBytesLeft > 0)
532 scError = SYMCRYPT_FIPS_FAILURE;
541 if (scError != SYMCRYPT_NO_ERROR)
549 if (cbWBytesLeft >= cbHash)
552 memcpy(pbWCurr, pbHashOutput, cbHash );
557 memcpy(pbWCurr, pbHashOutput + cbHash - cbWBytesLeft, cbWBytesLeft );
567 if (scError != SYMCRYPT_NO_ERROR)
681 PBYTE pbScratchInternal = 0;
682 SIZE_T cbScratchInternal = 0;
688 pbScratchInternal = pbScratch;
694 pbScratch += cbScratchInternal;
707 scError = SYMCRYPT_INVALID_ARGUMENT;
722 scError = SYMCRYPT_INVALID_ARGUMENT;
733 pbScratch += cbState;
749 scError = SYMCRYPT_FIPS_FAILURE;
780 if (scError != SYMCRYPT_NO_ERROR)
860 SIZE_T cbScratchInternal = 0;
894 if (hashAlgorithm !=
NULL)
896 scError = SYMCRYPT_INVALID_ARGUMENT;
900 pDlgroup->eFipsStandard = fipsStandard;
905 if (hashAlgorithm ==
NULL)
907 scError = SYMCRYPT_INVALID_ARGUMENT;
911 pDlgroup->eFipsStandard = fipsStandard;
923 scError = SYMCRYPT_FIPS_FAILURE;
949 scError = SYMCRYPT_INVALID_ARGUMENT;
954 pDlgroup->pHashAlgorithm = hashAlgorithm;
973 scError = SYMCRYPT_MEMORY_ALLOCATION_FAILURE;
979 pbScratchInternal = pbScratch + cbDivTwoQ;
980 cbScratchInternal =
cbScratch - cbDivTwoQ;
984 if (pTrialDivisionContext ==
NULL)
986 scError = SYMCRYPT_MEMORY_ALLOCATION_FAILURE;
996 if (scError != SYMCRYPT_NO_ERROR)
1002 if ((
pDlgroup->nBitsOfSeed)%8 != 0)
1009 pTrialDivisionContext,
1014 cbScratchInternal );
1015 if (scError != SYMCRYPT_NO_ERROR)
1020 while (fPrimeQFound == 0);
1026 pTrialDivisionContext,
1031 cbScratchInternal );
1032 if (scError != SYMCRYPT_NO_ERROR)
1037 while (fPrimePFound == 0);
1063 if (scError != SYMCRYPT_NO_ERROR)
1069 if (pTrialDivisionContext!=
NULL)
1074 if (pbScratch!=
NULL)
1104 scError = SYMCRYPT_INVALID_ARGUMENT;
1121 if (safePrimeParams ==
NULL)
1123 scError = SYMCRYPT_INVALID_ARGUMENT;
1139 if (pbScratch==
NULL)
1141 scError = SYMCRYPT_MEMORY_ALLOCATION_FAILURE;
1180 if (scError!=SYMCRYPT_NO_ERROR)
1223 if (pbScratch!=
NULL)
1239 if ( pDlgroup1 == pDlgroup2 )
1241 fIsSameGroup =
TRUE;
1245 if ( (pDlgroup1->nBitsOfP != pDlgroup2->nBitsOfP) ||
1246 (pDlgroup1->nDigitsOfP != pDlgroup2->nDigitsOfP) ||
1253 fIsSameGroup =
TRUE;
1256 return fIsSameGroup;
1268 if (pcbPrimeP!=
NULL)
1273 if (pcbPrimeQ!=
NULL)
1298 PBYTE pbScratchInternal;
1299 SIZE_T cbScratchInternal;
1318 pbScratchInternal = pbScratch + cbTemp;
1348 if (safePrimeParams !=
NULL)
1354 scError = SYMCRYPT_INVALID_ARGUMENT;
1386 if (scError!=SYMCRYPT_NO_ERROR)
1429 SIZE_T cbScratchVerify = 0;
1443 ((pbGenG==
NULL)&&(cbGenG>0)) ||
1445 ((pbGenG==
NULL)&&(pbPrimeQ==
NULL)) ||
1448 scError = SYMCRYPT_INVALID_ARGUMENT;
1456 if ((pbPrimeQ ==
NULL)||
1463 scError = SYMCRYPT_AUTHENTICATION_FAILURE;
1509 if (pbScratch==
NULL)
1511 scError = SYMCRYPT_MEMORY_ALLOCATION_FAILURE;
1521 if (scError!=SYMCRYPT_NO_ERROR)
1530 scError = SYMCRYPT_INVALID_ARGUMENT;
1536 scError = SYMCRYPT_WRONG_KEY_SIZE;
1545 scError = SYMCRYPT_AUTHENTICATION_FAILURE;
1552 scError = SYMCRYPT_INVALID_ARGUMENT;
1584 if (pbPrimeQ !=
NULL)
1591 if (scError!=SYMCRYPT_NO_ERROR)
1600 scError = SYMCRYPT_INVALID_ARGUMENT;
1606 scError = SYMCRYPT_WRONG_KEY_SIZE;
1615 scError = SYMCRYPT_INVALID_ARGUMENT;
1632 if (scError!=SYMCRYPT_NO_ERROR)
1676 if (scError!=SYMCRYPT_NO_ERROR)
1682 if (scError!=SYMCRYPT_NO_ERROR)
1699 pDlgroup->eFipsStandard = fipsStandard;
1706 scError = SYMCRYPT_INVALID_ARGUMENT;
1713 pDlgroup->dwGenCounter = genCounter;
1741 if (scError!=SYMCRYPT_NO_ERROR)
1752 PBYTE pbScratchInternal = pbScratch;
1761 UINT32 fPrimeComputed = 0;
1762 UINT32 dwComputedCounter = 0;
1775 pbScratchInternal += cbDivTwoQ;
1776 cbScratchInternal -= cbDivTwoQ;
1781 pbScratchInternal += cbComputed;
1782 cbScratchInternal -= cbComputed;
1786 if (pTrialDivisionContext ==
NULL)
1788 scError = SYMCRYPT_MEMORY_ALLOCATION_FAILURE;
1795 pTrialDivisionContext,
1800 cbScratchInternal );
1801 if (scError != SYMCRYPT_NO_ERROR)
1803 scError = SYMCRYPT_AUTHENTICATION_FAILURE;
1809 scError = SYMCRYPT_AUTHENTICATION_FAILURE;
1814 pbScratchInternal -= cbComputed;
1815 cbScratchInternal += cbComputed;
1818 pbScratchInternal += cbComputed;
1819 cbScratchInternal -= cbComputed;
1826 pTrialDivisionContext,
1831 cbScratchInternal );
1832 if (scError != SYMCRYPT_NO_ERROR)
1834 scError = SYMCRYPT_AUTHENTICATION_FAILURE;
1840 scError = SYMCRYPT_AUTHENTICATION_FAILURE;
1847 pbScratchInternal -= cbComputed;
1848 cbScratchInternal += cbComputed;
1851 pbScratchInternal += cbComputed;
1852 cbScratchInternal -= cbComputed;
1854 pbScratchInternal += cbComputed;
1855 cbScratchInternal -= cbComputed;
1862 scError = SYMCRYPT_AUTHENTICATION_FAILURE;
1875 cbScratchInternal );
1879 scError = SYMCRYPT_AUTHENTICATION_FAILURE;
1886 if (pTrialDivisionContext!=
NULL)
1891 if (pbScratch!=
NULL)
1922 ((pbGenG==
NULL)&&(cbGenG>0)) ||
1926 scError = SYMCRYPT_INVALID_ARGUMENT;
1932 scError = SYMCRYPT_INVALID_BLOB;
1943 if (scError!=SYMCRYPT_NO_ERROR)
1956 if (scError!=SYMCRYPT_NO_ERROR)
1967 if (pbScratch==
NULL)
1969 scError = SYMCRYPT_MEMORY_ALLOCATION_FAILURE;
1981 if (scError!=SYMCRYPT_NO_ERROR)
1987 if (ppHashAlgorithm!=
NULL)
1991 *ppHashAlgorithm =
NULL;
1995 *ppHashAlgorithm =
pDlgroup->pHashAlgorithm;
2004 if (pGenCounter!=
NULL)
2006 *pGenCounter =
pDlgroup->dwGenCounter;
2010 if (pbScratch!=
NULL)
COMPILER_DEPENDENT_UINT64 UINT64
const PCSYMCRYPT_DLGROUP_DH_SAFEPRIME_PARAMS SymCryptNamedSafePrimeGroups[SYMCRYPT_DH_SAFEPRIME_GROUP_COUNT]
UINT32 SYMCRYPT_CALL SymCryptDlgroupCalculateBitsizeOfQ(UINT32 nBitsOfP)
VOID SYMCRYPT_CALL SymCryptDlgroupCopy(_In_ PCSYMCRYPT_DLGROUP pgSrc, _Out_ PSYMCRYPT_DLGROUP pgDst)
static const struct _DSA_NBITSOFQ_CUTOFFS g_nBitsOfQ_Cutoffs[]
SYMCRYPT_ERROR SYMCRYPT_CALL SymCryptDlgroupGenerate(_In_ PCSYMCRYPT_HASH hashAlgorithm, _In_ SYMCRYPT_DLGROUP_FIPS fipsStandard, _Inout_ PSYMCRYPT_DLGROUP pDlgroup)
VOID SYMCRYPT_CALL SymCryptDlgroupGetSizes(_In_ PCSYMCRYPT_DLGROUP pDlgroup, _Out_ SIZE_T *pcbPrimeP, _Out_ SIZE_T *pcbPrimeQ, _Out_ SIZE_T *pcbGenG, _Out_ SIZE_T *pcbSeed)
SYMCRYPT_ERROR SYMCRYPT_CALL SymCryptDlgroupGeneratePrimeP_FIPS(_In_ PSYMCRYPT_DLGROUP pDlgroup, _In_ PSYMCRYPT_DIVISOR pdDivTwoQ, _In_ UINT32 dwMaxCounter, _In_ PCSYMCRYPT_TRIALDIVISION_CONTEXT pTrialDivisionContext, _Out_ PUINT32 pfPrimePFound, _Out_ PSYMCRYPT_INT piP, _Out_ PUINT32 pdwCounter, _Out_writes_bytes_(cbScratch) PBYTE pbScratch, SIZE_T cbScratch)
SYMCRYPT_ERROR SYMCRYPT_CALL SymCryptDlgroupGeneratePrimeQ_FIPS(_In_ PSYMCRYPT_DLGROUP pDlgroup, _In_ PCSYMCRYPT_TRIALDIVISION_CONTEXT pTrialDivisionContext, _Out_ PUINT32 pfPrimeQFound, _Out_ PSYMCRYPT_INT piQ, _Out_ PSYMCRYPT_DIVISOR pdDivTwoQ, _Out_writes_bytes_(cbScratch) PBYTE pbScratch, SIZE_T cbScratch)
SYMCRYPT_ERROR SYMCRYPT_CALL SymCryptDlgroupGetValue(_In_ PCSYMCRYPT_DLGROUP pDlgroup, _Out_writes_bytes_(cbPrimeP) PBYTE pbPrimeP, SIZE_T cbPrimeP, _Out_writes_bytes_(cbPrimeQ) PBYTE pbPrimeQ, SIZE_T cbPrimeQ, _Out_writes_bytes_(cbGenG) PBYTE pbGenG, SIZE_T cbGenG, SYMCRYPT_NUMBER_FORMAT numFormat, _Out_ PCSYMCRYPT_HASH *ppHashAlgorithm, _Out_writes_bytes_(cbSeed) PBYTE pbSeed, SIZE_T cbSeed, _Out_ PUINT32 pGenCounter)
UINT32 SYMCRYPT_CALL SymCryptSizeofDlgroupFromBitsizes(UINT32 nBitsOfP, UINT32 nBitsOfQ)
#define DLGROUP_MR_ITERATIONS
VOID SYMCRYPT_CALL SymCryptDlgroupFree(_Out_ PSYMCRYPT_DLGROUP pgObj)
UINT32 SYMCRYPT_CALL SymCryptDlgroupScratchSpace_FIPS(UINT32 nBitsOfP, UINT32 nBitsOfQ, PCSYMCRYPT_HASH pHashAlgorithm)
SYMCRYPT_ERROR SYMCRYPT_CALL SymCryptDlgroupSetValue(_In_reads_bytes_(cbPrimeP) PCBYTE pbPrimeP, SIZE_T cbPrimeP, _In_reads_bytes_(cbPrimeQ) PCBYTE pbPrimeQ, SIZE_T cbPrimeQ, _In_reads_bytes_(cbGenG) PCBYTE pbGenG, SIZE_T cbGenG, SYMCRYPT_NUMBER_FORMAT numFormat, _In_opt_ PCSYMCRYPT_HASH pHashAlgorithm, _In_reads_bytes_(cbSeed) PCBYTE pbSeed, SIZE_T cbSeed, UINT32 genCounter, SYMCRYPT_DLGROUP_FIPS fipsStandard, _Inout_ PSYMCRYPT_DLGROUP pDlgroup)
SYMCRYPT_ERROR SYMCRYPT_CALL SymCryptDlgroupSetValueSafePrime(SYMCRYPT_DLGROUP_DH_SAFEPRIMETYPE dhSafePrimeType, _Inout_ PSYMCRYPT_DLGROUP pDlgroup)
SYMCRYPT_ERROR SYMCRYPT_CALL SymCryptDlgroupGenerateGenG_FIPS(_In_ PSYMCRYPT_DLGROUP pDlgroup, _Out_ PSYMCRYPT_MODELEMENT peG, _Out_writes_bytes_(cbScratch) PBYTE pbScratch, SIZE_T cbScratch)
PSYMCRYPT_DLGROUP SYMCRYPT_CALL SymCryptDlgroupCreate(_Out_writes_bytes_(cbBuffer) PBYTE pbBuffer, SIZE_T cbBuffer, UINT32 nBitsOfP, UINT32 nBitsOfQ)
BOOLEAN SYMCRYPT_CALL SymCryptDlgroupIsSame(_In_ PCSYMCRYPT_DLGROUP pDlgroup1, _In_ PCSYMCRYPT_DLGROUP pDlgroup2)
VOID SYMCRYPT_CALL SymCryptDlgroupWipe(_Out_ PSYMCRYPT_DLGROUP pgDst)
PSYMCRYPT_DLGROUP SYMCRYPT_CALL SymCryptDlgroupAllocate(UINT32 nBitsOfP, UINT32 nBitsOfQ)
SYMCRYPT_ERROR SYMCRYPT_CALL SymCryptDlgroupAutoCompleteNamedSafePrimeGroup(_Inout_ PSYMCRYPT_DLGROUP pDlgroup, _Out_writes_bytes_(cbScratch) PBYTE pbScratch, SIZE_T cbScratch)
static void cleanup(void)
GLuint GLuint GLsizei count
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
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)
#define _In_reads_bytes_(s)
#define _Out_writes_bytes_(s)
#define UNREFERENCED_PARAMETER(P)
#define SYMCRYPT_DH_SAFEPRIME_GROUP_COUNT
#define SYMCRYPT_ASSERT_ASYM_ALIGNED(_p)
#define SYMCRYPT_ARRAY_SIZE(_x)
UINT32 UINT32 UINT32 UINT32 cbScratch
@ SYMCRYPT_DLGROUP_DH_SAFEPRIMETYPE_NONE
#define SYMCRYPT_ASSERT(_x)
VOID SYMCRYPT_CALL SymCryptHashAppend(_In_ PCSYMCRYPT_HASH pHash, _Inout_updates_bytes_(pHash->stateSize) PVOID pState, _In_reads_(cbData) PCBYTE pbData, SIZE_T cbData)
@ SYMCRYPT_DLGROUP_FIPS_186_3
@ SYMCRYPT_DLGROUP_FIPS_186_2
@ SYMCRYPT_DLGROUP_FIPS_NONE
VOID SYMCRYPT_CALL SymCryptWipe(_Out_writes_bytes_(cbData) PVOID pbData, SIZE_T cbData)
VOID SYMCRYPT_CALL SymCryptHashInit(_In_ PCSYMCRYPT_HASH pHash, _Out_writes_bytes_(pHash->stateSize) PVOID pState)
enum _SYMCRYPT_DLGROUP_DH_SAFEPRIMETYPE SYMCRYPT_DLGROUP_DH_SAFEPRIMETYPE
SIZE_T SYMCRYPT_CALL SymCryptHashResultSize(_In_ PCSYMCRYPT_HASH pHash)
enum _SYMCRYPT_NUMBER_FORMAT SYMCRYPT_NUMBER_FORMAT
const PCSYMCRYPT_HASH SymCryptSha1Algorithm
VOID SYMCRYPT_CALL SymCryptXorBytes(_In_reads_(cbBytes) PCBYTE pbSrc1, _In_reads_(cbBytes) PCBYTE pbSrc2, _Out_writes_(cbBytes) PBYTE pbResult, SIZE_T cbBytes)
VOID SYMCRYPT_CALL SymCryptHash(_In_ PCSYMCRYPT_HASH pHash, _In_reads_(cbData) PCBYTE pbData, SIZE_T cbData, _Out_writes_(SYMCRYPT_MIN(cbResult, pHash->resultSize)) PBYTE pbResult, SIZE_T cbResult)
enum _SYMCRYPT_DLGROUP_FIPS SYMCRYPT_DLGROUP_FIPS
@ SYMCRYPT_NUMBER_FORMAT_MSB_FIRST
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)
SIZE_T SYMCRYPT_CALL SymCryptHashStateSize(_In_ PCSYMCRYPT_HASH pHash)
#define SYMCRYPT_DLGROUP_FIPS_LATEST
PCSYMCRYPT_DLGROUP pDlgroup
SYMCRYPT_MAGIC_FIELD SYMCRYPT_DLGROUP
#define SYMCRYPT_DLGROUP_MIN_BITSIZE_P
SYMCRYPT_MODELEMENT * PSYMCRYPT_MODELEMENT
const SYMCRYPT_HASH * PCSYMCRYPT_HASH
#define SYMCRYPT_MIN(_a, _b)
#define SYMCRYPT_MAX(_a, _b)
#define SYMCRYPT_SET_MAGIC(p)
SYMCRYPT_DLGROUP * PSYMCRYPT_DLGROUP
#define SYMCRYPT_ASYM_ALIGN_VALUE
#define SYMCRYPT_DLGROUP_MIN_BITSIZE_Q
const SYMCRYPT_MODULUS * PCSYMCRYPT_MODULUS
SYMCRYPT_DIVISOR * PSYMCRYPT_DIVISOR
SYMCRYPT_MODULUS * PSYMCRYPT_MODULUS
SYMCRYPT_INT * PSYMCRYPT_INT
#define SYMCRYPT_CHECK_MAGIC(p)
const SYMCRYPT_DLGROUP * PCSYMCRYPT_DLGROUP
PCSYMCRYPT_HASH pHashAlgorithm
PCSYMCRYPT_TRIALDIVISION_CONTEXT SYMCRYPT_CALL SymCryptCreateTrialDivisionContext(UINT32 nDigits)
UINT32 SYMCRYPT_CALL SymCryptIntGetValueLsbits32(_In_ PCSYMCRYPT_INT piSrc)
#define SYMCRYPT_SCRATCH_BYTES_FOR_INT_IS_PRIME(_nDigits)
UINT32 SYMCRYPT_CALL SymCryptIntMillerRabinPrimalityTest(_In_ PCSYMCRYPT_INT piSrc, UINT32 nBitsSrc, UINT32 nIterations, UINT32 flags, _Out_writes_bytes_(cbScratch) PBYTE pbScratch, SIZE_T cbScratch)
UINT32 SYMCRYPT_CALL SymCryptSizeofDivisorFromDigits(UINT32 nDigits)
UINT32 SYMCRYPT_CALL SymCryptSizeofModElementFromModulus(PCSYMCRYPT_MODULUS pmMod)
VOID SYMCRYPT_CALL SymCryptIntSetBits(_In_ PSYMCRYPT_INT piDst, UINT32 value, UINT32 iBit, UINT32 nBits)
VOID SYMCRYPT_CALL SymCryptIntShr1(UINT32 highestBit, _In_ PCSYMCRYPT_INT piSrc, _Out_ PSYMCRYPT_INT piDst)
PSYMCRYPT_DIVISOR SYMCRYPT_CALL SymCryptDivisorFromModulus(_In_ PSYMCRYPT_MODULUS pmSrc)
UINT32 SYMCRYPT_CALL SymCryptModElementIsZero(_In_ PCSYMCRYPT_MODULUS pmMod, _In_ PCSYMCRYPT_MODELEMENT peSrc)
UINT32 SymCryptDigitsFromBits(UINT32 nBits)
#define SYMCRYPT_SCRATCH_BYTES_FOR_INT_DIVMOD(_nSrcDigits, _nDivisorDigits)
UINT32 SYMCRYPT_CALL SymCryptModElementIsEqual(_In_ PCSYMCRYPT_MODULUS pmMod, _In_ PCSYMCRYPT_MODELEMENT peSrc1, _In_ PCSYMCRYPT_MODELEMENT peSrc2)
UINT32 SYMCRYPT_CALL SymCryptIntSubMixedSize(_In_ PCSYMCRYPT_INT piSrc1, _In_ PCSYMCRYPT_INT piSrc2, _Out_ PSYMCRYPT_INT piDst)
#define SYMCRYPT_SCRATCH_BYTES_FOR_INT_TO_MODULUS(_nDigits)
SYMCRYPT_ERROR SYMCRYPT_CALL SymCryptIntCopyMixedSize(_In_ PCSYMCRYPT_INT piSrc, _Out_ PSYMCRYPT_INT piDst)
SYMCRYPT_ERROR SYMCRYPT_CALL SymCryptModElementSetValue(_In_reads_bytes_(cbSrc) PCBYTE pbSrc, SIZE_T cbSrc, SYMCRYPT_NUMBER_FORMAT format, PCSYMCRYPT_MODULUS pmMod, _Out_ PSYMCRYPT_MODELEMENT peDst, _Out_writes_bytes_(cbScratch) PBYTE pbScratch, SIZE_T cbScratch)
VOID SYMCRYPT_CALL SymCryptModulusWipe(_Out_ PSYMCRYPT_MODULUS pmObj)
#define SYMCRYPT_SIZEOF_MODELEMENT_FROM_BITS(_bitsize)
SYMCRYPT_ERROR SYMCRYPT_CALL SymCryptModElementGetValue(PCSYMCRYPT_MODULUS pmMod, _In_ PCSYMCRYPT_MODELEMENT peSrc, _Out_writes_bytes_(cbDst) PBYTE pbDst, SIZE_T cbDst, SYMCRYPT_NUMBER_FORMAT format, _Out_writes_bytes_(cbScratch) PBYTE pbScratch, SIZE_T cbScratch)
UINT64 SYMCRYPT_CALL SymCryptIntGetValueLsbits64(_In_ PCSYMCRYPT_INT piSrc)
#define SYMCRYPT_FLAG_MODULUS_PRIME
SYMCRYPT_ERROR SYMCRYPT_CALL SymCryptIntSetValue(_In_reads_bytes_(cbSrc) PCBYTE pbSrc, SIZE_T cbSrc, SYMCRYPT_NUMBER_FORMAT format, _Out_ PSYMCRYPT_INT piDst)
PSYMCRYPT_MODELEMENT SYMCRYPT_CALL SymCryptModElementCreate(_Out_writes_bytes_(cbBuffer) PBYTE pbBuffer, SIZE_T cbBuffer, _In_ PCSYMCRYPT_MODULUS pmMod)
VOID SYMCRYPT_CALL SymCryptIntMulPow2(_In_ PCSYMCRYPT_INT piSrc, SIZE_T exp, _Out_ PSYMCRYPT_INT piDst)
VOID SYMCRYPT_CALL SymCryptModElementSetValueUint32(UINT32 value, _In_ PCSYMCRYPT_MODULUS pmMod, _Out_ PSYMCRYPT_MODELEMENT peDst, _Out_writes_bytes_(cbScratch) PBYTE pbScratch, SIZE_T cbScratch)
VOID SYMCRYPT_CALL SymCryptIntToDivisor(_In_ PCSYMCRYPT_INT piSrc, _Out_ PSYMCRYPT_DIVISOR pdDst, UINT32 totalOperations, UINT32 flags, _Out_writes_bytes_(cbScratch) PBYTE pbScratch, SIZE_T cbScratch)
UINT32 SYMCRYPT_CALL SymCryptIntGetBit(_In_ PCSYMCRYPT_INT piSrc, UINT32 iBit)
#define SYMCRYPT_SCRATCH_BYTES_FOR_INT_TO_DIVISOR(_nDigits)
VOID SYMCRYPT_CALL SymCryptIntModPow2(_In_ PCSYMCRYPT_INT piSrc, SIZE_T exp, _Out_ PSYMCRYPT_INT piDst)
UINT32 SYMCRYPT_CALL SymCryptIntAddUint32(_In_ PCSYMCRYPT_INT piSrc1, UINT32 u32Src2, _Out_ PSYMCRYPT_INT piDst)
#define SYMCRYPT_SCRATCH_BYTES_FOR_COMMON_MOD_OPERATIONS(_nDigits)
PSYMCRYPT_MODULUS SYMCRYPT_CALL SymCryptModulusCreate(_Out_writes_bytes_(cbBuffer) PBYTE pbBuffer, SIZE_T cbBuffer, UINT32 nDigits)
VOID SYMCRYPT_CALL SymCryptModElementToInt(_In_ PCSYMCRYPT_MODULUS pmMod, _In_ PCSYMCRYPT_MODELEMENT peSrc, _Out_ PSYMCRYPT_INT piDst, _Out_writes_bytes_(cbScratch) PBYTE pbScratch, SIZE_T cbScratch)
PSYMCRYPT_INT SYMCRYPT_CALL SymCryptIntFromDivisor(_In_ PSYMCRYPT_DIVISOR pdSrc)
UINT32 SYMCRYPT_CALL SymCryptIntSubUint32(_In_ PCSYMCRYPT_INT piSrc1, UINT32 Src2, _Out_ PSYMCRYPT_INT piDst)
PSYMCRYPT_DIVISOR SYMCRYPT_CALL SymCryptDivisorCreate(_Out_writes_bytes_(cbBuffer) PBYTE pbBuffer, SIZE_T cbBuffer, UINT32 nDigits)
PSYMCRYPT_INT SYMCRYPT_CALL SymCryptIntFromModulus(_In_ PSYMCRYPT_MODULUS pmSrc)
UINT32 SYMCRYPT_CALL SymCryptSizeofModulusFromDigits(UINT32 nDigits)
UINT32 SYMCRYPT_CALL SymCryptIntIsEqualUint32(_In_ PCSYMCRYPT_INT piSrc1, _In_ UINT32 u32Src2)
VOID SYMCRYPT_CALL SymCryptFreeTrialDivisionContext(PCSYMCRYPT_TRIALDIVISION_CONTEXT pContext)
UINT32 SYMCRYPT_CALL SymCryptIntBitsizeOfValue(_In_ PCSYMCRYPT_INT piSrc)
UINT32 SYMCRYPT_CALL SymCryptSizeofIntFromDigits(UINT32 nDigits)
VOID SYMCRYPT_CALL SymCryptIntToModulus(_In_ PCSYMCRYPT_INT piSrc, _Out_ PSYMCRYPT_MODULUS pmDst, UINT32 averageOperations, UINT32 flags, _Out_writes_bytes_(cbScratch) PBYTE pbScratch, SIZE_T cbScratch)
UINT32 SYMCRYPT_CALL SymCryptDivisorDigitsizeOfObject(_In_ PCSYMCRYPT_DIVISOR pdSrc)
#define SYMCRYPT_SIZEOF_MODULUS_FROM_BITS(_bitsize)
VOID SYMCRYPT_CALL SymCryptModExp(_In_ PCSYMCRYPT_MODULUS pmMod, _In_ PCSYMCRYPT_MODELEMENT peBase, _In_ PCSYMCRYPT_INT piExp, UINT32 nBitsExp, UINT32 flags, _Out_ PSYMCRYPT_MODELEMENT peDst, _Out_writes_bytes_(cbScratch) PBYTE pbScratch, SIZE_T cbScratch)
VOID SYMCRYPT_CALL SymCryptIntDivMod(_In_ PCSYMCRYPT_INT piSrc, _In_ PCSYMCRYPT_DIVISOR pdDivisor, _Out_opt_ PSYMCRYPT_INT piQuotient, _Out_opt_ PSYMCRYPT_INT piRemainder, _Out_writes_bytes_(cbScratch) PBYTE pbScratch, SIZE_T cbScratch)
SYMCRYPT_ERROR SYMCRYPT_CALL SymCryptIntGetValue(_In_ PCSYMCRYPT_INT piSrc, _Out_writes_bytes_(cbDst) PBYTE pbDst, SIZE_T cbDst, SYMCRYPT_NUMBER_FORMAT format)
UINT32 SYMCRYPT_CALL SymCryptIntIsEqual(_In_ PCSYMCRYPT_INT piSrc1, _In_ PCSYMCRYPT_INT piSrc2)
UINT32 SYMCRYPT_CALL SymCryptIntFindSmallDivisor(_In_ PCSYMCRYPT_TRIALDIVISION_CONTEXT pContext, _In_ PCSYMCRYPT_INT piSrc, _Out_writes_bytes_(cbScratch) PBYTE pbScratch, SIZE_T cbScratch)
#define SYMCRYPT_FLAG_DATA_PUBLIC
PSYMCRYPT_INT SYMCRYPT_CALL SymCryptIntCreate(_Out_writes_bytes_(cbBuffer) PBYTE pbBuffer, SIZE_T cbBuffer, UINT32 nDigits)
#define SYMCRYPT_SCRATCH_BYTES_FOR_MODEXP(_nDigits)