PNG IHDR x sBIT|d pHYs + tEXtSoftware www.inkscape.org< ,tEXtComment
<?php
namespace Mdanter\Ecc;
use Mdanter\Ecc\Crypto\Signature\Signer;
use Mdanter\Ecc\Curves\NistCurve;
use Mdanter\Ecc\Curves\SecgCurve;
use Mdanter\Ecc\Math\GmpMathInterface;
use Mdanter\Ecc\Math\MathAdapterFactory;
use Mdanter\Ecc\Primitives\CurveFp;
use Mdanter\Ecc\Primitives\CurveParameters;
/**
* Static factory class providing factory methods to work with NIST and SECG recommended curves.
*/
class EccFactory
{
/**
* Selects and creates the most appropriate adapter for the running environment.
*
* @param $debug [optional] Set to true to get a trace of all mathematical operations
*
* @throws \RuntimeException
* @return GmpMathInterface
*/
public static function getAdapter($debug = false)
{
return MathAdapterFactory::getAdapter($debug);
}
/**
* Returns a factory to create NIST Recommended curves and generators.
*
* @param GmpMathInterface $adapter [optional] Defaults to the return value of EccFactory::getAdapter().
* @return NistCurve
*/
public static function getNistCurves(GmpMathInterface $adapter = null)
{
return new NistCurve($adapter ?: self::getAdapter());
}
/**
* Returns a factory to return SECG Recommended curves and generators.
*
* @param GmpMathInterface $adapter [optional] Defaults to the return value of EccFactory::getAdapter().
* @return SecgCurve
*/
public static function getSecgCurves(GmpMathInterface $adapter = null)
{
return new SecgCurve($adapter ?: self::getAdapter());
}
/**
* Creates a new curve from arbitrary parameters.
*
* @param \GMP $prime
* @param \GMP $a
* @param \GMP $b
* @param GmpMathInterface $adapter [optional] Defaults to the return value of EccFactory::getAdapter().
* @return \Mdanter\Ecc\Primitives\CurveFpInterface
*/
public static function createCurve($bitSize, \GMP $prime, \GMP $a, \GMP $b, GmpMathInterface $adapter = null)
{
return new CurveFp(new CurveParameters($bitSize, $prime, $a, $b), $adapter ?: self::getAdapter());
}
/**
*
* @param GmpMathInterface $adapter [optional] Defaults to the return value of EccFactory::getAdapteR()
* @return \Mdanter\Ecc\Crypto\Signature\Signer
*/
public static function getSigner(GmpMathInterface $adapter = null)
{
return new Signer($adapter ?: self::getAdapter());
}
}
b IDATxytVսϓ22 A@IR:hCiZ[v*E:WũZA ^dQeQ @ !jZ'>gsV仿$|?g)&x-E