Org.BouncyCastle.Crypto.Tls.NamedCurveHelper.GetECParameters C# (CSharp) Метод

GetECParameters() статический приватный Метод

static private GetECParameters ( Org.BouncyCastle.Crypto.Tls.NamedCurve namedCurve ) : ECDomainParameters
namedCurve Org.BouncyCastle.Crypto.Tls.NamedCurve
Результат Org.BouncyCastle.Crypto.Parameters.ECDomainParameters
	    internal static ECDomainParameters GetECParameters(NamedCurve namedCurve)
	    {
            if (!Enum.IsDefined(typeof(NamedCurve), namedCurve))
                return null;

            string curveName = namedCurve.ToString();

            // Lazily created the first time a particular curve is accessed
	        X9ECParameters ecP = SecNamedCurves.GetByName(curveName);

            if (ecP == null)
                return null;

	        // It's a bit inefficient to do this conversion every time
	        return new ECDomainParameters(ecP.Curve, ecP.G, ecP.N, ecP.H, ecP.GetSeed());
	    }
	}

Usage Example

Пример #1
0
        public override void ProcessServerKeyExchange(Stream input)
        {
            SecurityParameters securityParameters = context.SecurityParameters;

            ISigner signer = InitSigner(tlsSigner, securityParameters);
            Stream  sigIn  = new SignerStream(input, signer, null);

            ECCurveType        curveType = (ECCurveType)TlsUtilities.ReadUint8(sigIn);
            ECDomainParameters curve_params;

            //  Currently, we only support named curves
            if (curveType == ECCurveType.named_curve)
            {
                NamedCurve namedCurve = (NamedCurve)TlsUtilities.ReadUint16(sigIn);

                // TODO Check namedCurve is one we offered?

                curve_params = NamedCurveHelper.GetECParameters(namedCurve);
            }
            else
            {
                // TODO Add support for explicit curve parameters (read from sigIn)

                throw new TlsFatalAlert(AlertDescription.handshake_failure);
            }

            byte[] publicBytes = TlsUtilities.ReadOpaque8(sigIn);

            byte[] sigByte = TlsUtilities.ReadOpaque16(input);
            if (!signer.VerifySignature(sigByte))
            {
                throw new TlsFatalAlert(AlertDescription.decrypt_error);
            }

            // TODO Check curve_params not null

            ECPoint Q = curve_params.Curve.DecodePoint(publicBytes);

            this.ecAgreeServerPublicKey = ValidateECPublicKey(new ECPublicKeyParameters(Q, curve_params));
        }
NamedCurveHelper