デジタル署名を実行する関数を更新しようとしています。現在の関数である SHA1 SHA256 から切り替えたいです。
private byte[] zSignData(Byte[] msg, X509Certificate2 signerCert)
{
ContentInfo contentInfo = new ContentInfo(msg);
SignedCms signedCms = new SignedCms(contentInfo, false);
CmsSigner cmsSigner = new CmsSigner(signerCert);
cmsSigner.DigestAlgorithm = new Oid("1.3.14.3.2.26"); //SHA1
signedCms.ComputeSignature(cmsSigner, false);
return signedCms.Encode();
}
この機能はうまくいきます
SHA256に更新するために、変更しました
cmsSigner.DigestAlgorithm = new Oid("1.3.14.3.2.26"); //SHA1
と
cmsSigner.DigestAlgorithm = new Oid("2.16.840.1.101.3.4.2.1");//SHA256
しかし
signedCms.ComputeSignature(cmsSigner, false);
次の例外が発生します
System.Security.Cryptography.CryptographicException Message=内部エラーが発生しました。
誰か提案がありますか?
私は VS2010 Professional 64 と win7 professional 64 を使用しています。