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