0

Webサーバーに接続するWP7へのアプリを作成しています。アプリにサーバールート証明書があり、証明書パス全体を比較するためにアプリケーションで読み取る必要があります。ファイルを読み取るための私のコードは次のとおりです。

var resourceStream = Application.GetResourceStream(new Uri("myCert.der", UriKind.Relative)); 
var content = Encoding.UTF8.GetBytes(new StreamReader(resourceStream.Stream).ReadToEnd()); 
X509Certificate cert = new X509Certificate(content);

しかし、最後の行で例外が発生します。

[Cryptography_LegacyNetCF_UnknownError] 引数: 80092009 リソース文字列のデバッグは利用できません。多くの場合、キーと引数は、問題を診断するのに十分な情報を提供します。http://go.microsoft.com/fwlink/?linkid=106663&Version=4.0.50829.0&File=mscorlib.dll&Key=Cryptography_LegacyNetCF_UnknownErrorを参照してください

スタック トレース:

System.Security.Cryptography.CryptographicException.ThrowCryptographicException (Int32 hr) で System.Security.Cryptography.X509Certificates.X509Utils._QueryCertBlobType (Byte[] rawData) で System.Security.Cryptography.X509Certificates.X509Certificate.LoadCertificateFromBlob (Byte[] rawData、 System.Security.Cryptography.X509Certificates.X509Certificate..ctor(Byte[] data) のオブジェクト パスワード、X509KeyStorageFlags keyStorageFlags)

msdn ページhttp://msdn.microsoft.com/en-us/library/5128sby8(v=vs.95).aspxで、「ASN.1 DER は、このクラスでサポートされている唯一の証明書形式です」と読みました。

そして、これはまさに私のフォーマットです。

何の影響もなくすべてをテストしたと思うので、何かわかりますか。

証明書に問題はなく、コンソール アプリケーションに適切にロードされています。

何か考えがありますか、私を助けてくれますか?

少し早いですがお礼を、

4

1 に答える 1

1

証明書にはバイナリ コンテンツが含まれていますStreamReader。それを読み取るために a を使用しないでください (テキストのみに使用することを意図しています)。

代わりに、ストリームからコンテンツを直接読み取ります。

var resourceStream = Application.GetResourceStream(new Uri("myCert.der", UriKind.Relative));

var content = new byte[resourceStream.Stream.Length];
resourceStream.Stream.Read(content, 0, content.Length);

X509Certificate cert = new X509Certificate(content);
于 2013-09-01T09:29:40.693 に答える