Core.Protocols.Rtmp.OutboundRTMPProtocol.VerifyServer C# (CSharp) Method

VerifyServer() private method

private VerifyServer ( InputStream inputBuffer ) : bool
inputBuffer CSharpRTMP.Common.InputStream
return bool
        private bool VerifyServer(InputStream inputBuffer)
        {
            var pBuffer = new BufferWithOffset(inputBuffer);
            pBuffer.Offset++;
            var serverDigestPos = GetDigestOffset(pBuffer, _usedScheme);
            var pTempBuffer = new byte[1536 - 32];
            Buffer.BlockCopy(inputBuffer.GetBuffer(), pBuffer.Offset, pTempBuffer, 0, (int)serverDigestPos);
            Buffer.BlockCopy(inputBuffer.GetBuffer(), (int)(pBuffer.Offset+serverDigestPos + 32), pTempBuffer, (int)serverDigestPos, (int)(1536 - serverDigestPos - 32));
            var pDigest = HMACsha256(pTempBuffer, 1536 - 32, GenuineFmsKey, 36);
            for (var i = 0; i < 32; i++)
            {
                if (pDigest[i] != pBuffer[(int) (i + serverDigestPos)])
                {
                    Logger.FATAL("Server not verified");
                    return false;
                }
            }
            pBuffer.Offset += 1536;
            var pChallange = HMACsha256(_pClientDigest, 32, GenuineFmsKey, 68);
            pDigest = new HMACSHA256(pChallange).ComputeHash(pBuffer.Buffer, pBuffer.Offset, 1536 - 32);
            for (var i = 0; i < 32; i++)
            {
                if (pDigest[i] != pBuffer[i + 1536 - 32])
                {
                    Logger.FATAL("Server not verified");
                    return false;
                }
            }
            return true;
        }