Как мне использовать закрытый ключ в C #? «Не удается найти запрошенный объект».

Я пытаюсь реализовать аутентификацию для MasterCard Match, поскольку в их следующей документации у них есть пример закрытого ключа:

https://developer.mastercard.com/portal/display/api/OAuth+Validation

На этой странице у них есть две версии ключа: одна в тексте в кодировке base64, видимая на странице, и загружаемый файл .p12.

Как импортировать этот ключ для использования в качестве сертификата x509?

Что бы я ни пытался, я получаю сообщение «Не удается найти запрошенный объект».

Я попытался покопаться в нем с помощью источника .net, но у импортированного объекта я зашел в тупик

[SecurityCritical]
[MethodImpl(MethodImplOptions.InternalCall)]
internal static extern uint _QueryCertFileType(string fileName);

Я пробовал следующее, и все они терпят неудачу с тем же вышеупомянутым сообщением

new X509Certificate2(@"c:\test\mc-openapi-csr.pem")
new X509Certificate2(@"c:\test\mc-openapi-csr.pem", "mcapi")
new X509Certificate2(@"c:\test\mc-openapi-csr.pem", "mckp")

поэтому я скопировал текстовый блок в «copied.txt» и попытался использовать этот файл, я также попытался прочитать байты и передать их вручную, я также попытался использовать

X509Certificate.CreateFromCertFile(fileName)

с обоими файлами.

Есть идеи? Сертификат плох? Я использую неправильный класс? Что означает это сообщение об ошибке?

- Обновление-- По предложению Bad Zombie я попробовал BouncyCastle:

    var pem = new Org.BouncyCastle.OpenSsl.PemReader(File.OpenText(fileName));
    RsaPrivateCrtKeyParameters rsaParameters = (RsaPrivateCrtKeyParameters)pem.ReadObject();
    using (var rsa = new RSACryptoServiceProvider())
    {
        rsa.ImportParameters(new RSAParameters
            {
                DP = rsaParameters.DP.ToByteArray(),
                DQ = rsaParameters.DQ.ToByteArray(),
                Exponent = rsaParameters.Exponent.ToByteArray(),
                InverseQ = rsaParameters.QInv.ToByteArray(),
                Modulus = rsaParameters.Modulus.ToByteArray(),
                P = rsaParameters.P.ToByteArray(),
                Q = rsaParameters.Q.ToByteArray(),
            });
    }

при вызове «ImportParameters» я получаю «Плохие данные». Я делаю что-то неправильно?

Ответы на вопрос(2)

Ваш ответ на вопрос