Esempio n. 1
0
        public static SecurityBuffer[] GetIncomingSecurityBuffers(SslAuthenticationOptions options, ref SecurityBuffer incomingSecurity)
        {
            SecurityBuffer alpnBuffer = null;

            SecurityBuffer[] incomingSecurityBuffers = null;

            if (options.ApplicationProtocols != null && options.ApplicationProtocols.Count != 0)
            {
                byte[] alpnBytes = SslStreamPal.ConvertAlpnProtocolListToByteArray(options.ApplicationProtocols);
                alpnBuffer = new SecurityBuffer(alpnBytes, 0, alpnBytes.Length, SecurityBufferType.SECBUFFER_APPLICATION_PROTOCOLS);
            }

            if (incomingSecurity != null)
            {
                if (alpnBuffer != null)
                {
                    incomingSecurityBuffers = new SecurityBuffer[]
                    {
                        incomingSecurity,
                        new SecurityBuffer(null, 0, 0, SecurityBufferType.SECBUFFER_EMPTY),
                        alpnBuffer
                    };
                }
                else
                {
                    incomingSecurityBuffers = new SecurityBuffer[]
                    {
                        incomingSecurity,
                        new SecurityBuffer(null, 0, 0, SecurityBufferType.SECBUFFER_EMPTY)
                    };
                }
            }
            else if (alpnBuffer != null)
            {
                incomingSecurity = alpnBuffer;
            }

            return(incomingSecurityBuffers);
        }