public static void Sign(String src, String dest, Org.BouncyCastle.X509.X509Certificate[] chain, ICipherParameters pk,
String digestAlgorithm, PdfSigner.CryptoStandard subfilter, String reason, String location, string signName)
{
var props = new StampingProperties();
props.UseAppendMode();
PdfReader reader = new PdfReader(src);
PdfSigner signer = new PdfSigner(reader, new FileStream(dest, FileMode.Create), props);
// Create the signature appearance
Rectangle rect = new Rectangle(56, 648, 200, 100);
PdfSignatureAppearance appearance = signer.GetSignatureAppearance();
appearance
.SetReason(reason)
.SetLocation(location)
// Specify if the appearance before field is signed will be used
// as a background for the signed field. The "false" value is the default value.
.SetReuseAppearance(false)
.SetPageRect(rect)
.SetPageNumber(1);
signer.SetFieldName("sig2");
IExternalSignature pks = new PrivateKeySignature(new PrivateKeyBC(pk), digestAlgorithm);
IX509Certificate[] certificateWrappers = new IX509Certificate[chain.Length];
for (int i = 0; i < certificateWrappers.Length; ++i)
{
certificateWrappers[i] = new X509CertificateBC(chain[i]);
}
// Sign the document using the detached mode, CMS or CAdES equivalent.
signer.SignDetached(pks, certificateWrappers, null, null, null, 0, subfilter);
}
после дважды подписывания и попытки проверить использование DSS (https://ec.europa.eu/digital-building-b ... validation). Я получил следующее предупреждение: «Документ содержит неопределенные модификации объектов после пересмотра подписи!» Для первой созданной подписи. Я предположил, что теперь первая подпись не охватывает весь документ, но это не то, что обнаружил Adobe Reader.
Я использую этот код, чтобы подписать PDF с использованием версии ITEXT 8.0.4 в приложении .NET .NET. < /p> [code]public static void Sign(String src, String dest, Org.BouncyCastle.X509.X509Certificate[] chain, ICipherParameters pk, String digestAlgorithm, PdfSigner.CryptoStandard subfilter, String reason, String location, string signName) { var props = new StampingProperties(); props.UseAppendMode(); PdfReader reader = new PdfReader(src); PdfSigner signer = new PdfSigner(reader, new FileStream(dest, FileMode.Create), props);
// Create the signature appearance Rectangle rect = new Rectangle(56, 648, 200, 100); PdfSignatureAppearance appearance = signer.GetSignatureAppearance(); appearance .SetReason(reason) .SetLocation(location)
// Specify if the appearance before field is signed will be used // as a background for the signed field. The "false" value is the default value. .SetReuseAppearance(false) .SetPageRect(rect) .SetPageNumber(1); signer.SetFieldName("sig2");
IExternalSignature pks = new PrivateKeySignature(new PrivateKeyBC(pk), digestAlgorithm);
IX509Certificate[] certificateWrappers = new IX509Certificate[chain.Length]; for (int i = 0; i < certificateWrappers.Length; ++i) { certificateWrappers[i] = new X509CertificateBC(chain[i]); } // Sign the document using the detached mode, CMS or CAdES equivalent. signer.SignDetached(pks, certificateWrappers, null, null, null, 0, subfilter); } [/code] после дважды подписывания и попытки проверить использование DSS (https://ec.europa.eu/digital-building-blocks/dss/webapp-demo/validation). Я получил следующее предупреждение: «Документ содержит неопределенные модификации объектов после пересмотра подписи!» Для первой созданной подписи. Я предположил, что теперь первая подпись не охватывает весь документ, но это не то, что обнаружил Adobe Reader.