DOBON.NET DOBON.NETプログラミング掲示板過去ログ

オンメモリで証明書ファイルを開きたい

環境/言語:[OS : Windows XP Professional / 言語 : C# / .NET Framework : 2.0]
分類:[.NET]

【解決したい問題】

初めまして、お世話になります。

データベースにbyte[]型で格納されている証明書ファイルを
証明書ダイアログでモニタに表示するプログラムを作成しています。

現在はこのデータをテンポラリフォルダに出力して実現していますが、
できればファイル出力せず(=オンメモリで)、ダイアログで表示したいのです。

役に立つかはわかりませんが、現在のソースコードを載せます。


//データベースから読み込んだbyte[]型証明書ファイルはsbyte型に変換され、
//ZipInputStream zipInputStreamに格納されています

//一時出力用のパスの設定
string tempPath = Path.GetTempPath() + Path.GetFileName(zipEntry.getName());

//FileOutputStreamの作成
FileOutputStream fileOutputStream = new FileOutputStream(tempPath);

//書込み
sbyte[] buffer = new sbyte[8192];
int len;
while ((len = zipInputStream.read(buffer, 0, buffer.Length)) > 0)
{
fileOutputStream.write(buffer, 0, len);
}

//閉じる
fileOutputStream.close();

//証明書等を開く
System.Diagnostics.Process p = System.Diagnostics.Process.Start(tempPath);
p.WaitForExit();
System.IO.File.Delete(tempPath);


どうぞ、ご教示をお願いします。
■No17134に返信(津田子さんの記事)

私には、ご質問の内容が説明不足のように思われます。「証明書ファイル」「証明書ダイアログ」といっても様々考えられますが、具体的には何でしょうか?
管理人さん、返信をありがとうございます。

■No17190に返信(管理人さんの記事)
> 私には、ご質問の内容が説明不足のように思われます。

失礼しました。以後気をつけます。

私が扱いたかった証明書は"X509証明書"のことです。
そしてダイアログとは拡張子が".cer"のファイルのアイコンをダブルクリックしたときに表示されるダイアログのことです。

最初に記入した方法とは大きく異なってしまいましたが、X509Certificate2クラスのオブジェクトを生成し、
X509Certificate2UI.DisplayCertificate()メソッドに先ほどのオブジェクトを渡すことで実現できました。

//data : X509証明書データを格納するbyte型配列
X509Certificate2 certificate = new X509Certificate2(data);
X509Certificate2UI.DisplayCertificate(certificate);

今度は同じくX509形式の証明書失効リストを、やはりファイル出力せずに証明書のときと同じようにダイアログを表示する方法がわからなくて困っています。
何度もお手間をかけさせて申し訳ありませんが、ご教示お願いします。
> 私が扱いたかった証明書は"X509証明書"のことです。
> そしてダイアログとは拡張子が".cer"のファイルのアイコンをダブルクリックしたときに表示されるダイアログのことです。

そうなると、多分無理ではないでしょうか。CERに関連付けられているcryptext.dllなどにそのような関数があればよいのですが、多分無いでしょう。
管理人さん、お返事ありがとうございます。

■No17227に返信(管理人さんの記事)
> そうなると、多分無理ではないでしょうか。CERに関連付けられているcryptext.dllなどにそのような関数があればよいのですが、多分無いでしょう。

管理人さんのような有識な方に無理(っぽい)と言っていただけただけで、代替策探しなど、先に進むことができます。解決済み!BOXにチェックをつけることはできませんでしたが助かりました。ありがとうございました。

DOBON.NET | プログラミング道 | プログラミング掲示板