diff --git a/modules/reports/index.py b/modules/reports/index.py index d403d6f..f554c52 100644 --- a/modules/reports/index.py +++ b/modules/reports/index.py @@ -286,6 +286,21 @@ def _generate_report(self): buffer = io.BytesIO() template_module.generate_report(buffer, report_data, settings) + # Apply PDF signatures if requested + if mgr: + signers = mgr.find_capabilities('pdf_sign') + selected_signers = [i for i in range(len(signers)) + if request.form.get(f'sign_cap_{i}')] + if selected_signers: + pdf_bytes = buffer.getvalue() + for idx in selected_signers: + try: + pdf_bytes = signers[idx]['action'](pdf_bytes) + except Exception as e: + self.logger.error('Report signing failed (%s): %s', + signers[idx].get('name', '?'), e) + buffer = io.BytesIO(pdf_bytes) + # Check if any section requested file inclusion include_files = {} if mgr: diff --git a/modules/reports/templates/reports.html b/modules/reports/templates/reports.html index 7b9cf4b..e0976d3 100644 --- a/modules/reports/templates/reports.html +++ b/modules/reports/templates/reports.html @@ -124,6 +124,23 @@