CAPICOMには要件がありますか?それはうまくいくでしょうが、実際には迷惑なことがいくつかあります。もしあなたがそれを使用していないのであれば、System.Security.Cryptographyを使う方が良いでしょう。
とにかく:CAPICOMを使用するには、まずそのプロジェクトへの参照を追加する必要があります。次に:
CAPICOM.SignedData signeddata = new CAPICOM.SignedData();
FileStream file = File.Open(tbSourceFile.Text, FileMode.Open);
byte[] Content = new byte[(int)file.Length];
file.Read(Content, 0, (int)file.Length);
file.Close();
StringWriter sw = new StringWriter();
sw.Write(Content);
signeddata.Content = sw.ToString();
IStore store = new CAPICOM.Store();
store.Open(CAPICOM.CAPICOM_STORE_LOCATION.CAPICOM_CURRENT_USER_STORE, "MY", CAPICOM.CAPICOM_STORE_OPEN_MODE.CAPICOM_STORE_OPEN_READ_ONLY | CAPICOM.CAPICOM_STORE_OPEN_MODE.CAPICOM_STORE_OPEN_EXISTING_ONLY);
ICertificates2 certificates = (ICertificates2)store.Certificates;
certificates = certificates.Find(CAPICOM_CERTIFICATE_FIND_TYPE.CAPICOM_CERTIFICATE_FIND_KEY_USAGE, CAPICOM_KEY_USAGE.CAPICOM_DIGITAL_SIGNATURE_KEY_USAGE, true);
if (certificates.Count > 0)
{
certificates = certificates.Select();
}
if (certificates.Count > 0)
{
ISigner2 signers = new CAPICOM.Signer();
signers.Certificate = certificates[1];
tbSignatureBlock.Text = signeddata.Sign(signers, true);
}
Cobaia、SOにようこそ。あなたの質問を実際の質問に書き換えてください。これは質の高いQ&Aサイトですので、あなたの質問が閉じられるのを嫌っています。 –
私は文言を修正しようとしました。 – Cobaia