Подписание pdf-документа

В настоящее время я обновляю свое старое приложение, которое выполняется с помощью itextsharp 5.0.0 до 5.4.5 (последняя)... Но у меня проблема с получением эквивалентного кода для

PdfSignatureAppearance.SetCrypto(this.myCert.Akp, this.myCert.Chain, null, PdfSignatureAppearance.SELF_SIGNED);

Может ли кто-нибудь помочь мне в этом?

Заранее спасибо...


person Posting Pro    schedule 31.01.2014    source источник
comment
API подписи (по крайней мере, верхний уровень, который вы должны использовать) претерпел некоторые изменения. Вы можете прочитать Цифровые подписи для документов PDF, Белую книгу Бруно Лоуаги (iText Программное обеспечение) при подписании с помощью iText (Sharp). Образцы кода в нем написаны на Java, но также доступны версии на C#.   -  person mkl    schedule 31.01.2014
comment
Не могли бы вы предоставить мне ссылку на С#?   -  person Posting Pro    schedule 31.01.2014
comment
По крайней мере, их можно найти в репозитории subversion в учебнике; Я не знаю, однако, есть ли где-нибудь улучшенная версия.   -  person mkl    schedule 31.01.2014
comment
Нет, ряд примеров был портирован на C#, но эти версии C# доступны только на SourceForge.   -  person Bruno Lowagie    schedule 31.01.2014
comment
@BrunoLowagie Я рассмотрел твой пример. Но проблема заключается в извлечении деталей, таких как закрытый ключ, из файла pfx. Так что я претерпеваю с отвлечением от темы. Есть ли конкретный образец для моей проблемы?   -  person Posting Pro    schedule 03.02.2014
comment
На самом деле это другой вопрос (не связанный с iText). Опубликуйте еще один вопрос с тегами PKI, PKCS#12, закрытый ключ, C#,... Это обязательное условие при применении цифровой подписи. Я знаю, как это делается в Java, но вам придется поискать соответствующий механизм C#.   -  person Bruno Lowagie    schedule 03.02.2014


Ответы (1)


Я подписываю PDF-документы, используя iTextSharp версии 5.5. Ниже приведен пример кода.

        // Set the reader (PdfReader) and output (Stream) first
        PdfStamper stamper = PdfStamper.CreateSignature(reader, output, '\0');

        PdfSignatureAppearance signatureAppearance = stamper.SignatureAppearance;
        signatureAppearance.SignatureRenderingMode = PdfSignatureAppearance.RenderingMode.GRAPHIC_AND_DESCRIPTION;
        signatureAppearance.Reason = "I love signing";
        signatureAppearance.LocationCaption = "";
        signatureAppearance.SignatureGraphic = Image.GetInstance(this.imageFolderPath + "sign.png");

        signatureAppearance.SetVisibleSignature(
            new Rectangle(100, 100, 300, 200), 
            reader.NumberOfPages, 
            "Signature");

        // Get certificate from store, here I am reading file
        X509Certificate2 cert = new X509Certificate2(certFile, certPassword);
        var keyPair = DotNetUtils.GetKeyPair(cert.PrivateKey).Private;
        BcX509.X509Certificate bcCert = DotNetUtils.FromX509Certificate(cert);
        var chain = new List<BcX509.X509Certificate> { bcCert };
        IExternalSignature signature = new PrivateKeySignature(keyPair, "SHA-256");

        MakeSignature.SignDetached(signatureAppearance, signature, chain, null, null, null, 0, CryptoStandard.CMS);

        stamper.Close();
person Sajad Deyargaroo    schedule 02.05.2014
comment
Здравствуйте, не удалось найти пространства имен DotNetUtils и BcX509. Не могли бы вы помочь мне с этим - person Aamir Nakhwa; 08.02.2020