コード例 #1
0
ファイル: SecretSchedule12.cs プロジェクト: Drawaes/Leto2
        public bool GenerateAndCompareServerVerify(ReadableBuffer buffer)
        {
            buffer = buffer.Slice(Unsafe.SizeOf <HandshakeHeader>());
            var hashResult = new byte[_state.HandshakeHash.HashSize];

            _state.HandshakeHash.FinishHash(hashResult);
            _cryptoProvider.HashProvider.Tls12Prf(_state.CipherSuite.HashType, _masterSecret.Span, Tls12.Label_ServerFinished, hashResult, _serverVerify.Span);
            return(CompareFunctions.ConstantTimeEquals(_serverVerify.Span, buffer.ToSpan()));
        }
コード例 #2
0
        public ILBuilder(ILGenerator il)
        {
            this.il = il;

            this.arguments = new ArgumentFunctions(this);
            this.compare   = new CompareFunctions(this);
            this.convert   = new ConvertFunctions(this);
            this.math      = new MathFunctions(this);
        }
コード例 #3
0
        public void CompareClientFinishedGenerateServerFinished(ReadableBuffer buffer)
        {
            _state.HandshakeHash.HashData(buffer);
            buffer = buffer.Slice(4);
            var result = CompareFunctions.ConstantTimeEquals(_clientSpan, buffer);


            var hashResult = stackalloc byte[_state.HandshakeHash.HashSize + Tls1_2Consts.ServerFinishedLabelSize];
            var seed       = new Span <byte>(hashResult, _state.HandshakeHash.HashSize + Tls1_2Consts.ServerFinishedLabelSize);

            _state.HandshakeHash.InterimHash(hashResult + Tls1_2Consts.ServerFinishedLabelSize, _state.HandshakeHash.HashSize);
            var finishedLabel = Tls1_2Consts.GetServerFinishedSpan();

            finishedLabel.CopyTo(seed);
            PrfFunctions.P_Hash12(_state.CryptoProvider.HashProvider, _state.CipherSuite.HashType, _serverSpan, _masterSecret, Tls1_2Consts.MASTER_SECRET_LENGTH, seed);
        }