| 2095 | } |
| 2096 | |
| 2097 | Integer a_exp_b_mod_c(const Integer &x, const Integer& e, const Integer& m) |
| 2098 | { |
| 2099 | if (m.IsEven()) |
| 2100 | { |
| 2101 | ModularArithmetic mr(m); |
| 2102 | return mr.ConvertOut(mr.Exponentiate(mr.ConvertIn(x), e)); |
| 2103 | } |
| 2104 | else |
| 2105 | { |
| 2106 | MontgomeryRepresentation mr(m); |
| 2107 | return mr.ConvertOut(mr.Exponentiate(mr.ConvertIn(x), e)); |
| 2108 | } |
| 2109 | } |
| 2110 | |
| 2111 | Integer Integer::Gcd(const Integer &a, const Integer &b) |
| 2112 | { |
no test coverage detected