[BUGFIX] Do not deprecate RsaEncryptionEncoder::getRsaPublicKey() 78/56378/4
authorMathias Brodala <mbrodala@pagemachine.de>
Tue, 20 Mar 2018 11:34:43 +0000 (12:34 +0100)
committerBenni Mack <benni@typo3.org>
Tue, 20 Mar 2018 12:55:32 +0000 (13:55 +0100)
Also use this API in the RSA public key controller to avoid code
duplication.

Change-Id: Ief09eff9fb8f2370d545f93ec8187ae64b1c3f1a
Resolves: #84497
Releases: master
Reviewed-on: https://review.typo3.org/56378
Reviewed-by: Nicole Cordes <typo3@cordes.co>
Tested-by: Nicole Cordes <typo3@cordes.co>
Tested-by: TYPO3com <no-reply@typo3.com>
Reviewed-by: Benni Mack <benni@typo3.org>
Tested-by: Benni Mack <benni@typo3.org>
typo3/sysext/core/Documentation/Changelog/master/Deprecation-84407-AJAXRequestMethodsInRsaEncryptionEncoder.rst
typo3/sysext/rsaauth/Classes/Controller/RsaPublicKeyGenerationController.php
typo3/sysext/rsaauth/Classes/RsaEncryptionEncoder.php

index ccfe680..baf9f8e 100644 (file)
@@ -12,7 +12,6 @@ Description
 All methods related to AJAX requests in :php:`\TYPO3\CMS\Rsaauth\RsaEncryptionEncoder` have been
 deprecated:
 
-* :php:`getRsaPublicKey()`
 * :php:`getRsaPublicKeyAjaxHandler()`
 
 The ``rsa_publickey`` AJAX route has been adapted to use the
@@ -23,20 +22,19 @@ RSA key retrieval via eID in the frontend.
 Impact
 ======
 
-Calling one of the above methods on an instance of :php:`RsaEncryptionEncoder` will throw a
+Calling the above method on an instance of :php:`RsaEncryptionEncoder` will throw a
 deprecation warning in v9 and a PHP fatal in v10.
 
 
 Affected Installations
 ======================
 
-All extensions that call the deprecated methods are affected.
+All extensions that call the deprecated method are affected.
 
 
 Migration
 =========
 
-Extensions should not use the deprecated methods but directly request a key pair via the RSA
-backend API.
+Extensions should use the AJAX route `rsa_publickey` instead of the deprecated method.
 
 .. index:: Backend, Frontend, PHP-API, FullyScanned
index c9a49ee..5bc9338 100644 (file)
@@ -18,8 +18,8 @@ use Psr\Http\Message\ResponseInterface;
 use Psr\Http\Message\ServerRequestInterface;
 use TYPO3\CMS\Core\Http\JsonResponse;
 use TYPO3\CMS\Core\Http\Response;
-use TYPO3\CMS\Rsaauth\Backend\BackendFactory;
-use TYPO3\CMS\Rsaauth\Storage\StorageFactory;
+use TYPO3\CMS\Core\Utility\GeneralUtility;
+use TYPO3\CMS\Rsaauth\RsaEncryptionEncoder;
 
 /**
  * eID script "RsaPublicKeyGenerationController" to generate an rsa key
@@ -27,24 +27,31 @@ use TYPO3\CMS\Rsaauth\Storage\StorageFactory;
 class RsaPublicKeyGenerationController
 {
     /**
+     * @var RsaEncryptionEncoder
+     */
+    protected $encoder;
+
+    /**
+     * Set up dependencies
+     */
+    public function __construct(RsaEncryptionEncoder $encoder = null)
+    {
+        $this->encoder = $encoder ?: GeneralUtility::makeInstance(RsaEncryptionEncoder::class);
+    }
+
+    /**
      * @param ServerRequestInterface $request
      * @return ResponseInterface
      */
     public function processRequest(ServerRequestInterface $request): ResponseInterface
     {
-        /** @var \TYPO3\CMS\Rsaauth\Backend\AbstractBackend $backend */
-        $backend = BackendFactory::getBackend();
+        $keyPair = $this->encoder->getRsaPublicKey();
 
-        if ($backend === null) {
+        if ($keyPair === null) {
             // add a HTTP 500 error code, if an error occurred
             return new JsonResponse(null, 500);
         }
 
-        $keyPair = $backend->createNewKeyPair();
-        $storage = StorageFactory::getStorage();
-        $storage->put($keyPair->getPrivateKey());
-        session_commit();
-
         switch ($request->getHeaderLine('content-type')) {
             case 'application/json':
                 $data = [
index 1383328..26aff53 100644 (file)
@@ -1,4 +1,5 @@
 <?php
+declare(strict_types = 1);
 namespace TYPO3\CMS\Rsaauth;
 
 /*
@@ -89,15 +90,12 @@ class RsaEncryptionEncoder implements SingletonInterface
      * Gets RSA Public Key.
      *
      * @return Keypair|null
-     *
-     * @deprecated since TYPO3 v9. Will be removed in v10.
      */
-    public function getRsaPublicKey()
+    public function getRsaPublicKey(): ?Keypair
     {
-        trigger_error('Method getRsaPublicKey() will be removed in v10.', E_USER_DEPRECATED);
-
         $keyPair = null;
         $backend = Backend\BackendFactory::getBackend();
+
         if ($backend !== null) {
             $keyPair = $backend->createNewKeyPair();
             $storage = Storage\StorageFactory::getStorage();