#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include "eboy_wincrypt.h"
void main()
{
// Declare and initialize variables.
DWORD cbName;
DWORD dwType;
DWORD dwIndex=0;
CHAR *pszName;
// Print header lines for providers.
printf("\n\n Listing Available Providers.\n");
printf("Provider type Provider Name\n");
printf("_____________ _____________________________________\n");
//----------------------------------------------------------------
// Loop through enumerating providers.
dwIndex = 0;
while(CryptEnumProviders(
dwIndex, // in -- dwIndex
NULL, // in -- pdwReserved- set to NULL
0, // in -- dwFlags -- set to zero
&dwType, // out -- pdwProvType
NULL, // out -- pszProvName -- NULL on the first call
&cbName // in, out -- pcbProvName
))
{
//--------------------------------------------------------------------
// cbName returns the length of the name of the next provider.
// Allocate memory in a buffer to retrieve that name.
if (!(pszName = (LPTSTR)LocalAlloc(LMEM_ZEROINIT, cbName)))
{
printf("ERROR - LocalAlloc failed!");
exit(1);
}
//--------------------------------------------------------------------
// Get the provider name.
if (CryptEnumProviders(
dwIndex++,
NULL,
0,
&dwType,
pszName,
&cbName // pcbProvName -- size of pszName
))
{
printf (" %4.0d %s\n",dwType, pszName);
}
else
{
printf("ERROR - CryptEnumProviders");
exit(1);
}
LocalFree(pszName);
} // End of while loop
printf("\n\nProvider types and provider names have been listed.\n");
}