< Summary

Information
Class: Renci.SshNet.Security.Org.BouncyCastle.Math.Field.FiniteFields
Assembly: Renci.SshNet
File(s): \home\appveyor\projects\ssh-net\src\Renci.SshNet\Security\BouncyCastle\math\field\FiniteFields.cs
Line coverage
22%
Covered lines: 6
Uncovered lines: 21
Coverable lines: 27
Total lines: 54
Line coverage: 22.2%
Branch coverage
18%
Covered branches: 3
Total branches: 16
Branch coverage: 18.7%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Cyclomatic complexity Line coverage
.cctor()100%10%
GetBinaryExtensionField(...)0%60%
GetPrimeField(...)30%1046.15%

File(s)

\home\appveyor\projects\ssh-net\src\Renci.SshNet\Security\BouncyCastle\math\field\FiniteFields.cs

#LineLine coverage
 1using System;
 2
 3namespace Renci.SshNet.Security.Org.BouncyCastle.Math.Field
 4{
 5    internal abstract class FiniteFields
 6    {
 07        internal static readonly IFiniteField GF_2 = new PrimeField(BigInteger.ValueOf(2));
 08        internal static readonly IFiniteField GF_3 = new PrimeField(BigInteger.ValueOf(3));
 9
 10        public static IPolynomialExtensionField GetBinaryExtensionField(int[] exponents)
 011        {
 012            if (exponents[0] != 0)
 013            {
 014                throw new ArgumentException("Irreducible polynomials in GF(2) must have constant term", "exponents");
 15            }
 016            for (int i = 1; i < exponents.Length; ++i)
 017            {
 018                if (exponents[i] <= exponents[i - 1])
 019                {
 020                    throw new ArgumentException("Polynomial exponents must be montonically increasing", "exponents");
 21                }
 022            }
 23
 024            return new GenericPolynomialExtensionField(GF_2, new GF2Polynomial(exponents));
 025        }
 26
 27    //    public static IPolynomialExtensionField GetTernaryExtensionField(Term[] terms)
 28    //    {
 29    //        return new GenericPolynomialExtensionField(GF_3, new GF3Polynomial(terms));
 30    //    }
 31
 32        public static IFiniteField GetPrimeField(BigInteger characteristic)
 333        {
 334            int bitLength = characteristic.BitLength;
 335            if (characteristic.SignValue <= 0 || bitLength < 2)
 036            {
 037                throw new ArgumentException("Must be >= 2", "characteristic");
 38            }
 39
 340            if (bitLength < 3)
 041            {
 042                switch (characteristic.IntValue)
 43                {
 44                case 2:
 045                    return GF_2;
 46                case 3:
 047                    return GF_3;
 48                }
 049            }
 50
 351            return new PrimeField(characteristic);
 352        }
 53    }
 54}