Re: [netconf] [Technical Errata Reported] RFC8040 (7866)

Jernej Tuljak <jernej.tuljak@mg-soft.si> Thu, 04 April 2024 13:17 UTC

Return-Path: <jernej.tuljak@mg-soft.si>
X-Original-To: netconf@ietfa.amsl.com
Delivered-To: netconf@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id B8849C14CF1B for <netconf@ietfa.amsl.com>; Thu, 4 Apr 2024 06:17:06 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -7.095
X-Spam-Level:
X-Spam-Status: No, score=-7.095 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_HI=-5, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001, URIBL_DBL_BLOCKED_OPENDNS=0.001, URIBL_ZEN_BLOCKED_OPENDNS=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=mg-soft.si
Received: from mail.ietf.org ([50.223.129.194]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id jt6REvM7jfCF for <netconf@ietfa.amsl.com>; Thu, 4 Apr 2024 06:17:02 -0700 (PDT)
Received: from galileo.mg-soft.si (gate.mg-soft.si [212.30.73.66]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id F30ABC14F5EB for <netconf@ietf.org>; Thu, 4 Apr 2024 06:17:00 -0700 (PDT)
Received: from [10.0.0.249] (zvonkok-mbp.mg-soft.si [10.0.0.249]) by galileo.mg-soft.si (Postfix) with ESMTP id A26DD1029C0; Thu, 4 Apr 2024 15:16:57 +0200 (CEST)
DKIM-Filter: OpenDKIM Filter v2.11.0 galileo.mg-soft.si A26DD1029C0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mg-soft.si; s=default; t=1712236617; bh=KSYAGHv4jJNltVIdr2vMV7gPgG5XHkD9KTdA3VgpmcY=; h=Date:Subject:To:Cc:References:From:In-Reply-To:From; b=HOllK0pU9AUcozq+ExVZRoKqr6DsqNwkEGiz6rop3YnBIf0p25eq0lOQV8DnoqcvQ gTtKmReYRVcAPcKHXDAO0qVkCHNNNt1fit5QH0cCdr4OhKlJfVOarslv1/vv6a9lt+ 1UlhwbrkTkrrhel/DTrFJQoZh9KyXO8fO38muCdR1Us3YcAQSWBwuhs3eWb3AcorIQ IydpXBaPNhjQp8Yls7aqRciDRPAXYvRNd05ynDkK4yEuy7GhOJmpBCl2eAiW+eZ3qQ j/6IWSum4K9Yrj+XTT6Qu1FepEywQc1DzNxUHQvksJXqhSGzQO2b170MUabTYCifXh OcoYVJpLmQPAQ==
Content-Type: multipart/alternative; boundary="------------5YE49MDY3Umy9L70Vq2XA1qM"
Message-ID: <2eae1936-6294-4c9f-b50a-faab7587941e@mg-soft.si>
Date: Thu, 04 Apr 2024 15:16:58 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
To: Andy Bierman <andy@yumaworks.com>
Cc: Kent Watsen <kent+ietf@watsen.net>, RFC Errata System <rfc-editor@rfc-editor.org>, mbj@tail-f.com, Warren Kumari <warren@kumari.net>, "netconf@ietf.org" <netconf@ietf.org>
References: <20240323173810.33A49E6634@rfcpa.amsl.com> <0100018e809ecc8b-b17354dc-f70c-437a-b915-b8ed4086bffb-000000@email.amazonses.com> <f5ea7cfe-65f2-429d-bdc2-11d377d45fd6@mg-soft.si> <CABCOCHQpK=9LADz77M7t2VLF-UNMhNE_oxpNC13yyvX_zME4NA@mail.gmail.com> <7e00b6e4-4d1f-496e-b945-1c4379c28884@mg-soft.si> <CABCOCHTVn2Dbs7NX8cfAu7EjmhuaZ6eez=bFS_6dP88v4So7CA@mail.gmail.com> <cabe39b1-2c23-4bcb-b817-e5021f428a15@mg-soft.si> <CABCOCHStyAP2Bn7ad3M57Rg-FJ+8vBBfDFMJirUxjx63YECU-A@mail.gmail.com>
Content-Language: en-US
From: Jernej Tuljak <jernej.tuljak@mg-soft.si>
In-Reply-To: <CABCOCHStyAP2Bn7ad3M57Rg-FJ+8vBBfDFMJirUxjx63YECU-A@mail.gmail.com>
Archived-At: <https://mailarchive.ietf.org/arch/msg/netconf/DeQtqXiCYZIe_n13K0Ow8EmgKkI>
Subject: Re: [netconf] [Technical Errata Reported] RFC8040 (7866)
X-BeenThere: netconf@ietf.org
X-Mailman-Version: 2.1.39
Precedence: list
List-Id: NETCONF WG list <netconf.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/netconf>, <mailto:netconf-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/netconf/>
List-Post: <mailto:netconf@ietf.org>
List-Help: <mailto:netconf-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/netconf>, <mailto:netconf-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 04 Apr 2024 13:17:06 -0000

On 03/04/2024 18:55, Andy Bierman wrote:
>
>
> On Wed, Apr 3, 2024 at 6:16 AM Jernej Tuljak 
> <jernej.tuljak@mg-soft.si> wrote:
>
>     On 29/03/2024 17:09, Andy Bierman wrote:
>>
>>
>>     On Fri, Mar 29, 2024 at 12:46 AM Jernej Tuljak
>>     <jernej.tuljak@mg-soft.si> wrote:
>>
>>         On 28/03/2024 17:25, Andy Bierman wrote:
>>>
>>>
>>>         On Thu, Mar 28, 2024 at 2:41 AM Jernej Tuljak
>>>         <jernej.tuljak@mg-soft.si> wrote:
>>>
>>>             And I'm still not sure why RFC8040 refers to "reserved
>>>             characters" as
>>>             the only characters that need to be percent-encoded.
>>>
>>>             Section 2.1 of RFC3986 that describes percent encoding says:
>>>
>>>                 A percent-encoding mechanism is used to represent a
>>>             data octet in a
>>>                 component when that octet's corresponding character
>>>             is outside the
>>>                 allowed set or is being used as a delimiter of, or
>>>             within, the
>>>                 component.
>>>
>>>             Then in 2.2 it says:
>>>
>>>                 URIs include components and subcomponents that are
>>>             delimited by
>>>                 characters in the "reserved" set. These characters
>>>             are called
>>>                 "reserved" because they may (or may not) be defined
>>>             as delimiters by
>>>                 the generic syntax, by each scheme-specific syntax,
>>>             or by the
>>>                 implementation-specific syntax of a URI's
>>>             dereferencing algorithm.
>>>
>>>             To me this means there's more than just what RFC3986
>>>             considers to be a
>>>             "reserved character" that should to be percent-encoded.
>>>             The "more" in
>>>             this case being characters "outside the allowed set".
>>>             Characters like
>>>             the double-quote, which I've brought up before, but
>>>             never got a response:
>>>
>>>
>>>
>>>         The part of sec. 2.2 that was left out lists the chars:
>>>
>>>                reserved    = gen-delims / sub-delims
>>>
>>>                gen-delims  = ":" / "/" / "?" / "#" / "[" / "]" / "@"
>>>
>>>                sub-delims  = "!" / "$" / "&" / "'" / "(" / ")"
>>>                            / "*" / "+" / "," / ";" / "="
>>>
>>>         IMO these chars need to be percent-encoded in RESTCONF URIs
>>>
>>>             https://mailarchive.ietf.org/arch/msg/netconf/I8kXANHiqeV2JsCWmtTE2fGjYd8/
>>>
>>>
>>>
>>>         Perhaps there are some details that are not spelled out.
>>>         Double-quote and space are not special in RESTCONF.
>>>
>>
>>         Are you saying that valid RESTCONF URIs are not required to
>>         be valid RFC3986 URIs?
>>
>>
>>     No, I am saying that if restconf-next ever happens, then the
>>     document can clarify any additional
>>     reserved characters.
>
>     You said that double-quote and space are not special in RESTCONF,
>     but how can that be true, when they are special in RFC3986? What
>     makes them special is that they are not allowed at all. Anywhere.
>     No production of RFC3986 ABNF grammar [1] can match them. So they
>     need to be percent-encoded. They do not represent reserved
>     characters but at the same time cannot be recognized as unreserved
>     characters.
>
>
>
> I meant no special meaning in RESTCONF.
> RFC 3986 defines the URI encoding.
> There is no intent for RESTCONF to change anything or cherry-pick 
> certain requirements and ignore others.
>
> I am not sure what document changes are needed. Perhaps none.

I have a specific change in mind.

RFC8040, Section 3.5.3.:

OLD:

    The following example shows how reserved characters are
    percent-encoded within a key value.  The value of "key1" contains
    a comma, single-quote, double-quote, colon, double-quote, space,
    and forward slash (,'":" /).  Note that double-quote is not a
    reserved character and does not need to be percent-encoded.  The
    value of "key2" is the empty string, and the value of "key3" is the
    string "foo".

    Example URL:

       /restconf/data/example-top:top/list1=%2C%27"%3A"%20%2F,,foo

NEW:

    The following example shows how specific characters are
    percent-encoded within a key value.  The value of "key1" contains
    a comma, single-quote, double-quote, colon, double-quote, space,
    and forward slash (,'":" /).  Note that double-quote and space are
    not reserved characters but also do not correspond to characters in
    the unreserved set and therefore need to be percent-encoded.  The
    value of "key2" is the empty string, and the value of "key3" is the
    string "foo".

    Example URL:

/restconf/data/example-top:top/list1=%2C%27%22%3A%22%20%2F,,foo


Or something along those lines. It seemed related to this errata (7866), 
which is why I brought it up again.

Jernej

> Perhaps hold for document update.
>
>     [1] - https://datatracker.ietf.org/doc/html/rfc3986#appendix-A
>
>     Jernej
>
>
>
> Andy
>
>
>>
>>         Jernej
>>
>>
>>     Andy
>>
>>
>>>         One thing that is clear:
>>>         Any user of a RESTCONF URI MUST be capable of converting
>>>         percent-encoded chars,
>>>         no matter what they are.
>>>
>>>
>>>
>>>
>>>             Jernej
>>>
>>>
>>>         Andy
>>>
>>>
>>>             On 27/03/2024 16:54, Kent Watsen wrote:
>>>             > This errata is incomplete.
>>>             > The issue occurs three times.
>>>             > The occurrence in Section 5.1 is missing.
>>>             >
>>>             > K.
>>>             >
>>>             >
>>>             >> On Mar 23, 2024, at 1:38 PM, RFC Errata System
>>>             <rfc-editor@rfc-editor.org> wrote:
>>>             >>
>>>             >> The following errata report has been submitted for
>>>             RFC8040,
>>>             >> "RESTCONF Protocol".
>>>             >>
>>>             >> --------------------------------------
>>>             >> You may review the report below and at:
>>>             >> https://www.rfc-editor.org/errata/eid7866
>>>             >>
>>>             >> --------------------------------------
>>>             >> Type: Technical
>>>             >> Reported by: Andy Bierman <andy@yumaworks.com>
>>>             >>
>>>             >> Section: 3.5.3
>>>             >>
>>>             >> Original Text
>>>             >> -------------
>>>             >> Text occurs in two places
>>>             >>
>>>             >> 1)
>>>             >>
>>>             >>       The leaf-list value is specified as a string,
>>>             using the canonical
>>>             >>       representation for the YANG data type.  Any
>>>             reserved characters
>>>             >>       MUST be percent-encoded, according to Sections
>>>             2.1 and 2.5 of
>>>             >>       [RFC3986].
>>>             >>
>>>             >>
>>>             >> 2)
>>>             >>
>>>             >>       The key value is specified as a string, using
>>>             the canonical
>>>             >>       representation for the YANG data type.  Any
>>>             reserved characters
>>>             >>       MUST be percent-encoded, according to Sections
>>>             2.1 and 2.5 of
>>>             >>       [RFC3986].
>>>             >>
>>>             >>
>>>             >> Corrected Text
>>>             >> --------------
>>>             >>
>>>             >> 1)
>>>             >>
>>>             >>       The leaf-list value is specified as a string,
>>>             using the canonical
>>>             >>       representation for the YANG data type.  Any
>>>             reserved characters
>>>             >>       MUST be percent-encoded, according to Sections
>>>             2.1, 2.2, and 2.5 of
>>>             >>       [RFC3986].
>>>             >>
>>>             >> 2)
>>>             >>
>>>             >>       The key value is specified as a string, using
>>>             the canonical
>>>             >>       representation for the YANG data type.  Any
>>>             reserved characters
>>>             >>       MUST be percent-encoded, according to Sections
>>>             2.1, 2.2, and 2.5 of
>>>             >>       [RFC3986].
>>>             >>
>>>             >>
>>>             >> Notes
>>>             >> -----
>>>             >> The reserved character list is defined in section 2.2
>>>             of RFC 3986
>>>             >>
>>>             >> Instructions:
>>>             >> -------------
>>>             >> This erratum is currently posted as "Reported". (If
>>>             it is spam, it
>>>             >> will be removed shortly by the RFC Production
>>>             Center.) Please
>>>             >> use "Reply All" to discuss whether it should be
>>>             verified or
>>>             >> rejected. When a decision is reached, the verifying party
>>>             >> will log in to change the status and edit the report,
>>>             if necessary.
>>>             >>
>>>             >> --------------------------------------
>>>             >> RFC8040 (draft-ietf-netconf-restconf-18)
>>>             >> --------------------------------------
>>>             >> Title               : RESTCONF Protocol
>>>             >> Publication Date    : January 2017
>>>             >> Author(s)           : A. Bierman, M. Bjorklund, K. Watsen
>>>             >> Category            : PROPOSED STANDARD
>>>             >> Source              : Network Configuration
>>>             >> Stream              : IETF
>>>             >> Verifying Party     : IESG
>>>             > _______________________________________________
>>>             > netconf mailing list
>>>             > netconf@ietf.org
>>>             > https://www.ietf.org/mailman/listinfo/netconf
>>>
>>>             _______________________________________________
>>>             netconf mailing list
>>>             netconf@ietf.org
>>>             https://www.ietf.org/mailman/listinfo/netconf
>>>
>>
>