ReadECParameter() public static method

public static ReadECParameter ( Stream input ) : BigInteger
input Stream
return Org.BouncyCastle.Math.BigInteger
Ejemplo n.º 1
0
        public static int ReadECExponent(int fieldSize, Stream input)
        {
            BigInteger bigInteger = TlsEccUtilities.ReadECParameter(input);

            if (bigInteger.BitLength < 32)
            {
                int intValue = bigInteger.IntValue;
                if (intValue > 0 && intValue < fieldSize)
                {
                    return(intValue);
                }
            }
            throw new TlsFatalAlert(47);
        }
Ejemplo n.º 2
0
        public static ECDomainParameters ReadECParameters(int[] namedCurves, byte[] ecPointFormats, Stream input)
        {
            ECDomainParameters result;

            try
            {
                switch (TlsUtilities.ReadUint8(input))
                {
                case 1:
                {
                    TlsEccUtilities.CheckNamedCurve(namedCurves, 65281);
                    BigInteger bigInteger  = TlsEccUtilities.ReadECParameter(input);
                    BigInteger a           = TlsEccUtilities.ReadECFieldElement(bigInteger.BitLength, input);
                    BigInteger b           = TlsEccUtilities.ReadECFieldElement(bigInteger.BitLength, input);
                    byte[]     encoding    = TlsUtilities.ReadOpaque8(input);
                    BigInteger bigInteger2 = TlsEccUtilities.ReadECParameter(input);
                    BigInteger bigInteger3 = TlsEccUtilities.ReadECParameter(input);
                    ECCurve    curve       = new FpCurve(bigInteger, a, b, bigInteger2, bigInteger3);
                    ECPoint    g           = TlsEccUtilities.DeserializeECPoint(ecPointFormats, curve, encoding);
                    result = new ECDomainParameters(curve, g, bigInteger2, bigInteger3);
                    break;
                }

                case 2:
                {
                    TlsEccUtilities.CheckNamedCurve(namedCurves, 65282);
                    int  num = TlsUtilities.ReadUint16(input);
                    byte b2  = TlsUtilities.ReadUint8(input);
                    if (!ECBasisType.IsValid(b2))
                    {
                        throw new TlsFatalAlert(47);
                    }
                    int num2 = TlsEccUtilities.ReadECExponent(num, input);
                    int k    = -1;
                    int k2   = -1;
                    if (b2 == 2)
                    {
                        k  = TlsEccUtilities.ReadECExponent(num, input);
                        k2 = TlsEccUtilities.ReadECExponent(num, input);
                    }
                    BigInteger a2          = TlsEccUtilities.ReadECFieldElement(num, input);
                    BigInteger b3          = TlsEccUtilities.ReadECFieldElement(num, input);
                    byte[]     encoding2   = TlsUtilities.ReadOpaque8(input);
                    BigInteger bigInteger4 = TlsEccUtilities.ReadECParameter(input);
                    BigInteger bigInteger5 = TlsEccUtilities.ReadECParameter(input);
                    ECCurve    curve2      = (b2 == 2) ? new F2mCurve(num, num2, k, k2, a2, b3, bigInteger4, bigInteger5) : new F2mCurve(num, num2, a2, b3, bigInteger4, bigInteger5);
                    ECPoint    g2          = TlsEccUtilities.DeserializeECPoint(ecPointFormats, curve2, encoding2);
                    result = new ECDomainParameters(curve2, g2, bigInteger4, bigInteger5);
                    break;
                }

                case 3:
                {
                    int namedCurve = TlsUtilities.ReadUint16(input);
                    if (!NamedCurve.RefersToASpecificNamedCurve(namedCurve))
                    {
                        throw new TlsFatalAlert(47);
                    }
                    TlsEccUtilities.CheckNamedCurve(namedCurves, namedCurve);
                    result = TlsEccUtilities.GetParametersForNamedCurve(namedCurve);
                    break;
                }

                default:
                    throw new TlsFatalAlert(47);
                }
            }
            catch (Exception alertCause)
            {
                throw new TlsFatalAlert(47, alertCause);
            }
            return(result);
        }