PDF C#にデジタル署名を追加する

デジタル署名は、PDFドキュメントをサードパーティと共有する前に保護するために使用されます。 PDFドキュメントにデジタル署名すると、デジタル署名を使用してドキュメントを検証することにより、改ざんを検出できます。この記事では、デジタル署名を使用してプログラムでPDFドキュメントを保護するために、C#でPDFファイルにデジタル署名を追加する方法を説明します。また、C#でPDFファイルのデジタル署名を検証する方法についても学習します。

PDFにデジタル署名を追加するためのC#.NET API

PDFドキュメントにデジタル署名を追加して検証するために、Aspose.PDF for .NET APIを使用します。これは、PDFドキュメントを作成、編集、変換、およびデジタル署名するための強力なPDF操作APIです。 ダウンロードAspose.PDF for .NETを使用するか、VisualStudioで次のいずれかの方法を使用してインストールできます。

NuGetパッケージマネージャー

C#でPDFにデジタル署名する

パッケージマネージャーコンソール

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ファイルにシームレスにデジタル署名できます。

関連記事