public void SendPreLogin()
        {
            LoggingUtilities.WriteLog($" SendPreLogin initiated.");
            var tdsMessageBody = new TDSPreLoginPacketData(Version);

            tdsMessageBody.AddOption(TDSPreLoginOptionTokenType.Encryption, TDSEncryptionOption.EncryptOff);
            tdsMessageBody.Terminate();

            TdsCommunicator.SendTDSMessage(tdsMessageBody);
            LoggingUtilities.WriteLog($" SendPreLogin done.");
        }
Beispiel #2
0
        /// <summary>
        /// Sends PreLogin message to the server.
        /// </summary>
        public void SendPreLogin()
        {
            LoggingUtilities.WriteLog($" SendPreLogin initiated.");
            var tdsMessageBody = new TDSPreLoginPacketData(this.Version);

            tdsMessageBody.AddOption(TDSPreLoginOptionTokenType.Encryption, TDSEncryptionOption.EncryptOff);
            tdsMessageBody.AddOption(TDSPreLoginOptionTokenType.TraceID, new TDSClientTraceID(Guid.NewGuid().ToByteArray(), Guid.NewGuid().ToByteArray(), 0));
            tdsMessageBody.Terminate();

            this.TdsCommunicator.SendTDSMessage(tdsMessageBody);
            LoggingUtilities.WriteLog($" SendPreLogin done.");
        }
        /// <summary>
        /// Receive TDS Message from the server.
        /// </summary>
        /// <returns>Returns received TDS Message.</returns>
        public ITDSPacketData ReceiveTDSMessage()
        {
            if (TDSSQLTestClient.flag == TDSEncryptionOption.EncryptOff && this.communicatorState == TDSCommunicatorState.Initial)
            {
                this.communicatorState = TDSCommunicatorState.SentLogin7RecordWithCompleteAuthToken;
            }
            TDSSQLTestClient.flag = TDSEncryptionOption.EncryptOn;
            byte[] resultBuffer = null;
            var    curOffset    = 0;

            if (this.communicatorState == TDSCommunicatorState.SentLogin7RecordWithCompleteAuthToken)
            {
            }
            do
            {
                Array.Resize(ref resultBuffer, curOffset + this.packetSize);
                curOffset += this.innerStream.Read(resultBuffer, curOffset, this.packetSize);
            }while (!this.innerTdsStream.InboundMessageTerminated);

            Array.Resize(ref resultBuffer, curOffset);

            ITDSPacketData result;

            switch (this.communicatorState)
            {
            case TDSCommunicatorState.SentInitialPreLogin:
            {
                result = new TDSPreLoginPacketData();
                result.Unpack(new MemoryStream(resultBuffer));
                break;
            }

            case TDSCommunicatorState.SentLogin7RecordWithCompleteAuthToken:
            {
                result = new TDSTokenStreamPacketData();
                result.Unpack(new MemoryStream(resultBuffer));
                break;
            }

            default:
            {
                throw new InvalidOperationException();
            }
            }

            return(result);
        }
Beispiel #4
0
        public void PreLoginUnpacking()
        {
            var bytesJSON  = File.ReadAllText("./Assets/PacketData/PreLogin_Bytes.json");
            var packetJSON = File.ReadAllText("./Assets/PacketData/PreLogin_Object.json");

            JsonSerializerSettings settings = new JsonSerializerSettings {
                TypeNameHandling = TypeNameHandling.All
            };
            var bytes  = JsonConvert.DeserializeObject <byte[]>(bytesJSON, settings);
            var packet = JsonConvert.DeserializeObject <TDSPreLoginPacketData>(packetJSON, settings);

            var testPacket = new TDSPreLoginPacketData();

            testPacket.Unpack(new MemoryStream(bytes));

            Assert.AreEqual(packet, testPacket);
        }
Beispiel #5
0
        public ITDSPacketData ReceiveTDSMessage()
        {
            byte[] resultBuffer = null;
            var    curOffset    = 0;

            do
            {
                Array.Resize(ref resultBuffer, curOffset + PacketSize);
                curOffset += InnerStream.Read(resultBuffer, curOffset, PacketSize);
            }while (!InnerTdsStream.InboundMessageTerminated);

            Array.Resize(ref resultBuffer, curOffset);

            ITDSPacketData result;

            switch (CommunicatorState)
            {
            case TDSCommunicatorState.SentInitialPreLogin:
            {
                result = new TDSPreLoginPacketData();
                result.Unpack(new MemoryStream(resultBuffer));
                break;
            }

            case TDSCommunicatorState.SentLogin7RecordWithCompleteAuthToken:
            {
                result = new TDSTokenStreamPacketData();
                result.Unpack(new MemoryStream(resultBuffer));
                break;
            }

            default:
            {
                throw new InvalidOperationException();
            }
            }

            return(result);
        }