Как мне использовать закрытый ключ в 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» я получаю «Плохие данные». Я делаю что-то неправильно?