Re: [quicwg/base-drafts] Rewrite text about Version Negotiation (#1039)

martinduke <notifications@github.com> Tue, 16 January 2018 17:26 UTC

Return-Path: <noreply@github.com>
X-Original-To: quic-issues@ietfa.amsl.com
Delivered-To: quic-issues@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id DBA6F12D7F9 for <quic-issues@ietfa.amsl.com>; Tue, 16 Jan 2018 09:26:26 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -7
X-Spam-Level:
X-Spam-Status: No, score=-7 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_HI=-5, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=github.com
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Y7bWEplYE6QE for <quic-issues@ietfa.amsl.com>; Tue, 16 Jan 2018 09:26:24 -0800 (PST)
Received: from github-smtp2a-ext-cp1-prd.iad.github.net (github-smtp2-ext7.iad.github.net [192.30.252.198]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 5F5B212E858 for <quic-issues@ietf.org>; Tue, 16 Jan 2018 09:26:20 -0800 (PST)
Date: Tue, 16 Jan 2018 09:26:19 -0800
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=github.com; s=pf2014; t=1516123579; bh=v06rb2Vev/t1RsMuPrPQ8AZzchm4YmrIu/KiDWse8Po=; h=From:Reply-To:To:Cc:In-Reply-To:References:Subject:List-ID: List-Archive:List-Post:List-Unsubscribe:From; b=DYHJWtDdpCSPgBmS9tg9NuZqUXgPM3FWuxaSZYX66EtWjIHXdm1xB/AjQDkDmXAYO If8VUjmMKmlm2mU+XLNyAEBfzaKPELD0SIKM5eeHfUTPL7mDiCQBgTUNL4GolRcluu AJkERBs80iq8bLyusJnqgEh/ghCX1IjvFlzhTgBg=
From: martinduke <notifications@github.com>
Reply-To: quicwg/base-drafts <reply+0166e4ab7eac2d213c630a3756203a6422862144bd7c790792cf000000011675f7bb92a169ce1115d834@reply.github.com>
To: quicwg/base-drafts <base-drafts@noreply.github.com>
Cc: Subscribed <subscribed@noreply.github.com>
Message-ID: <quicwg/base-drafts/pull/1039/c358038506@github.com>
In-Reply-To: <quicwg/base-drafts/pull/1039@github.com>
References: <quicwg/base-drafts/pull/1039@github.com>
Subject: Re: [quicwg/base-drafts] Rewrite text about Version Negotiation (#1039)
Mime-Version: 1.0
Content-Type: multipart/alternative; boundary="--==_mimepart_5a5e35bb50fd9_2af3a3f937f18ef281958a9"; charset="UTF-8"
Content-Transfer-Encoding: 7bit
Precedence: list
X-GitHub-Sender: martinduke
X-GitHub-Recipient: quic-issues
X-GitHub-Reason: subscribed
X-Auto-Response-Suppress: All
X-GitHub-Recipient-Address: quic-issues@ietf.org
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic-issues/lB43XCWJQOfA85yuFgbETsfcZUs>
X-BeenThere: quic-issues@ietf.org
X-Mailman-Version: 2.1.22
List-Id: Notification list for GitHub issues related to the QUIC WG <quic-issues.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/quic-issues>, <mailto:quic-issues-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/quic-issues/>
List-Post: <mailto:quic-issues@ietf.org>
List-Help: <mailto:quic-issues-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/quic-issues>, <mailto:quic-issues-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 16 Jan 2018 17:26:27 -0000

Writing some pseudocode clarified it, at least for me. I think the answer, in most of the cases above, is just to drop it. If we can agree that the below is correct, I'll find the language to put in the spec:

Client Processing:

```
if (short_header)
    if (has_conn_id)
        if (conn_id_matches)
            if (1rtt_keys_exist)
                decrypt();
            else
                buffer_or_drop();
        else
            drop();
    else
        if (tuple_matches)
            if (allow_omit_conn_id)
                if (1rtt_keys_exist)
                    decrypt();
                else
                    buffer_or_drop();             
            else
                drop();
        else
            drop();
else /* long header */
    if (conn_id_matches)
        if (handshake_recent)
            if (version == 0)
                if (is_first_pkt)
                    process_VN();
                else
                    drop();
            else
                decrypt();
        else
            drop();
    else if (tuple_matches && is_first_pkt && version_matches)
        use_new_conn_id()
        decrypt()
    else
        drop()

Server processing:

if (short_header)
    if (has_conn_id)
        if (conn_id_matches)
            if (1rtt_keys_exist)
                decrypt();
            else
                buffer_or_drop();
        else
             reset_or_drop(); /* This is the only difference from client short header processing */
    else
        if (tuple_matches)
            if (allow_omit_conn_id)
                if (1rtt_keys_exist)
                    decrypt();
                else
                    buffer_or_drop();             
            else
                drop();
        else
           drop();
else /* long header */
    if (conn_id_matches)
        if (recent_handshake && version_matches)
            decrypt();
        else
            drop();
    else if (version_matches)
        decrypt()
    else
        send_vn();
```





-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/quicwg/base-drafts/pull/1039#issuecomment-358038506