Replace library/asn1.php with phpseclib

This commit is contained in:
Philipp 2020-09-12 11:57:37 +02:00
parent 0af08ac1d4
commit 11ef3895f5
No known key found for this signature in database
GPG key ID: 9A28B7D4FF5667BD
9 changed files with 197 additions and 455 deletions

View file

@ -21,11 +21,13 @@
namespace Friendica\Module;
use ASN_BASE;
use Friendica\BaseModule;
use Friendica\DI;
use Friendica\Model\User;
use Friendica\Network\HTTPException\BadRequestException;
use Friendica\Util\Crypto;
use Friendica\Util\Strings;
use phpseclib\File\ASN1;
/**
* prints the public RSA key of a user
@ -49,18 +51,10 @@ class PublicRSAKey extends BaseModule
throw new BadRequestException();
}
$lines = explode("\n", $user['spubkey']);
unset($lines[0]);
unset($lines[count($lines)]);
$asnString = base64_decode(implode('', $lines));
$asnBase = ASN_BASE::parseASNString($asnString);
$m = $asnBase[0]->asnData[1]->asnData[0]->asnData[0]->asnData;
$e = $asnBase[0]->asnData[1]->asnData[0]->asnData[1]->asnData;
Crypto::pemToMe($user['spubkey'], $modulus, $exponent);
header('Content-type: application/magic-public-key');
echo 'RSA' . '.' . $m . '.' . $e;
echo 'RSA' . '.' . Strings::base64UrlEncode($modulus, true) . '.' . Strings::base64UrlEncode($exponent, true);
exit();
}