public void ReceivedFrame(SslStream sslStream, ReadOnlySpan <byte> frame)
        {
            TlsFrameHelper.TlsFrameInfo info = default;
            bool isComplete = TlsFrameHelper.TryGetFrameInfo(frame, ref info);

            ReceivedFrame(IdOf(sslStream), info.ToString(), isComplete ? 1 : 0);
        }
 public void SentFrame(SslStream sslStream, ReadOnlySpan <byte> frame)
 {
     if (IsEnabled())
     {
         TlsFrameHelper.TlsFrameInfo info = default;
         bool isComplete = TlsFrameHelper.TryGetFrameInfo(frame, ref info);
         SentFrame(IdOf(sslStream), info.ToString(), isComplete ? 1 : 0);
     }
 }
Example #3
0
    private static bool TryReadHello(ReadOnlySequence <byte> buffer, ILogger logger, out bool abort)
    {
        abort = false;

        if (!buffer.IsSingleSegment)
        {
            throw new NotImplementedException("Multiple buffer segments");
        }
        var data = buffer.First.Span;

        TlsFrameHelper.TlsFrameInfo info = default;
        if (!TlsFrameHelper.TryGetFrameInfo(data, ref info))
        {
            return(false);
        }

        if (!info.SupportedVersions.HasFlag(System.Security.Authentication.SslProtocols.Tls12))
        {
            logger.LogInformation("Unsupported versions: {versions}", info.SupportedVersions);
            abort = true;
        }
        else
        {
            logger.LogInformation("Protocol versions: {versions}", info.SupportedVersions);
        }

        if (!AllowHost(info.TargetName))
        {
            logger.LogInformation("Disallowed host: {host}", info.TargetName);
            abort = true;
        }
        else
        {
            logger.LogInformation("SNI: {host}", info.TargetName);
        }

        return(true);
    }