MasterCard Matchの認証を実装しようとしています。次のドキュメントの一部として、サンプルの秘密鍵があります。
https://developer.mastercard.com/portal/display/api/OAuth+Validation
そのページには、2つのバージョンのキーがあります。1つはbase64でエンコードされたテキストで、ページに表示されます。もう1つはダウンロード可能な.p12ファイルです。
このキーをインポートしてx509certificate2として使用するにはどうすればよいですか?
何をしようとしても、「要求されたオブジェクトが見つかりません。」というメッセージが表示されます。
.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)
両方のファイルで。
何か案は?証明書は悪いですか?間違ったクラスを使用していますか?そのエラーメッセージはどういう意味ですか?
-更新--BadZombieの提案で、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」呼び出しで、「BadData」を取得します。私は何か間違ったことをしていますか?