Python でプレゼンテーションにデジタル署名を追加する
デジタル証明書 は、パスワードで保護された PowerPoint プレゼンテーションを作成するために使用され、特定の組織または個人が作成したことを示します。デジタル証明書は、認可された組織(証明書機関)に連絡することで取得できます。システムにデジタル証明書をインストールした後、File -> Info -> Protect Presentation を使用してプレゼンテーションにデジタル署名を追加できます。
プレゼンテーションには複数のデジタル署名を含めることができます。デジタル署名がプレゼンテーションに追加されると、PowerPoint に特別なメッセージが表示されます。
プレゼンテーションに署名したり、署名の真正性を確認したりするには、Aspose.Slides API が IDigitalSignature インターフェイス、IDigitalSignatureCollection インターフェイス、そしてIPresentation.DigitalSignatures プロパティを提供します。現在、デジタル署名は PPTX 形式のみでサポートされています。
PFX 証明書からデジタル署名を追加
以下のコードサンプルは、PFX 証明書からデジタル署名を追加する方法を示しています。
- PFX ファイルを開き、PFX パスワードを DigitalSignature オブジェクトに渡します。
- 作成した署名をプレゼンテーション オブジェクトに追加します。
#[TODO:Exception] RuntimeError: プロキシエラー(FileNotFoundException): ファイルまたはアセンブリ 'System.Security.Cryptography.Xml, Version=4.0.2.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' をロードできませんでした。ファイルが見つかりませんでした。
import aspose.slides as slides
with slides.Presentation() as pres:
# PFX ファイルと PFX パスワードで DigitalSignature オブジェクトを作成
signature = slides.DigitalSignature(path + "testsignature1.pfx", "testpass1")
# デジタル署名にコメントを設定
signature.comments = "Aspose.Slides digital signing test."
# プレゼンテーションにデジタル署名を追加
pres.digital_signatures.add(signature)
# プレゼンテーションを保存
pres.save("SomePresentationSigned.pptx", slides.export.SaveFormat.PPTX)
これで、プレゼンテーションがデジタル署名され、変更されていないかを確認できるようになりました。
# プレゼンテーションを開く
with slides.Presentation("SomePresentationSigned.pptx") as pres:
if len(pres.digital_signatures) > 0:
allSignaturesAreValid = True
print("Signatures used to sign the presentation: ")
# すべてのデジタル署名が有効か確認
for signature in pres.digital_signatures :
print(signature.certificate.subject_name.name + ", "
+ signature.sign_time.strftime("yyyy-MM-dd HH:mm") + " -- " + "VALID" if signature.is_valid else "INVALID")
allSignaturesAreValid = allSignaturesAreValid and signature.is_valid
if allSignaturesAreValid:
print("Presentation is genuine, all signatures are valid.")
else:
print("Presentation has been modified since signing.")
FAQ
ファイルから既存の署名を削除できますか?
はい。デジタル署名コレクションは、個々の項目の削除 と完全にクリア をサポートしています。ファイルを保存すると、プレゼンテーションに署名が残りません。
署名後にファイルは「読み取り専用」になりますか?
いいえ。署名は完全性と作成者情報を保持しますが、編集をブロックしません。編集を制限したい場合は、「読み取り専用」またはパスワード と組み合わせて使用してください。
異なるバージョンの PowerPoint で署名は正しく表示されますか?
署名は OOXML (PPTX) コンテナ用に作成されています。OOXML 署名をサポートする最新の PowerPoint バージョンは、署名のステータスを正しく表示します。