mirror of
https://github.com/danog/phpseclib.git
synced 2024-12-03 18:18:05 +01:00
make it so BigIntegers can be JSON serialized
This commit is contained in:
parent
815aa23b39
commit
26d8f7a250
@ -40,7 +40,7 @@ use phpseclib3\Math\BigInteger\Engines\Engine;
|
|||||||
* @author Jim Wigginton <terrafrost@php.net>
|
* @author Jim Wigginton <terrafrost@php.net>
|
||||||
* @access public
|
* @access public
|
||||||
*/
|
*/
|
||||||
class BigInteger
|
class BigInteger implements \JsonSerializable
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* Main Engine
|
* Main Engine
|
||||||
@ -438,6 +438,20 @@ class BigInteger
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* JSON Serialize
|
||||||
|
*
|
||||||
|
* Will be called, automatically, when json_encode() is called on a BigInteger object.
|
||||||
|
*/
|
||||||
|
public function jsonSerialize()
|
||||||
|
{
|
||||||
|
$result = ['hex' => $this->toHex(true)];
|
||||||
|
if ($this->precision > 0) {
|
||||||
|
$result['precision'] = $this->getPrecision();
|
||||||
|
}
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Performs modular exponentiation.
|
* Performs modular exponentiation.
|
||||||
*
|
*
|
||||||
|
@ -28,7 +28,7 @@ use phpseclib3\Math\BigInteger;
|
|||||||
* @author Jim Wigginton <terrafrost@php.net>
|
* @author Jim Wigginton <terrafrost@php.net>
|
||||||
* @access public
|
* @access public
|
||||||
*/
|
*/
|
||||||
abstract class Engine
|
abstract class Engine implements \JsonSerializable
|
||||||
{
|
{
|
||||||
/* final protected */ const PRIMES = [
|
/* final protected */ const PRIMES = [
|
||||||
3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59,
|
3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59,
|
||||||
@ -371,6 +371,20 @@ abstract class Engine
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* JSON Serialize
|
||||||
|
*
|
||||||
|
* Will be called, automatically, when json_encode() is called on a BigInteger object.
|
||||||
|
*/
|
||||||
|
public function jsonSerialize()
|
||||||
|
{
|
||||||
|
$result = ['hex' => $this->toHex(true)];
|
||||||
|
if ($this->precision > 0) {
|
||||||
|
$result['precision'] = $this->precision;
|
||||||
|
}
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Converts a BigInteger to a base-10 number.
|
* Converts a BigInteger to a base-10 number.
|
||||||
*
|
*
|
||||||
|
@ -21,6 +21,18 @@ namespace phpseclib3\Math\Common\FiniteField;
|
|||||||
* @author Jim Wigginton <terrafrost@php.net>
|
* @author Jim Wigginton <terrafrost@php.net>
|
||||||
* @access public
|
* @access public
|
||||||
*/
|
*/
|
||||||
abstract class Integer
|
abstract class Integer implements \JsonSerializable
|
||||||
{
|
{
|
||||||
|
/**
|
||||||
|
* JSON Serialize
|
||||||
|
*
|
||||||
|
* Will be called, automatically, when json_encode() is called on a BigInteger object.
|
||||||
|
*
|
||||||
|
* PHP Serialize isn't supported because unserializing would require the factory be
|
||||||
|
* serialized as well and that just sounds like too much
|
||||||
|
*/
|
||||||
|
public function jsonSerialize()
|
||||||
|
{
|
||||||
|
return ['hex' => $this->toHex(true)];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user