‪TYPO3CMS  9.5
RsaPublicKeyGenerationController.php
Go to the documentation of this file.
1 <?php
3 
4 /*
5  * This file is part of the TYPO3 CMS project.
6  *
7  * It is free software; you can redistribute it and/or modify it under
8  * the terms of the GNU General Public License, either version 2
9  * of the License, or any later version.
10  *
11  * For the full copyright and license information, please read the
12  * LICENSE.txt file that was distributed with this source code.
13  *
14  * The TYPO3 project - inspiring people to share!
15  */
16 
17 use Psr\Http\Message\ResponseInterface;
18 use Psr\Http\Message\ServerRequestInterface;
23 
28 {
32  protected ‪$encoder;
33 
38  public function ‪__construct(‪RsaEncryptionEncoder ‪$encoder = null)
39  {
40  $this->encoder = ‪$encoder ?: GeneralUtility::makeInstance(RsaEncryptionEncoder::class);
41  }
42 
47  public function ‪processRequest(ServerRequestInterface $request): ResponseInterface
48  {
49  $keyPair = $this->encoder->getRsaPublicKey();
50 
51  if ($keyPair === null) {
52  // add a HTTP 500 error code, if an error occurred
53  return new ‪JsonResponse(null, 500);
54  }
55 
56  switch ($request->getHeaderLine('content-type')) {
57  case 'application/json':
58  $data = [
59  'publicKeyModulus' => $keyPair->getPublicKeyModulus(),
60  'exponent' => sprintf('%x', $keyPair->getExponent()),
61  ];
62  $response = new ‪JsonResponse($data);
63  break;
64 
65  default:
66  trigger_error('Requesting RSA public keys without "Content-Type: application/json" will be removed in TYPO3 v10.0. Add this header to your AJAX request.', E_USER_DEPRECATED);
67 
68  $content = $keyPair->getPublicKeyModulus() . ':' . sprintf('%x', $keyPair->getExponent()) . ':';
69  $response = new ‪Response('php://temp', 200, ['Content-Type' => 'application/json; charset=utf-8']);
70  $response->getBody()->write($content);
71  break;
72  }
73 
74  return $response;
75  }
76 }
‪TYPO3\CMS\Rsaauth\Controller\RsaPublicKeyGenerationController\$encoder
‪RsaEncryptionEncoder $encoder
Definition: RsaPublicKeyGenerationController.php:31
‪TYPO3\CMS\Rsaauth\Controller\RsaPublicKeyGenerationController\processRequest
‪ResponseInterface processRequest(ServerRequestInterface $request)
Definition: RsaPublicKeyGenerationController.php:46
‪TYPO3\CMS\Rsaauth\Controller\RsaPublicKeyGenerationController
Definition: RsaPublicKeyGenerationController.php:28
‪TYPO3\CMS\Core\Http\Response
Definition: Response.php:28
‪TYPO3\CMS\Rsaauth\RsaEncryptionEncoder
Definition: RsaEncryptionEncoder.php:29
‪TYPO3\CMS\Core\Http\JsonResponse
Definition: JsonResponse.php:25
‪TYPO3\CMS\Core\Utility\GeneralUtility
Definition: GeneralUtility.php:45
‪TYPO3\CMS\Rsaauth\Controller
Definition: RsaPublicKeyGenerationController.php:2
‪TYPO3\CMS\Rsaauth\Controller\RsaPublicKeyGenerationController\__construct
‪__construct(RsaEncryptionEncoder $encoder=null)
Definition: RsaPublicKeyGenerationController.php:37