Replace library/asn1.php with phpseclib

This commit is contained in:
Philipp
2020-09-12 11:57:37 +02:00
parent 0af08ac1d4
commit 11ef3895f5
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();
}