Почему я получаю исключение «Указан неверный алгоритм» в CEnroll2Class? - PullRequest
1 голос
/ 10 июля 2019

Я хочу реализовать генерацию 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

Пожалуйста, любые советы от вас.

...