in unittest/lib/testDl.cpp [68:149]
VOID printDlGroup( PCSYMCRYPT_DLGROUP pDlgroup )
{
SYMCRYPT_ERROR scError;
PBYTE pbPrimeP = 0;
SIZE_T cbPrimeP = 0;
PBYTE pbPrimeQ = 0;
SIZE_T cbPrimeQ = 0;
PBYTE pbGenG = 0;
SIZE_T cbGenG = 0;
PBYTE pbSeed = 0;
SIZE_T cbSeed = 0;
PCSYMCRYPT_HASH pHashAlgorithm = NULL;
UINT32 genCounter = 0;
PBYTE pbBlob = NULL;
SIZE_T cbBlob = 0;
SymCryptDlgroupGetSizes(
pDlgroup,
&cbPrimeP,
&cbPrimeQ,
&cbGenG,
&cbSeed );
cbBlob = cbPrimeP + cbPrimeQ + cbGenG + cbSeed;
pbBlob = (PBYTE) SymCryptCallbackAlloc( cbBlob );
CHECK( pbBlob != NULL, "?" );
// Set the pointers
pbPrimeP = pbBlob;
pbPrimeQ = (cbPrimeQ==0)?(NULL):(&pbBlob[cbPrimeP]);
pbGenG = &pbBlob[cbPrimeP + cbPrimeQ];
pbSeed = (cbSeed==0)?(NULL):(&pbBlob[cbPrimeP+cbPrimeQ+cbGenG]);
scError = SymCryptDlgroupGetValue(
pDlgroup,
pbPrimeP,
cbPrimeP,
pbPrimeQ,
cbPrimeQ,
pbGenG,
cbGenG,
SYMCRYPT_NUMBER_FORMAT_MSB_FIRST,
&pHashAlgorithm,
pbSeed,
cbSeed,
&genCounter );
CHECK( scError==SYMCRYPT_NO_ERROR, "?" );
vprint(g_verbose, "DlGroup (L,N)=(%d,%d) %s @ %d \n", pDlgroup->nBitsOfP, pDlgroup->nBitsOfQ, testInteropHashAlgToString(pHashAlgorithm), genCounter);
vprint(g_verbose, " P (%3d): ", cbPrimeP );
printOneDlParam( pbPrimeP, cbPrimeP );
if (pbPrimeQ!=NULL)
{
vprint(g_verbose, " Q (%3d): ", cbPrimeQ );
printOneDlParam( pbPrimeQ, cbPrimeQ );
}
else
{
vprint(g_verbose, " Q ( 0): -\n" );
}
vprint(g_verbose, " G (%3d): ", cbGenG );
printOneDlParam( pbGenG, cbGenG );
if (pbSeed!=NULL)
{
vprint(g_verbose, " Seed (%3d): ", cbSeed );
printOneDlParam( pbSeed, cbSeed );
}
else
{
vprint(g_verbose, " Seed ( 0): -\n" );
}
SymCryptWipe( pbBlob, cbBlob );
SymCryptCallbackFree( pbBlob );
}