【Aspose.PDF for .NET】 Global Signを使用したPDFドキュメントのデジタル署名について

Global Signを使用したPDFドキュメントのデジタル署名を検討しています。
Aspose.PDF for .NET で実装する場合のサンプルコードをご提供いただけませんでしょうか。
・署名の追加
・署名の詳細へ、理由、及び、場所を追加
・タイムスタンプの追加(有効期間の延長)

以上、ご支援よろしくお願い申し上げます。

@wbys

お客様の要件の実現可能性を調査するために、チケットを PDFNET-50641 として記録しました。 詳細を調査し、チケットの解決状況をお知らせします。 しばらくお待ちください。

ご不便をおかけしてしまい申し訳ございません。

最後に次のコード例を試してみて、あなたの側でどうなるか教えてください。

var pfxPassword = "";
            var pfxCertificate = File.ReadAllBytes(@"input.pfx");
            var documentData = File.ReadAllBytes("Input.pdf");
            using var pdfDoc = new Document(new MemoryStream(documentData));
            var signature = new PKCS7Detached(new MemoryStream(pfxCertificate), pfxPassword)
            {
                UseLtv = true,
                OcspSettings = new OcspSettings("http://ocsp2.globalsign.com/gspersonalsign2sha2g3"),
                TimestampSettings = new TimestampSettings("https://freetsa.org/tsr", string.Empty)
            };

            var mdp = new DocMDPSignature(signature, DocMDPAccessPermissions.NoChanges);

            using var pdfSign = new PdfFileSignature(pdfDoc);
            pdfSign.Certify(
                1,
                "Manually signed document",
                "SimpliGov LLC",
                "SimpliGov LLC",
                false,
                new System.Drawing.Rectangle(10, 10, 200, 200),
                mdp
            );

            using var stream = new MemoryStream();
            pdfSign.Save(stream); 

サンプルコードを参考にして、試した結果を添付します。(AsposePDF出力結果.png)
AsposePDF出力結果.png (29.9 キロバイト)

期待している出力結果のサンプルも添付します。(期待している出力結果.png)
期待している出力結果.png (39.3 キロバイト)

期待している結果を得るためには、コードをどのように変更すればよろしいでしょうか。
ご教示よろしくお願いいたします。

こちらで試したコードは以下の通りです。

    Dim pfxCertificate = File.ReadAllBytes(certfilepath)
    Dim pfxPassword As String = passwordstr
    Dim documentData = File.ReadAllBytes("D:\デジタル署名テスト用PDF.pdf")

    Using pdfDoc = New Document(New MemoryStream(documentData))
        Dim Signature = New PKCS7Detached(New MemoryStream(pfxCertificate), PfxPassword)
        Signature.UseLtv = True
        Signature.OcspSettings = New OcspSettings("http://ocsp2.globalsign.com/gspersonalsign2sha2g3")
        Signature.TimestampSettings = New TimestampSettings("https://freetsa.org/tsr", String.Empty)

        Dim mdp = New DocMDPSignature(Signature, DocMDPAccessPermissions.NoChanges)

        Using pdfSign = New PdfFileSignature(pdfDoc)
            pdfSign.Certify(
                1,
                "〇〇によって署名されています。",
                "(未記入)",
                "(住所を記入)",
                True,
                New System.Drawing.Rectangle(10, 10, 200, 200),
                mdp
            )
            pdfSign.Save("D:\out_デジタル署名テスト用PDF.pdf")
        End Using
    End Using

なお、「Using pdfSign = New PdfFileSignature(pdfDoc)」で、IsCertified.get の評価がタイムアウト、というエラーが発生しています。
また、「 pdfSign.Save(“D:\out_デジタル署名テスト用PDF.pdf”)」で、オブジェクト参照エラーが発生しますが、D:\out_デジタル署名テスト用PDF.pdf は生成されています。

@wbys

Aspose.PDF for Java を評価モードで使用しています。 30 日間の一時ライセンスを取得し、PDF をインポートする前に適用してください。 以下の記事をお読みください。

有効なテンポラリーライセンスを適用しましたが、出力結果は変わりませんでした。

AsposePDF出力結果2.png (18.9 キロバイト)

「pdfSign.Save(“D:\out_デジタル署名テスト用PDF.pdf”)」で例外が発生する症状も変わりません。
StackTraceを添付します。
StackTrace.pdf (283.4 キロバイト)

> Aspose.PDF for Java を評価モードで使用しています。30 日間の一時ライセンスを取得し、PDF をインポートする前に適用してください。

使用しているのは、Aspose.PDF for .NET です。
念のため、お伝えします。
引き続き、ご支援の程、よろしくお願いいたします。

@wbys

問題追跡システムに PDFNET-53407 としてあなたのケースの別のチケットを記録しました。 アップデートが利用可能になり次第、お知らせします。 ご不便をおかけして申し訳ございません。

ご回答ありがとうございます。

PDFNET-53407 に関しては、PdfFileSignature.Save() の改善をご検討ください。

なお、当方からの最初の質問にあたる、PDFNET-50641 に関して、現段階で、他のサンプルコードをご提供いただく事は可能でしょうか。

もしくは、PdfFileSignature.Save() の不具合が解決すれば、PDFNET-50641 も解決するとのご認識でしょうか。

@wbys

問題追跡システムにあなたの懸念を記録しました。 Global Sign を使用した PDF ドキュメントのデジタル署名に関する問題を調査し、更新が利用可能になったらお知らせします。