Esempio n. 1
0
        private static void SendTSRequest(RdpPacket negoTokens, byte[] auth_info, byte[] pub_key_auth)
        {
            RdpPacket packet = new RdpPacket();

            ASN1.WriteTag(packet, ASN1.SequenceTag(0), "TSRequest");
            ASN1.WriteTag(packet, ASN1.ContextTag(0), "CTX_Version");
            ASN1.WriteInteger(packet, 2);
            ASN1.CloseTag(packet, "CTX_Version");

            if (negoTokens != null)
            {
                ASN1.WriteTag(packet, ASN1.ContextTag(1), "CTX_NegTokens");
                ASN1.WriteTag(packet, ASN1.SequenceTag(0), "NegTokens");
                ASN1.WriteTag(packet, ASN1.SequenceTag(0), "NegTokens2");
                ASN1.WriteTag(packet, ASN1.ContextTag(0), "CTX_OctetString");
                ASN1.WriteTag(packet, ASN1.OctetStringTag(), "OctetString");
                packet.copyToByteArray(negoTokens);
                ASN1.CloseTag(packet, "OctetString");
                ASN1.CloseTag(packet, "CTX_OctetString");
                ASN1.CloseTag(packet, "NegTokens2");
                ASN1.CloseTag(packet, "NegTokens");
                ASN1.CloseTag(packet, "CTX_NegTokens");
            }

            if (auth_info != null)
            {
                ASN1.WriteTag(packet, ASN1.ContextTag(2), "CTX_AuthInfo");
                ASN1.WriteTag(packet, ASN1.OctetStringTag(), "OctetString");
                packet.Write(auth_info, 0, auth_info.Length);
                ASN1.CloseTag(packet, "OctetString");
                ASN1.CloseTag(packet, "CTX_AuthInfo");
            }

            if (pub_key_auth != null)
            {
                ASN1.WriteTag(packet, ASN1.ContextTag(3), "CTX_PubKeyAuth");
                ASN1.WriteTag(packet, ASN1.OctetStringTag(), "OctetString");
                packet.Write(pub_key_auth, 0, pub_key_auth.Length);
                ASN1.CloseTag(packet, "OctetString");
                ASN1.CloseTag(packet, "CTX_PubKeyAuth");
            }

            ASN1.CloseTag(packet, "TSRequest");

            Send(packet);
        }