1<?php
2
3/**
4 * GMP Modular Exponentiation Engine
5 *
6 * PHP version 5 and 7
7 *
8 * @category  Math
9 * @package   BigInteger
10 * @author    Jim Wigginton <terrafrost@php.net>
11 * @copyright 2017 Jim Wigginton
12 * @license   http://www.opensource.org/licenses/mit-license.html  MIT License
13 * @link      http://pear.php.net/package/Math_BigInteger
14 */
15
16namespace phpseclib3\Math\BigInteger\Engines\GMP;
17
18use phpseclib3\Math\BigInteger\Engines\GMP;
19
20/**
21 * GMP Modular Exponentiation Engine
22 *
23 * @package GMP
24 * @author  Jim Wigginton <terrafrost@php.net>
25 * @access  public
26 */
27abstract class DefaultEngine extends GMP
28{
29    /**
30     * Performs modular exponentiation.
31     *
32     * @param GMP $x
33     * @param GMP $e
34     * @param GMP $n
35     * @return GMP
36     */
37    protected static function powModHelper(GMP $x, GMP $e, GMP $n)
38    {
39        $temp = new GMP();
40        $temp->value = gmp_powm($x->value, $e->value, $n->value);
41
42        return $x->normalize($temp);
43    }
44}
45