1<?php
2
3/**
4 * Built-In BCMath 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\BCMath;
17
18use phpseclib3\Math\BigInteger\Engines\BCMath;
19
20/**
21 * Built-In BCMath Modular Exponentiation Engine
22 *
23 * @package BCMath
24 * @author  Jim Wigginton <terrafrost@php.net>
25 * @access  public
26 */
27abstract class BuiltIn extends BCMath
28{
29    /**
30     * Performs modular exponentiation.
31     *
32     * @param BCMath $x
33     * @param BCMath $e
34     * @param BCMath $n
35     * @return BCMath
36     */
37    protected static function powModHelper(BCMath $x, BCMath $e, BCMath $n)
38    {
39        $temp = new BCMath();
40        $temp->value = bcpowmod($x->value, $e->value, $n->value);
41
42        return $x->normalize($temp);
43    }
44}
45