< Summary

Information
Class: Renci.SshNet.Security.Org.BouncyCastle.Math.EC.Multiplier.AbstractECMultiplier
Assembly: Renci.SshNet
File(s): \home\appveyor\projects\ssh-net\src\Renci.SshNet\Security\BouncyCastle\math\ec\multiplier\AbstractECMultiplier.cs
Line coverage
90%
Covered lines: 10
Uncovered lines: 1
Coverable lines: 11
Total lines: 29
Line coverage: 90.9%
Branch coverage
50%
Covered branches: 3
Total branches: 6
Branch coverage: 50%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Cyclomatic complexity Line coverage
Multiply(...)50%687.5%
CheckResult(...)100%1100%

File(s)

\home\appveyor\projects\ssh-net\src\Renci.SshNet\Security\BouncyCastle\math\ec\multiplier\AbstractECMultiplier.cs

#LineLine coverage
 1namespace Renci.SshNet.Security.Org.BouncyCastle.Math.EC.Multiplier
 2{
 3    internal abstract class AbstractECMultiplier
 4        : ECMultiplier
 5    {
 6        public virtual ECPoint Multiply(ECPoint p, BigInteger k)
 187        {
 188            int sign = k.SignValue;
 189            if (sign == 0 || p.IsInfinity)
 010                return p.Curve.Infinity;
 11
 1812            ECPoint positive = MultiplyPositive(p, k.Abs());
 1813            ECPoint result = sign > 0 ? positive : positive.Negate();
 14
 15            /*
 16             * Although the various multipliers ought not to produce invalid output under normal
 17             * circumstances, a final check here is advised to guard against fault attacks.
 18             */
 1819            return CheckResult(result);
 1820        }
 21
 22        protected abstract ECPoint MultiplyPositive(ECPoint p, BigInteger k);
 23
 24        protected virtual ECPoint CheckResult(ECPoint p)
 1825        {
 1826            return ECAlgorithms.ImplCheckResult(p);
 1827        }
 28    }
 29}