Как использовать криптопровайдер VipNet CSP
У меня есть некоторый функционал который реализует функции шифрования \ расшифрования и хэширования . Все это я сделал через встроенный криптопровайдер и вот моя функция для инициализации контекста.
void GetContextCryptoProvider(HCRYPTPROV &hProv){
if (!CryptAcquireContext(&hProv, NULL, NULL,
PROV_RSA_FULL, CRYPT_VERIFYCONTEXT))
{
perror("CryptAcquireContext");
return;
}
std::cout << "Cryptographic provider initialized" << std::endl;
}
Далее я установил VipNet CSP. В именах криптопровайдеров у меня появились такие значения
Provider name: Infotecs Cryptographic Service Provider
Provider type: 2
--------------------------------
Provider name: Infotecs GOST 2012/1024 Cryptographic Service Provider
Provider type: 78
--------------------------------
Provider name: Infotecs GOST 2012/512 Cryptographic Service Provider
Provider type: 77
По документации теперь нужно изменить 3-ий параметр функцию для получения контекста на имя криптопровайдера что я и сделал поставив в 3 параметр строку
'Infotecs Cryptographic Service Provider'
Но дальше ни получение сессионного ключа ни все остальные функции не работают.
Документация разработчика показывает такой пример
CK_MECHANISM mechanism = {
CKM_GOST28147_KEY_GEN, NULL_PTR, 0
};
CK_RV rv;
rv = C_GenerateKey(hSessionKey, &mechanism, NULL_PTR, 0, &hKey);
if (rv != CKR_OK)
{
printf("Error during CryptGenKey.\n");
exit(1);
}
Но откуда взялись все эти типы не ясно, нужна ли какая то библиотека дополнительная ?