public override void ProcessServerKeyExchange(Stream input)
        {
            SecurityParameters securityParameters = mContext.SecurityParameters;

            SignerInputBuffer buf   = new SignerInputBuffer();
            Stream            teeIn = new TeeInputStream(input, buf);

            ECDomainParameters curveParams = TlsEccUtilities.ReadECParameters(mNamedCurves, mClientECPointFormats, teeIn);

            byte[] point = TlsUtilities.ReadOpaque8(teeIn);

            DigitallySigned signedParams = ParseSignature(input);

            mSignatureAndHashAlgorithm = signedParams.Algorithm;

            ISigner signer = InitVerifyer(mTlsSigner, signedParams.Algorithm, securityParameters);

            buf.UpdateSigner(signer);
            if (!signer.VerifySignature(signedParams.Signature))
            {
                throw new TlsFatalAlert(AlertDescription.decrypt_error);
            }

            mECAgreePublicKey = TlsEccUtilities.ValidateECPublicKey(TlsEccUtilities.DeserializeECPublicKey(
                                                                        mClientECPointFormats, curveParams, point));
        }
Exemplo n.º 2
0
    public override void ProcessServerKeyExchange(Stream input)
    {
        SecurityParameters securityParameters = mContext.SecurityParameters;
        SignerInputBuffer  signerInputBuffer  = new SignerInputBuffer();
        Stream             input2             = new TeeInputStream(input, signerInputBuffer);
        ServerDHParams     serverDHParams     = ServerDHParams.Parse(input2);
        DigitallySigned    digitallySigned    = ParseSignature(input);
        ISigner            signer             = InitVerifyer(mTlsSigner, digitallySigned.Algorithm, securityParameters);

        signerInputBuffer.UpdateSigner(signer);
        if (!signer.VerifySignature(digitallySigned.Signature))
        {
            throw new TlsFatalAlert(51);
        }
        mDHAgreePublicKey = TlsDHUtilities.ValidateDHPublicKey(serverDHParams.PublicKey);
        mDHParameters     = ValidateDHParameters(mDHAgreePublicKey.Parameters);
    }
    public override void ProcessServerKeyExchange(Stream input)
    {
        SecurityParameters securityParameters = mContext.SecurityParameters;
        SignerInputBuffer  signerInputBuffer  = new SignerInputBuffer();
        Stream             input2             = new TeeInputStream(input, signerInputBuffer);
        ECDomainParameters curve_params       = TlsEccUtilities.ReadECParameters(mNamedCurves, mClientECPointFormats, input2);

        byte[]          encoding        = TlsUtilities.ReadOpaque8(input2);
        DigitallySigned digitallySigned = ParseSignature(input);
        ISigner         signer          = InitVerifyer(mTlsSigner, digitallySigned.Algorithm, securityParameters);

        signerInputBuffer.UpdateSigner(signer);
        if (!signer.VerifySignature(digitallySigned.Signature))
        {
            throw new TlsFatalAlert(51);
        }
        mECAgreePublicKey = TlsEccUtilities.ValidateECPublicKey(TlsEccUtilities.DeserializeECPublicKey(mClientECPointFormats, curve_params, encoding));
    }
    public override void ProcessServerKeyExchange(Stream input)
    {
        SecurityParameters securityParameters = mContext.SecurityParameters;
        SignerInputBuffer  signerInputBuffer  = null;
        Stream             input2             = input;

        if (mTlsSigner != null)
        {
            signerInputBuffer = new SignerInputBuffer();
            input2            = new TeeInputStream(input, signerInputBuffer);
        }
        ServerSrpParams serverSrpParams = ServerSrpParams.Parse(input2);

        if (signerInputBuffer != null)
        {
            DigitallySigned digitallySigned = ParseSignature(input);
            ISigner         signer          = InitVerifyer(mTlsSigner, digitallySigned.Algorithm, securityParameters);
            signerInputBuffer.UpdateSigner(signer);
            if (!signer.VerifySignature(digitallySigned.Signature))
            {
                throw new TlsFatalAlert(51);
            }
        }
        mSrpGroup = new Srp6GroupParameters(serverSrpParams.N, serverSrpParams.G);
        if (!mGroupVerifier.Accept(mSrpGroup))
        {
            throw new TlsFatalAlert(71);
        }
        mSrpSalt = serverSrpParams.S;
        try
        {
            mSrpPeerCredentials = Srp6Utilities.ValidatePublicValue(mSrpGroup.N, serverSrpParams.B);
        }
        catch (CryptoException alertCause)
        {
            throw new TlsFatalAlert(47, alertCause);
        }
        mSrpClient.Init(mSrpGroup, TlsUtilities.CreateHash(2), mContext.SecureRandom);
    }
        public override void ProcessServerKeyExchange(Stream input)
        {
            SecurityParameters securityParameters = mContext.SecurityParameters;

            SignerInputBuffer buf   = new SignerInputBuffer();
            Stream            teeIn = new TeeInputStream(input, buf);

            ServerDHParams dhParams = ServerDHParams.Parse(teeIn);

            DigitallySigned signed_params = ParseSignature(input);

            mSignatureAndHashAlgorithm = signed_params.Algorithm;

            ISigner signer = InitVerifyer(mTlsSigner, signed_params.Algorithm, securityParameters);

            buf.UpdateSigner(signer);
            if (!signer.VerifySignature(signed_params.Signature))
            {
                throw new TlsFatalAlert(AlertDescription.decrypt_error);
            }

            this.mDHAgreePublicKey = TlsDHUtilities.ValidateDHPublicKey(dhParams.PublicKey);
            this.mDHParameters     = ValidateDHParameters(mDHAgreePublicKey.Parameters);
        }