デジタル署名は、PDFドキュメントをサードパーティと共有する前に保護するために使用されます。 PDFドキュメントにデジタル署名すると、デジタル署名を使用してドキュメントを検証することにより、改ざんを検出できます。この記事では、デジタル署名を使用してプログラムでPDFドキュメントを保護するために、C#でPDFファイルにデジタル署名を追加する方法を説明します。また、C#でPDFファイルのデジタル署名を検証する方法についても学習します。
- PDFにデジタル署名するC#API
- C#を使用してPDFドキュメントにデジタル署名を追加する
- C#のタイムスタンプサーバーを使用してPDFドキュメントにデジタル署名する
- C#を使用してPDFのデジタル署名を確認する
PDFにデジタル署名を追加するためのC#.NET API
PDFドキュメントにデジタル署名を追加して検証するために、Aspose.PDF for .NET APIを使用します。これは、PDFドキュメントを作成、編集、変換、およびデジタル署名するための強力なPDF操作APIです。 ダウンロードAspose.PDF for .NETを使用するか、VisualStudioで次のいずれかの方法を使用してインストールできます。
NuGetパッケージマネージャー
パッケージマネージャーコンソール
PM> Install-Package Aspose.PDF
C#でPDFにデジタル署名を追加する
以下は、Aspose.PDF for .NETを使用してPDFドキュメントに署名する手順です。
- Documentクラスのオブジェクトを作成し、PDFドキュメントのパスで初期化します。
- PdfFileSignatureクラスのオブジェクトを作成し、Documentクラスのオブジェクトで初期化します。
- PKCS7クラスのオブジェクトを作成し、証明書パスとパスワードで初期化します。
- MDPシグニチャタイプのDocMDPSignatureクラスのオブジェクトを作成して初期化します。
- 署名を配置するための長方形を作成します。
- PdfFileSignature.Certify()メソッドを使用してPDFドキュメントにデジタル署名します。
- PdfFileSignature.Save()メソッドを使用してドキュメントを保存します。
次のコードサンプルは、C#でPDFドキュメントにデジタル署名を追加する方法を示しています。
// PDFドキュメントをロード
using (Document pdfDocument = new Document("Document.pdf"))
{
using (PdfFileSignature signature = new PdfFileSignature(pdfDocument))
{
PKCS7 pkcs = new PKCS7("certificate.pfx", "1234567890"); // Use PKCS7/PKCS7Detached objects
DocMDPSignature docMdpSignature = new DocMDPSignature(pkcs, DocMDPAccessPermissions.FillingInForms);
System.Drawing.Rectangle rect = new System.Drawing.Rectangle(100, 100, 200, 100);
// 署名の外観を設定する
signature.SignatureAppearance = @"aspose-logo.png";
// 3つの署名タイプのいずれかを作成します
signature.Certify(1, "Signature Reason", "Contact", "Location", true, rect, docMdpSignature);
// デジタル署名されたPDFファイルを保存する
signature.Save("Digitally Signed PDF.pdf");
}
}
C#TimestampServerを使用してPDFにデジタル署名を追加する
TimestampSettingsクラスを使用して詳細を提供することにより、TimeStampサーバーでPDFドキュメントにデジタル署名を追加することもできます。次のコードサンプルは、C#のTimeStampサーバーを使用してPDFドキュメントにデジタル署名する方法を示しています。
// PDFドキュメントをロード
using (Document pdfDocument = new Document("Document.pdf"))
{
using (PdfFileSignature signature = new PdfFileSignature(pdfDocument))
{
PKCS7 pkcs = new PKCS7("certificate.pfx", "WebSales"); // Use PKCS7/PKCS7Detached objects
TimestampSettings timestampSettings = new TimestampSettings("https:\\your_timestamp_settings", "user:password"); // User/Password can be omitted
pkcs.TimestampSettings = timestampSettings;
System.Drawing.Rectangle rect = new System.Drawing.Rectangle(100, 100, 200, 100);
// 3つの署名タイプのいずれかを作成します
signature.Sign(1, "Signature Reason", "Contact", "Location", true, rect, pkcs);
// 出力PDFファイルを保存
signature.Save("Output.pdf");
}
}
C#でデジタル署名されたPDFを確認する
PDFドキュメントのデジタル署名を確認する手順は次のとおりです。
- Documentクラスのオブジェクトを作成し、PDFドキュメントのパスで初期化します。
- PdfFileSignatureクラスのオブジェクトを作成し、Documentクラスのオブジェクトで初期化します。
- PDFドキュメントのすべての署名にアクセスします。
- PdfFileSignature.VerifySigned()メソッドを使用して、署名の有効性を確認します。
次のコードサンプルは、C#を使用してPDFのデジタル署名を検証する方法を示しています。
// PDFドキュメントをロード
using (Document pdfDocument = new Document("Document.pdf"))
{
using (PdfFileSignature signature = new PdfFileSignature(pdfDocument))
{
IList<string> sigNames = signature.GetSignNames();
if (sigNames.Count > 0) // Any signatures?
{
if (signature.VerifySigned(sigNames[0] as string)) // Verify first one
{
if (signature.IsCertified) // Certified?
{
if (signature.GetAccessPermissions() == DocMDPAccessPermissions.FillingInForms) // Get access permission
{
// 何かをする
}
}
}
}
}
}
Aspose.PDF for .NETを無料でお試しください
無料の一時ライセンスを取得して、Aspose.PDF for .NETを試して使用することができます。
結論
この記事では、C#.NETのPDFファイルにデジタル署名を追加する方法を学習しました。さらに、C#でプログラムによってデジタル署名されたPDFファイルを検証する方法を見てきました。 Aspose.PDF for .NETをアプリケーションにインストールするだけで、PDFファイルにシームレスにデジタル署名できます。