Ask Question

Name:
Title:
Your Question:

Answer Question

Name:
Your Answer:
User Submitted Source Code!


Description:
  cryptEnum
Language: C/C++
Code:
#include <windows.h>
#include <iostream>
#include <conio.h>

using namespace std;


int main()
{

//объявление переменных
DWORD dwIndex=0;
DWORD dwType;
DWORD cbName;
LPWSTR pszName = NULL;

//Заголовок для вывода
cout<<"CryptEnumProviders__RESULTS"<<endl<<endl;

//Начало цикла перечисления криптопровайдеров
while (CryptEnumProviders(dwIndex, NULL, 0, &dwType, NULL, &cbName))
{
//cbName возвращает длину имени следующего провайдера.
//Выделим память в буфере, чтобы получить это имя
  if (!(pszName = (LPTSTR)LocalAlloc(LMEM_ZEROINIT, cbName)))
  {
       //сообщение, чтобы увидеть, где произошла ошибка. И выход из программы
       cout<<"ERROR - LacalAlloc failed"<<endl; 
       return 0;
  }
  
  //Получим имя провайдера
  //Увеличение dwIndex позволяет переходить к следующему криптопровайдеру
  //в каждом следующем шаге цикла
  if (!CryptEnumProviders(dwIndex++, NULL, 0, &dwType, pszName, &cbName))
  { 
    cout<<"CryptEnumProviders"<<endl;
    return 0;
  }
  
  cout<<"--------------------------------"<<endl;
  cout<<"Provider name: "<<pszName<<endl; 
  cout<<"Provider type: "<<dwType<<endl;
  
  //Освобождение памяти, выделенной буферу
  LocalFree(pszName);
}
//конец работы CryptEnumProviders
getch();
return 1;
}
Comments: