예제 #1
0
        private static async ValueTask <SslServerAuthenticationOptions> ServerOptionsCallback(SslStream sslStream, SslClientHelloInfo clientHelloInfo, object?state, CancellationToken cancellationToken)
        {
            var(middleware, context, feature) = (ValueTuple <HttpsConnectionMiddleware, ConnectionContext, Core.Internal.TlsConnectionFeature>)state !;

            feature.HostName = clientHelloInfo.ServerName;
            context.Features.Set(sslStream);

            var sslOptions = await middleware._httpsOptionsCallback !(context, sslStream, clientHelloInfo, middleware._httpsOptionsCallbackState !, cancellationToken);

            KestrelEventSource.Log.TlsHandshakeStart(context, sslOptions);

            return(sslOptions);
        }
예제 #2
0
        public static ValueTask <SslServerAuthenticationOptions> OptionsCallback(ConnectionContext connection, SslStream stream, SslClientHelloInfo clientHelloInfo, object state, CancellationToken cancellationToken)
        {
            var sniOptionsSelector = (SniOptionsSelector)state;
            var options            = sniOptionsSelector.GetOptions(connection, clientHelloInfo.ServerName);

            return(new ValueTask <SslServerAuthenticationOptions>(options));
        }