iTextSharp Dllを使用してデジタル署名を実装して、単一の署名でPDFファイルに署名しました。今、私は以前にデジタル署名されたPDFにもう1つのデジタル署名を追加したいのですが、1つの署名を検証する際にエラーが発生します。CでiTextSharpを使用して複数のデジタル署名を追加する
複数のデジタル署名を1つのPDFに追加してすべての署名を検証する方法を教えてください。
PdfReader reader = new PdfReader(fileName);
using (FileStream fout = new FileStream(SignedFileName, FileMode.Create, FileAccess.ReadWrite))
{
// appearance
PdfStamper stamper = PdfStamper.CreateSignature(reader, fout, '\0');
PdfSignatureAppearance appearance = stamper.SignatureAppearance;
//appearance.Reason = SignReason;
//appearance.Location = SignLocation;
appearance.SignDate = DateTime.Now.Date;
appearance.SetVisibleSignature(new iTextSharp.text.Rectangle(xPos, yPos, xPos + 200, yPos + 100), PageNo, null);//.IsInvisible
// Custom text and background image
appearance.Image = iTextSharp.text.Image.GetInstance(SignatureImg);
appearance.ImageScale = 0.6f;
appearance.Image.Alignment = 300;
appearance.Acro6Layers = true;
StringBuilder buf = new StringBuilder();
buf.Append("Digitally Signed by ");
String name = SignerName;
buf.Append(name).Append('\n');
buf.Append("Date: ").Append(DateTime.Now.ToString("dd-MM-yyyy HH:mm:ss zzz"));
string text = buf.ToString();
appearance.Layer2Text = text;
//digital signature
IExternalSignature es = new PrivateKeySignature(pk, "SHA-256");
MakeSignature.SignDetached(appearance, es, new Org.BouncyCastle.X509.X509Certificate[] { pk12.GetCertificate(alias).Certificate }, null, null, null, 0, CryptoStandard.CMS);
stamper.Close();
}
さまざまなパラメータを使用して初期署名に使用できるコードサンプルを実行しようとしましたか?フィールドの新しい名前のように、新しい境界ボックス。 –
あなたのコードを教えてください!最初の署名で追加のデジタル署名が可能ですか? (余分な署名を追加すると、 "no changes allowed"レベルの作成者署名が壊れます!)追加モードで2番目の署名を追加しましたか? (元のPDFのバイトを変更した場合、最初の署名が破損します。)あなたの質問は不完全であり、したがってダウン投票です。最初に[ドキュメント](http://pages.itextpdf.com/ebook-digital-signatures-for-pdf.html)を読んでから、何かがまだ不明な場合は、質問を修正してください。 –
* "以前に署名された*と*既に署名された* *によって異なることを意味しますか?はいの場合は、@ Brunoの説明に従って質問を改善するときの違いを説明してください。 – mkl