Esempio n. 1
0
        /// <summary>
        /// Sends an OpenSecureChannel response.
        /// </summary>
        private void SendOpenSecureChannelResponse(uint requestId, TcpChannelToken token, OpenSecureChannelRequest request)
        {
            // Utils.Trace("Channel {0}: SendOpenSecureChannelResponse()", ChannelId);

            OpenSecureChannelResponse response = new OpenSecureChannelResponse();

            response.ResponseHeader.RequestHandle = request.RequestHeader.RequestHandle;
            response.ResponseHeader.Timestamp     = DateTime.UtcNow;

            response.SecurityToken.ChannelId       = token.ChannelId;
            response.SecurityToken.TokenId         = token.TokenId;
            response.SecurityToken.CreatedAt       = token.CreatedAt;
            response.SecurityToken.RevisedLifetime = (uint)token.Lifetime;
            response.ServerNonce = token.ServerNonce;

            byte[]           buffer       = BinaryEncoder.EncodeMessage(response, Quotas.MessageContext);
            BufferCollection chunksToSend = null;

            if (ServerCertificateChain != null)
            {
                chunksToSend = WriteAsymmetricMessage(
                    TcpMessageType.Open,
                    requestId,
                    ServerCertificateChain,
                    //ServerCertificate,
                    ClientCertificate,
                    new ArraySegment <byte>(buffer, 0, buffer.Length));
            }
            else
            {
                chunksToSend = WriteAsymmetricMessage(
                    TcpMessageType.Open,
                    requestId,
                    //ServerCertificateChain,
                    ServerCertificate,
                    ClientCertificate,
                    new ArraySegment <byte>(buffer, 0, buffer.Length));
            }

            // write the message to the server.
            try
            {
                BeginWriteMessage(chunksToSend, Int32.MaxValue, null);
                chunksToSend = null;
            }
            finally
            {
                if (chunksToSend != null)
                {
                    chunksToSend.Release(BufferManager, "SendOpenSecureChannelResponse");
                }
            }
        }
        /// <summary>
        /// Sends an OpenSecureChannel response.
        /// </summary>
        private void SendOpenSecureChannelResponse(uint requestId, TcpChannelToken token, OpenSecureChannelRequest request)
        {
            // Utils.Trace("Channel {0}: SendOpenSecureChannelResponse()", ChannelId);

            OpenSecureChannelResponse response = new OpenSecureChannelResponse();
            
            response.ResponseHeader.RequestHandle = request.RequestHeader.RequestHandle;
            response.ResponseHeader.Timestamp     = DateTime.UtcNow;

            response.SecurityToken.ChannelId = token.ChannelId;
            response.SecurityToken.TokenId = token.TokenId;
            response.SecurityToken.CreatedAt = token.CreatedAt;
            response.SecurityToken.RevisedLifetime = (uint)token.Lifetime;
            response.ServerNonce = token.ServerNonce;
            
            byte[] buffer = BinaryEncoder.EncodeMessage(response, Quotas.MessageContext); 
            
            BufferCollection chunksToSend = WriteAsymmetricMessage(
                TcpMessageType.Open,
                requestId,
                //ServerCertificateChain,
                ServerCertificate,
                ClientCertificate,
                new ArraySegment<byte>(buffer, 0, buffer.Length));

            // write the message to the server.
            try
            {
                BeginWriteMessage(chunksToSend, Int32.MaxValue, null);
                chunksToSend = null;
            }
            finally
            {
                if (chunksToSend != null)
                {
                    chunksToSend.Release(BufferManager, "SendOpenSecureChannelResponse");
                }
            }
        }      
Esempio n. 3
0
        /// <summary>
        /// Initializes the message with a service fault.
        /// </summary>
        public OpenSecureChannelResponseMessage(ServiceFault ServiceFault)
        {
            this.OpenSecureChannelResponse = new OpenSecureChannelResponse();

            if (ServiceFault != null)
            {
                this.OpenSecureChannelResponse.ResponseHeader = ServiceFault.ResponseHeader;
            }
        }
Esempio n. 4
0
 /// <summary>
 /// Initializes the message with the body.
 /// </summary>
 public OpenSecureChannelResponseMessage(OpenSecureChannelResponse OpenSecureChannelResponse)
 {
     this.OpenSecureChannelResponse = OpenSecureChannelResponse;
 }
Esempio n. 5
0
        /// <summary cref="IServiceMessage.CreateResponse" />
        public object CreateResponse(IServiceResponse response)
        {
            OpenSecureChannelResponse body = response as OpenSecureChannelResponse;

            if (body == null)
            {
                body = new OpenSecureChannelResponse();
                body.ResponseHeader = ((ServiceFault)response).ResponseHeader;
            }

            return new OpenSecureChannelResponseMessage(body);
        }