VOID printDlGroup()

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 );
}