SslApplicationProtocol Structure

Définition

Représente une valeur de protocole d’application TLS.

public value class SslApplicationProtocol : IEquatable<System::Net::Security::SslApplicationProtocol>
public readonly struct SslApplicationProtocol : IEquatable<System.Net.Security.SslApplicationProtocol>
type SslApplicationProtocol = struct
Public Structure SslApplicationProtocol
Implements IEquatable(Of SslApplicationProtocol)
Héritage
SslApplicationProtocol
Implémente

Exemples

L’exemple de code suivant illustre la négociation du protocole au niveau de l’application sur SslStream. Le serveur publie la prise en charge pour protocol1 et protocol2. Le client publie la prise en charge pour protocol2 et protocol3. Le protocole couramment pris en charge (protocol2) est négocié pendant la négociation.

async Task Server(NetworkStream stream, X509Certificate2 serverCertificate)
{
    using var server = new SslStream(stream);

    await server.AuthenticateAsServerAsync(new SslServerAuthenticationOptions
    {
        ServerCertificate = serverCertificate,
        ApplicationProtocols = new()
        {
            new("protocol1"),
            new("protocol2"),
        }
    });

    string protocol = Encoding.ASCII.GetString(server.NegotiatedApplicationProtocol.Protocol.Span);
    System.Console.WriteLine($"Server - negotiated protocol: {protocol}");
}

async Task Client(NetworkStream stream, string hostName)
{
    using var client = new SslStream(stream);

    await client.AuthenticateAsClientAsync(new SslClientAuthenticationOptions
    {
        // the host name must match the name on the certificate used on the server side
        TargetHost = hostName,
        ApplicationProtocols = new()
        {
            new("protocol2"),
            new("protocol3")
        }
    });

    string protocol = Encoding.ASCII.GetString(client.NegotiatedApplicationProtocol.Protocol.Span);
    System.Console.WriteLine($"Client - negotiated protocol: {protocol}");
}

// possible output:
//   Server - negotiated protocol: protocol2
//   Client - negotiated protocol: protocol2
Async Function Server(stream As NetworkStream, serverCertificate As X509Certificate2) As Task
    Using serverStream As SslStream = new SslStream(stream)
        Dim options as New SslServerAuthenticationOptions() With
        {
            .ServerCertificate = serverCertificate,
            .ApplicationProtocols = New List(Of SslApplicationProtocol) From
            {
                New SslApplicationProtocol("protocol1"),
                New SslApplicationProtocol("protocol2")
            }
        }
        Await serverStream.AuthenticateAsServerAsync(options)

        Dim protocol As String = Encoding.ASCII.GetString(
            serverStream.NegotiatedApplicationProtocol.Protocol.Span)
        System.Console.WriteLine($"Server - negotiated protocol: {protocol}")
    End Using
End Function

Async Function Client(stream As NetworkStream, hostName As String ) As Task
    Using clientStream As SslStream = new SslStream(stream)
        Dim options as New SslClientAuthenticationOptions() With
        {
            .TargetHost = hostName,
            .ApplicationProtocols = New List(Of SslApplicationProtocol) From
            {
                New SslApplicationProtocol("protocol2"),
                New SslApplicationProtocol("protocol3")
            }
        }
        Await clientStream.AuthenticateAsClientAsync(options)

        Dim protocol As String = Encoding.ASCII.GetString(
            clientStream.NegotiatedApplicationProtocol.Protocol.Span)
        System.Console.WriteLine($"Client - negotiated protocol: {protocol}")
    End Using
End Function

' possible output:
'   Server - negotiated protocol: protocol2
'   Client - negotiated protocol: protocol2

Remarques

Ce type contient des champs statiques avec des valeurs prédéfinies SslApplicationProtocol pour les versions HTTP.

Pendant la négociation, le client envoie une liste de protocoles ALPN disponibles et le serveur choisit la meilleure correspondance dans cette liste.

Pour obtenir la liste complète des protocoles pris en charge, consultez les ID de protocole ALPN (TLS Application-Layer Protocol Negotiation).

Constructeurs

Nom Description
SslApplicationProtocol(Byte[])

Initialise une nouvelle instance du SslApplicationProtocol.

SslApplicationProtocol(String)

Initialise une nouvelle instance du SslApplicationProtocol.

Champs

Nom Description
Http11

Obtient un SslApplicationProtocol protocole d’application TLS HTTP/1.1 représentant.

Http2

Obtient un SslApplicationProtocol protocole d’application TLS HTTP/2 représentant.

Propriétés

Nom Description
Protocol

Obtient un protocole d’application TLS actuel représenté par ce SslApplicationProtocol.

Méthodes

Nom Description
Equals(Object)

Compare la SslApplicationProtocol à l’objet spécifié.

Equals(SslApplicationProtocol)

Compare une SslApplicationProtocol instance spécifiée SslApplicationProtocol .

GetHashCode()

Retourne le code de hachage de l’instance SslApplicationProtocol .

ToString()

Remplace la ToString() méthode.

Opérateurs

Nom Description
Equality(SslApplicationProtocol, SslApplicationProtocol)

Opérateur d’égalité pour comparer deux SslApplicationProtocol objets.

Inequality(SslApplicationProtocol, SslApplicationProtocol)

Opérateur d’inégalité pour comparer deux SslApplicationProtocol objets.

S’applique à