25 SIZE_T cbScratchInternal = 0;
38 scError = SYMCRYPT_INVALID_ARGUMENT;
44 if ( (
flags != 0) || (!pkPrivate->fHasPrivateKey) )
46 scError = SYMCRYPT_INVALID_ARGUMENT;
57 scError = SYMCRYPT_INVALID_ARGUMENT;
64 scError = SYMCRYPT_WRONG_BLOCK_SIZE;
76 if ( pbScratch ==
NULL )
78 scError = SYMCRYPT_MEMORY_ALLOCATION_FAILURE;
83 pbScratchInternal = pbScratch;
86 pbScratchInternal += cbModelement;
87 cbScratchInternal -= cbModelement;
92 if (pkPrivate->fPrivateModQ)
94 nBitsOfExp = pkPrivate->nBitsPriv;
104 pkPublic->pePublicKey,
105 pkPrivate->piPrivateKey,
115 scError = SYMCRYPT_INVALID_BLOB;
128 if ( scError != SYMCRYPT_NO_ERROR )
134 if ( pbScratch !=
NULL )
SYMCRYPT_ERROR SYMCRYPT_CALL SymCryptDhSecretAgreement(_In_ PCSYMCRYPT_DLKEY pkPrivate, _In_ PCSYMCRYPT_DLKEY pkPublic, SYMCRYPT_NUMBER_FORMAT format, UINT32 flags, _Out_writes_(cbAgreedSecret) PBYTE pbAgreedSecret, SIZE_T cbAgreedSecret)
static void cleanup(void)
void SYMCRYPT_CALL SymCryptCallbackFree(void *ptr)
void *SYMCRYPT_CALL SymCryptCallbackAlloc(SIZE_T size)
UINT32 UINT32 UINT32 UINT32 cbScratch
#define SYMCRYPT_ASSERT(_x)
UINT32 SYMCRYPT_CALL SymCryptDlkeySizeofPublicKey(_In_ PCSYMCRYPT_DLKEY pkDlkey)
VOID SYMCRYPT_CALL SymCryptWipe(_Out_writes_bytes_(cbData) PVOID pbData, SIZE_T cbData)
enum _SYMCRYPT_NUMBER_FORMAT SYMCRYPT_NUMBER_FORMAT
#define SYMCRYPT_FLAG_DLKEY_DH
BOOLEAN SYMCRYPT_CALL SymCryptDlgroupIsSame(_In_ PCSYMCRYPT_DLGROUP pDlgroup1, _In_ PCSYMCRYPT_DLGROUP pDlgroup2)
PCSYMCRYPT_DLGROUP pDlgroup
SYMCRYPT_MODELEMENT * PSYMCRYPT_MODELEMENT
#define SYMCRYPT_MAX(_a, _b)
const SYMCRYPT_DLKEY * PCSYMCRYPT_DLKEY
const SYMCRYPT_DLGROUP * PCSYMCRYPT_DLGROUP
UINT32 SYMCRYPT_CALL SymCryptSizeofModElementFromModulus(PCSYMCRYPT_MODULUS pmMod)
UINT32 SYMCRYPT_CALL SymCryptModElementIsZero(_In_ PCSYMCRYPT_MODULUS pmMod, _In_ PCSYMCRYPT_MODELEMENT peSrc)
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)
PSYMCRYPT_MODELEMENT SYMCRYPT_CALL SymCryptModElementCreate(_Out_writes_bytes_(cbBuffer) PBYTE pbBuffer, SIZE_T cbBuffer, _In_ PCSYMCRYPT_MODULUS pmMod)
#define SYMCRYPT_SCRATCH_BYTES_FOR_COMMON_MOD_OPERATIONS(_nDigits)
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)
#define SYMCRYPT_SCRATCH_BYTES_FOR_MODEXP(_nDigits)