Reorganized classes and started to write RSA class
This commit is contained in:
parent
5edd3f5cb7
commit
651459edb0
@ -2,7 +2,7 @@
|
||||
[![StyleCI](https://styleci.io/repos/61838413/shield)](https://styleci.io/repos/61838413)
|
||||
|
||||
|
||||
PHP implementation of MTProto, converted from [telepy](https://github.com/griganton/telepy) using [py2php](https://github.com/dan-da/py2php).
|
||||
PHP implementation of MTProto, based on [telepy](https://github.com/griganton/telepy_old).
|
||||
|
||||
This is a WIP.
|
||||
|
||||
|
@ -0,0 +1,19 @@
|
||||
<?php
|
||||
namespace danog\MadelineProto;
|
||||
class RSA extends TL {
|
||||
public $key;
|
||||
public $n;
|
||||
public $e;
|
||||
public $fp;
|
||||
public function __construct($key) {
|
||||
$this->key = new \phpseclib\Crypt\RSA($key);
|
||||
$this->n = $key->modulus;
|
||||
$this->e = $key->exponent;
|
||||
$this->fp = new \phpseclib\Math\BigInteger(substr(sha1($this->serialize_param('bytes', $this->n->toBytes()).$this->serialize_param('bytes', $this->e->toBytes()), true), -8), 256);
|
||||
}
|
||||
public function encrypt($data) {
|
||||
$bigintdata = new \phpseclib\Math\BigInteger($data, 256);
|
||||
return $bigintdata->powMod($this->e, $this->n)->toBytes();
|
||||
}
|
||||
}
|
||||
|
@ -16,7 +16,24 @@ class mtproto extends Tools
|
||||
public function __construct($settings)
|
||||
{
|
||||
// Set default settings
|
||||
$default_settings = ['ip' => '149.154.167.50', 'port' => '443', 'protocol' => 'tcp', 'auth_key' => null, 'server_salt' => null, 'api_id' => 25628, 'api_hash' => '1fe17cda7d355166cdaa71f04122873c', 'tl_schema' => 'https://core.telegram.org/schema/mtproto-json', 'rsa_pub' => __DIR__.'/rsa.pub'];
|
||||
$default_settings = [
|
||||
'ip' => '149.154.167.50',
|
||||
'port' => '443',
|
||||
'protocol' => 'tcp',
|
||||
'auth_key' => null,
|
||||
'server_salt' => null,
|
||||
'api_id' => 25628,
|
||||
'api_hash' => '1fe17cda7d355166cdaa71f04122873c',
|
||||
'tl_schema' => 'https://core.telegram.org/schema/mtproto-json',
|
||||
'rsa_key' => '-----BEGIN RSA PUBLIC KEY-----
|
||||
MIIBCgKCAQEAwVACPi9w23mF3tBkdZz+zwrzKOaaQdr01vAbU4E1pvkfj4sqDsm6
|
||||
lyDONS789sVoD/xCS9Y0hkkC3gtL1tSfTlgCMOOul9lcixlEKzwKENj1Yz/s7daS
|
||||
an9tqw3bfUV/nqgbhGX81v/+7RFAEd+RwFnK7a+XYl9sluzHRyVVaTTveB2GazTw
|
||||
Efzk2DWgkBluml8OREmvfraX3bkHZJTKX4EQSjBbbdJ2ZXIsRrYOXfaA+xayEGB+
|
||||
8hdlLmAjbCVfaigxX0CDqWeR1yFL9kwd9P0NsZRPsmoqVwMbMu7mStFai6aIhc3n
|
||||
Slv8kg9qv1m6XHVQY3PnEw+QQtqSIXklHwIDAQAB
|
||||
-----END RSA PUBLIC KEY-----'
|
||||
];
|
||||
foreach ($default_settings as $key => $param) {
|
||||
if (!isset($settings[$key])) {
|
||||
$settings[$key] = $param;
|
||||
@ -27,6 +44,8 @@ class mtproto extends Tools
|
||||
// Connect to servers
|
||||
$this->sock = new Connection($this->settings['ip_address'], $this->settings['ip_address'], $this->settings['protocol']);
|
||||
|
||||
// Load rsa key
|
||||
$this->key = new RSA($settings["rsa_key"]);
|
||||
// Istantiate struct class
|
||||
$this->struct = new \danog\PHP\Struct();
|
||||
// Istantiate prime class
|
||||
|
Loading…
Reference in New Issue
Block a user