From b46e9d2e72e21cc687b3a55009324e9dc4e761f8 Mon Sep 17 00:00:00 2001
From: "florian.azizian" <florian.azizian@maarch.org>
Date: Mon, 14 Dec 2020 18:13:09 +0100
Subject: [PATCH] FEAT #14565 TIME 0:30 improve controle to make LTV signature

---
 .../DigitalSignatureController.php            | 26 +++++++++++--------
 .../controllers/DocumentController.php        |  2 +-
 2 files changed, 16 insertions(+), 12 deletions(-)

diff --git a/src/app/document/controllers/DigitalSignatureController.php b/src/app/document/controllers/DigitalSignatureController.php
index 8ff36abb3d..ab2bfdf2c6 100755
--- a/src/app/document/controllers/DigitalSignatureController.php
+++ b/src/app/document/controllers/DigitalSignatureController.php
@@ -366,6 +366,7 @@ class DigitalSignatureController
             // Create a collection of trusted certificats:
             $trustedCertificates = new \SetaPDF_Signer_X509_Collection(\SetaPDF_Signer_Pem::extractFromFile($tmpTimestampPEM));
 
+            $extraTrustedCertificate = false;
             if (!empty($args['extraCertificate'])) {
                 $certificate = new \SetaPDF_Signer_X509_Certificate($args['extraCertificate']);
         
@@ -381,22 +382,25 @@ class DigitalSignatureController
                         foreach ($aia->fetchIssuers($informationResolverManager)->getAll() as $issuer) {
                             $trustedCertificates->add($issuer);
                             $certificates[] = $issuer;
+                            $extraTrustedCertificate = true;
                         }
                     }
                 }
             }
 
-            // Create a collector instance
-            $collector = new \SetaPDF_Signer_ValidationRelatedInfo_Collector($trustedCertificates);
-            $vriData = $collector->getByFieldName($document, $args['fieldName']);
-
-            $dss = new \SetaPDF_Signer_DocumentSecurityStore($document);
-            $dss->addValidationRelatedInfoByFieldName(
-                $args['fieldName'],
-                $vriData->getCrls(),
-                $vriData->getOcspResponses(),
-                $vriData->getCertificates()
-            );
+            if (empty($args['extraCertificate']) || (!empty($args['extraCertificate']) && $extraTrustedCertificate)) {
+                // Create a collector instance
+                $collector = new \SetaPDF_Signer_ValidationRelatedInfo_Collector($trustedCertificates);
+                $vriData = $collector->getByFieldName($document, $args['fieldName']);
+    
+                $dss = new \SetaPDF_Signer_DocumentSecurityStore($document);
+                $dss->addValidationRelatedInfoByFieldName(
+                    $args['fieldName'],
+                    $vriData->getCrls(),
+                    $vriData->getOcspResponses(),
+                    $vriData->getCertificates()
+                );
+            }
 
             $document->save()->finish();
 
diff --git a/src/app/document/controllers/DocumentController.php b/src/app/document/controllers/DocumentController.php
index 7d3d90ad6f..8fde98e528 100755
--- a/src/app/document/controllers/DocumentController.php
+++ b/src/app/document/controllers/DocumentController.php
@@ -672,7 +672,7 @@ class DocumentController
                     'fingerprint'   => $storeInfos['fingerprint']
                 ]);
 
-                if (DocumentController::ACTIONS[$args['actionId']] == 'VAL' && ($workflow['mode'] == 'visa' || $workflow['signature_mode'] == 'stamp')) {
+                if (DocumentController::ACTIONS[$args['actionId']] == 'VAL' && $workflow['signature_mode'] == 'stamp') {
                     $storeInfos = DocserverController::storeResourceOnDocServer([
                         'encodedFile'     => base64_encode($fileContent),
                         'format'          => 'pdf',
-- 
GitLab