diff --git a/src/app/document/controllers/CertificateSignatureController.php b/src/app/document/controllers/CertificateSignatureController.php
index 911befdd18f6476c85fe33946976df84c00045fe..dc9d44f2c5da428e03313b5d1aa3a65cde4df23f 100755
--- a/src/app/document/controllers/CertificateSignatureController.php
+++ b/src/app/document/controllers/CertificateSignatureController.php
@@ -14,75 +14,59 @@
 
 namespace Document\controllers;
 
-use Document\models\DocumentModel;
-use Group\controllers\PrivilegeController;
-use History\controllers\HistoryController;
-use Slim\Http\Request;
-use Slim\Http\Response;
-
 class CertificateSignatureController
 {
-    public function getHashedCertificate(array $args)
+    public static $signatureLength = 30000;
+
+    public static function getHashedCertificate(array $args)
     {
-        if (isset($_SESSION['tmpDocument'])) {
-            @unlink($_SESSION['tmpDocument']->getWriter()->getPath());
-        }                $data = json_decode(file_get_contents('php://input'));
-        if (!isset($data->certificate)) {
-            throw new Exception('Missing certificate!');
-        }                // load the PDF document
         $document = \SetaPDF_Core_Document::loadByString($args['document']);
-        // create a signer instance
+
         $signer = new \SetaPDF_Signer($document);
-        // create a module instance
-        $module = new \SetaPDF_Signer_Signature_Module_Pades();                // create a certificate instance
-        $certificate = new \SetaPDF_Signer_X509_Certificate($data->certificate);                // pass the user certificate to the module
-        $module->setCertificate($certificate);                // setup information resolver manager
+        $module = new \SetaPDF_Signer_Signature_Module_Pades();
+        $certificate = new \SetaPDF_Signer_X509_Certificate($args['certificate']);
+
+        $module->setCertificate($certificate);
+
         $informationResolverManager = new \SetaPDF_Signer_InformationResolver_Manager();
-        $informationResolverManager->addResolver(new \SetaPDF_Signer_InformationResolver_HttpCurlResolver());                $extraCerts = new \SetaPDF_Signer_X509_Collection();                // get issuer certificates
-        if (isset($data->useAIA) && $data->useAIA) {
-            $certificates = [$certificate];
-            while (count($certificates) > 0) {
-                /** @var \SetaPDF_Signer_X509_Certificate $currentCertificate */
-                $currentCertificate = array_pop($certificates);
-                /** @var \SetaPDF_Signer_X509_Extension_AuthorityInformationAccess $aia */
-                $aia = $currentCertificate->getExtensions()->get(\SetaPDF_Signer_X509_Extension_AuthorityInformationAccess::OID);
-                if ($aia instanceof \SetaPDF_Signer_X509_Extension_AuthorityInformationAccess) {
-                    foreach ($aia->fetchIssuers($informationResolverManager)->getAll() as $issuer) {
-                        $extraCerts->add($issuer);
-                        $certificates[] = $issuer;
-                    }
+        $informationResolverManager->addResolver(new \SetaPDF_Signer_InformationResolver_HttpCurlResolver());
+        $extraCerts = new \SetaPDF_Signer_X509_Collection();
+
+
+        $certificates = [$certificate];
+        while (count($certificates) > 0) {
+            $currentCertificate = array_pop($certificates);
+
+            $aia = $currentCertificate->getExtensions()->get(\SetaPDF_Signer_X509_Extension_AuthorityInformationAccess::OID);
+            if ($aia instanceof \SetaPDF_Signer_X509_Extension_AuthorityInformationAccess) {
+                foreach ($aia->fetchIssuers($informationResolverManager)->getAll() as $issuer) {
+                    $extraCerts->add($issuer);
+                    $certificates[] = $issuer;
                 }
             }
-        }                $module->setExtraCertificates($extraCerts);                $signatureContentLength = 10000;
+        }
+
+        $module->setExtraCertificates($extraCerts);
+        $signatureContentLength = CertificateSignatureController::$signatureLength;
         foreach ($extraCerts->getAll() as $extraCert) {
             $signatureContentLength += (strlen($extraCert->get(\SetaPDF_Signer_X509_Format::DER)) * 2);
-        }                $signer->setSignatureContentLength($signatureContentLength);                unset($_SESSION['tsUrl']);
-        // get timestamp information and use it
-        if (isset($data->useTimestamp) && $data->useTimestamp) {
-            /** @var \SetaPDF_Signer_X509_Extension_TimeStamp $ts */
-            $ts = $certificate->getExtensions()->get(\SetaPDF_Signer_X509_Extension_TimeStamp::OID);
-            if ($ts && $ts->getVersion() === 1 && $ts->requiresAuth() === false) {
-                $_SESSION['tsUrl'] = $ts->getLocation();
-                $signer->setSignatureContentLength($signatureContentLength + 6000);
-            }
-        }                // you may use an own temporary file handler
-        $tempPath = \SetaPDF_Core_Writer_TempFile::createTempPath();                // prepare the PDF
-        $_SESSION['tmpDocument'] = $signer->preSign(
+        }
+        $signer->setSignatureContentLength($signatureContentLength);
+
+        $ts = $certificate->getExtensions()->get(\SetaPDF_Signer_X509_Extension_TimeStamp::OID);
+        if ($ts && $ts->getVersion() === 1 && $ts->requiresAuth() === false) {
+            $signer->setSignatureContentLength($signatureContentLength + 6000);
+        }
+
+        $tempPath = \SetaPDF_Core_Writer_TempFile::createTempPath();
+        $tmpDocument = $signer->preSign(
             new \SetaPDF_Core_Writer_File($tempPath),
             $module
-        );                $_SESSION['module'] = $module;                // prepare the response
-        $responseData = [
-            'dataToSign' => \SetaPDF_Core_Type_HexString::str2hex(
-                $module->getDataToSign($_SESSION['tmpDocument']->getHashFile())
-            ),
-            'extraCerts' => array_map(function (\SetaPDF_Signer_X509_Certificate $cert) {
-                return $cert->get(\SetaPDF_Signer_X509_Format::PEM);
-            }, $extraCerts->getAll()),
-            'tsUrl'      => isset($_SESSION['tsUrl']) ? $_SESSION['tsUrl'] : false
-        ];                // send it
-//                header('Content-Type: application/json; charset=utf-8');
-//                echo json_encode($response);
-        return $response->withJson($responseData);
-        break;            // This action embeddeds the signature in the CMS container
-        // and optionally requests and embeds the timestamp    }
+        );
+
+        return [
+            'dataToSign'                => \SetaPDF_Core_Type_HexString::str2hex($module->getDataToSign($tmpDocument->getHashFile())),
+            'signatureContentLength'    => $signatureContentLength
+        ];
+    }
 }
diff --git a/src/app/document/controllers/DocumentController.php b/src/app/document/controllers/DocumentController.php
index 834c35155cc91a7520b926fa62f960d426ff85b9..44611742e75155812694ca76de0095ce575c5dc3 100755
--- a/src/app/document/controllers/DocumentController.php
+++ b/src/app/document/controllers/DocumentController.php
@@ -660,7 +660,8 @@ class DocumentController
             }
 
             if ($workflow['signature_mode'] == 'rgs_2stars' ) {
-
+                $hashInformations = CertificateSignatureController::getHashedCertificate(['document' => $fileContent, 'certificate' => $body['certificate']]);
+                return $response->withJson($hashInformations);
             }
         }