diff --git a/lib/Handler/ISignEngineHandler.php b/lib/Handler/ISignEngineHandler.php index 5b69794a78..4c77a35d6b 100644 --- a/lib/Handler/ISignEngineHandler.php +++ b/lib/Handler/ISignEngineHandler.php @@ -17,10 +17,6 @@ public function setCertificate(string $certificate): self; public function getCertificate(): string; public function setPassword(string $password): self; public function getPassword(): string; - /** - * Sign a file - * - * @return string|\OCP\Files\Node string of signed file or Node of signed file - */ - public function sign(); + public function sign(): File; + public function getSignedContent(): string; } diff --git a/lib/Handler/JSignPdfHandler.php b/lib/Handler/JSignPdfHandler.php index d6d8fd3c1f..a68dc25fcf 100644 --- a/lib/Handler/JSignPdfHandler.php +++ b/lib/Handler/JSignPdfHandler.php @@ -13,6 +13,7 @@ use OCA\Libresign\AppInfo\Application; use OCA\Libresign\Exception\LibresignException; use OCA\Libresign\Service\Install\InstallService; +use OCP\Files\File; use OCP\IAppConfig; use Psr\Log\LoggerInterface; @@ -92,10 +93,13 @@ private function getHashAlgorithm(): string { return 'SHA256'; } - /** - * @psalm-suppress MixedReturnStatement - */ - public function sign(): string { + public function sign(): File { + $signedContent = $this->getSignedContent(); + $this->getInputFile()->putContent($signedContent); + return $this->getInputFile(); + } + + public function getSignedContent(): string { $param = $this->getJSignParam() ->setCertificate($this->getCertificate()) ->setPdf($this->getInputFile()->getContent()) diff --git a/lib/Handler/Pkcs12Handler.php b/lib/Handler/Pkcs12Handler.php index 35c28dd3e6..2557781f7b 100644 --- a/lib/Handler/Pkcs12Handler.php +++ b/lib/Handler/Pkcs12Handler.php @@ -423,7 +423,7 @@ public function sign(): File { ->setInputFile($this->getInputFile()) ->setPassword($this->getPassword()) ->setVisibleElements($this->getVisibleElements()) - ->sign(); + ->getSignedContent(); $this->getInputFile()->putContent($signedContent); return $this->getInputFile(); } diff --git a/lib/Handler/Pkcs7Handler.php b/lib/Handler/Pkcs7Handler.php index 32df18b2ba..6c8f9bb9d0 100644 --- a/lib/Handler/Pkcs7Handler.php +++ b/lib/Handler/Pkcs7Handler.php @@ -9,19 +9,11 @@ namespace OCA\Libresign\Handler; use OCP\Files\File; -use OCP\Files\Node; /** * @codeCoverageIgnore */ class Pkcs7Handler extends SignEngineHandler { - /** - * @psalm-suppress MixedReturnStatement - * - * @param Node $fileToSign - * @param Node $certificate - * @param string $passphrase - */ public function sign(): File { $p7sFile = $this->getP7sFile(); openssl_pkcs12_read($this->getCertificate(), $certificateData, $this->getPassword()); @@ -36,6 +28,10 @@ public function sign(): File { return $p7sFile; } + public function getSignedContent(): string { + return $this->sign()->getContent(); + } + public function getP7sFile(): File { $newName = $this->getInputFile()->getName() . '.p7s'; $p7sFile = $this->getInputFile() diff --git a/lib/Handler/SignEngineHandler.php b/lib/Handler/SignEngineHandler.php index 0897107f41..2ef6b13402 100644 --- a/lib/Handler/SignEngineHandler.php +++ b/lib/Handler/SignEngineHandler.php @@ -66,4 +66,8 @@ public function setVisibleElements(array $visibleElements): self { public function getVisibleElements(): array { return $this->visibleElements; } + + public function getSignedContent(): string { + return $this->sign()->getContent(); + } } diff --git a/tests/Unit/Handler/JSignPdfHandlerTest.php b/tests/Unit/Handler/JSignPdfHandlerTest.php index 496d6a5ad7..17efc08adc 100644 --- a/tests/Unit/Handler/JSignPdfHandlerTest.php +++ b/tests/Unit/Handler/JSignPdfHandlerTest.php @@ -38,7 +38,7 @@ public function testSignExistingFileSuccess():void { $this->class->setInputFile($inputFile); $this->class->setCertificate(''); $this->class->setPassword('password'); - $actual = $this->class->sign(); + $actual = $this->class->getSignedContent(); $this->assertEquals('content', $actual); } }