c #: Как я могу создать сертификат с размером ключа 168, используя CERTENROLLLib.CX509PrivateKey? - PullRequest
0 голосов
/ 16 ноября 2018

Я работаю с EDI - AS2. Поэтому мне нужно создать сертификат PrivateKey ( .pfx) и сертификат PublicKey ( .cer). Здесь я подписываю свое сообщение своим сертификатом PrivateKey ( .pfx) и делюсь сертификатом PublicKey ( .cer) с моим торговым партнером, чтобы они могли проверить подпись.

Я написал код для генерации тестового сертификата PublicKey (* .pfx). Ниже приведена часть кода, где я устанавливаю свойства закрытого ключа:

// create a new private key for the certificate
CX509PrivateKey privateKey = new CX509PrivateKey();
privateKey.ProviderName = "Microsoft Enhanced RSA and AES Cryptographic Provider";
privateKey.MachineContext = true;
privateKey.Length = 1024;
privateKey.KeySpec = X509KeySpec.XCN_AT_KEYEXCHANGE;
privateKey.ExportPolicy = X509PrivateKeyExportFlags.XCN_NCRYPT_ALLOW_PLAINTEXT_EXPORT_FLAG;
privateKey.Create();

код выше работает нормально, когда я использую privateKey.Length = 1024 или 512. Но наш торговый партнер хочет, чтобы мы создали сертификат с размером ключа 168 с 3DES и SHA1

Всякий раз, когда я даю privateKey.Length = 168, я получаю следующую ошибку:

CertEnroll::CX509PrivateKey::Create: Invalid flags specified. 0x80090009 (-2146893815)

Я не могу понять, какие изменения мне нужно сделать, чтобы это сработало.

Пожалуйста, помогите,

Спасибо

...