Reorganized classes and started to write RSA class

This commit is contained in:
Daniil Gentili 2016-08-08 16:09:11 +02:00
parent 5edd3f5cb7
commit 651459edb0
4 changed files with 40 additions and 2 deletions

View File

@ -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.

View File

@ -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();
}
}

View File

@ -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