]> git.mxchange.org Git - friendica.git/blob - src/Module/PublicRSAKey.php
Remove deprecated App::getHostName() - process methods to DI::baseUrl()->getHostName()
[friendica.git] / src / Module / PublicRSAKey.php
1 <?php
2
3 namespace Friendica\Module;
4
5 use ASN_BASE;
6 use Friendica\BaseModule;
7 use Friendica\DI;
8 use Friendica\Model\User;
9 use Friendica\Network\HTTPException\BadRequestException;
10
11 /**
12  * prints the public RSA key of a user
13  */
14 class PublicRSAKey extends BaseModule
15 {
16         public static function rawContent(array $parameters = [])
17         {
18                 $app = DI::app();
19
20                 // @TODO: Replace with parameter from router
21                 if ($app->argc !== 2) {
22                         throw new BadRequestException();
23                 }
24
25                 // @TODO: Replace with parameter from router
26                 $nick = $app->argv[1];
27
28                 $user = User::getByNickname($nick, ['spubkey']);
29                 if (empty($user) || empty($user['spubkey'])) {
30                         throw new BadRequestException();
31                 }
32
33                 $lines = explode("\n", $user['spubkey']);
34                 unset($lines[0]);
35                 unset($lines[count($lines)]);
36
37                 $asnString = base64_decode(implode('', $lines));
38                 $asnBase = ASN_BASE::parseASNString($asnString);
39
40                 $m = $asnBase[0]->asnData[1]->asnData[0]->asnData[0]->asnData;
41                 $e = $asnBase[0]->asnData[1]->asnData[0]->asnData[1]->asnData;
42
43                 header('Content-type: application/magic-public-key');
44                 echo 'RSA' . '.' . $m . '.' . $e;
45
46                 exit();
47         }
48 }