Я хочу реализовать генерацию CSR в C # для Windows XP SP3.
Добавлено сборкой Interop.XENROLLLib
Код генерации CSR:
private string GenerateObsolete(string subject)
{
var certEnroll = new CEnroll2Class();
certEnroll.ProviderName = "Microsoft Enhanced RSA and AES Cryptographic Provider (Prototype)";
certEnroll.ProviderType = 24;
certEnroll.ContainerName = $"FGR-{Guid.NewGuid()}";
certEnroll.HashAlgorithm = "SHA-256";
//certEnroll.HashAlgID = 32780;
certEnroll.KeySpec = 1;
certEnroll.GenKeyFlags = 1;
return certEnroll.createRequest(XECR_CMC, subject, null);
}
Если свойство HashAlgorithm не задано, запрос успешно генерируется, и по умолчанию я получаю алгоритм подписи SHA1 . Но при настройке любого другого алгоритма я получаю исключение:
"System.Runtime.InteropServices.COMException (0x80090008): Invalid algorithm specified. (Exception from HRESULT: 0x80090008)
at XENROLLLib.CEnroll2Class.set_HashAlgorithm(String pbstr)"
Я тестировал на двух машинах с Windows XP SP3 . Я также попытался указать HashAlgI вместо имени алгоритма.
Вот список поддерживаемых алгоритмов.
![enter image description here](https://i.stack.imgur.com/GZCSa.jpg)
Пожалуйста, любые советы от вас.