Alexander Afanasyev | a6fc727 | 2014-06-13 11:58:06 -0700 | [diff] [blame] | 1 | Changes |
| 2 | ======= |
| 3 | |
Alexander Afanasyev | e9f4851 | 2018-01-15 23:44:50 -0500 | [diff] [blame] | 4 | Version 0.3 |
| 5 | ----------- |
| 6 | |
Davide Pesavento | 4d6c357 | 2022-05-27 12:05:05 -0400 | [diff] [blame] | 7 | - Rewrite TLV syntax specifications using IETF Augmented BNF (:rfc:`5234`) |
Junxiao Shi | 78ce295 | 2019-05-07 15:34:00 -0400 | [diff] [blame] | 8 | |
Davide Pesavento | cf4903e | 2021-11-08 22:06:22 -0500 | [diff] [blame] | 9 | - Require shortest encoding for TLV-TYPE and TLV-LENGTH numbers |
Junxiao Shi | 459e466 | 2019-05-31 15:28:03 +0000 | [diff] [blame] | 10 | |
Davide Pesavento | 3a74e13 | 2022-11-26 22:10:21 -0500 | [diff] [blame] | 11 | - Add ``Certificate`` specification |
| 12 | |
Alexander Afanasyev | e9f4851 | 2018-01-15 23:44:50 -0500 | [diff] [blame] | 13 | - **Name** |
| 14 | |
Davide Pesavento | ec288fe | 2022-11-26 18:28:01 -0500 | [diff] [blame] | 15 | + Lift restriction on name component types, allowing types in the range [1, 65535] |
Davide Pesavento | cf4903e | 2021-11-08 22:06:22 -0500 | [diff] [blame] | 16 | + Correct definition of name URI encoding: disallow unescaped encoding of PLUS (``+``) and allow TILDE (``~``) |
Alexander Afanasyev | 85f77b1 | 2021-10-26 17:44:35 -0400 | [diff] [blame] | 17 | + Add well-known special-use component types: |
| 18 | |
| 19 | - ``ParametersSha256DigestComponent`` (type 2) |
| 20 | - ``KeywordNameComponent`` (type 32) |
| 21 | - ``SegmentNameComponent`` (type 50) |
| 22 | - ``ByteOffsetNameComponent`` (type 52) |
| 23 | - ``VersionNameComponent`` (type 54) |
| 24 | - ``TimestampNameComponent`` (type 56) |
| 25 | - ``SequenceNumNameComponent`` (type 58) |
Alexander Afanasyev | e9f4851 | 2018-01-15 23:44:50 -0500 | [diff] [blame] | 26 | |
Davide Pesavento | ec288fe | 2022-11-26 18:28:01 -0500 | [diff] [blame] | 27 | - **Interest** |
| 28 | |
| 29 | + Remove ``Selectors`` element |
| 30 | + Add optional ``CanBePrefix`` element after Name |
| 31 | + Move optional ``MustBeFresh`` element after ``CanBePrefix`` |
| 32 | + Move optional ``ForwardingHint`` element after ``MustBeFresh`` (before ``Nonce``) |
| 33 | + Redefine the contents of the ``ForwardingHint`` (remove numerical preference and nesting inside the ``Delegation`` TLV) |
| 34 | + Add optional ``HopLimit`` element |
| 35 | + Add optional ``ApplicationParameters`` element |
| 36 | + Define a new specification for Signed Interest using two new elements: ``InterestSignatureInfo`` and ``InterestSignatureValue`` |
| 37 | |
| 38 | - **Data** |
| 39 | |
| 40 | + Make ``MetaInfo`` and ``Content`` elements optional |
Junxiao Shi | 933b86d | 2023-06-02 23:36:55 +0000 | [diff] [blame] | 41 | + Change semantics of omitted (or set to zero) ``FreshnessPeriod`` element: it cannot be used to satisfy Interests with ``MustBeFresh`` during content store lookup |
Davide Pesavento | ec288fe | 2022-11-26 18:28:01 -0500 | [diff] [blame] | 42 | |
Davide Pesavento | 3c0bc31 | 2020-05-18 22:03:09 -0400 | [diff] [blame] | 43 | - **Signature** |
| 44 | |
| 45 | + Require all compliant implementations to support the ``SignatureSha256WithEcdsa`` signature type using NIST curve P-256 |
| 46 | + Redefine the signed portion of Data packets to be more future-proof |
Junxiao Shi | ac25eab | 2022-05-27 10:52:17 +0000 | [diff] [blame] | 47 | + Add ``SignatureEd25519`` signature type |
Davide Pesavento | 3c0bc31 | 2020-05-18 22:03:09 -0400 | [diff] [blame] | 48 | |
Davide Pesavento | ec288fe | 2022-11-26 18:28:01 -0500 | [diff] [blame] | 49 | - **LinkObject** |
| 50 | |
| 51 | + The content is now just a list of names (remove numerical preference) |
| 52 | |
| 53 | |
Alexander Afanasyev | 13f86d8 | 2018-01-31 12:50:34 -0500 | [diff] [blame] | 54 | Version 0.2.1 |
| 55 | ------------- |
spirosmastorakis | 988e741 | 2016-10-27 14:01:59 -0700 | [diff] [blame] | 56 | |
| 57 | - Add definition of Link Object |
| 58 | |
| 59 | - **Interest** |
| 60 | |
Davide Pesavento | ec288fe | 2022-11-26 18:28:01 -0500 | [diff] [blame] | 61 | + Add default of leftmost child if ``ChildSelector`` element not present |
| 62 | + Add specification of ``ForwardingHint`` element |
spirosmastorakis | 988e741 | 2016-10-27 14:01:59 -0700 | [diff] [blame] | 63 | |
Eric Newberry | 5651986 | 2017-02-13 13:26:19 -0700 | [diff] [blame] | 64 | - **Data** |
| 65 | |
Davide Pesavento | ec288fe | 2022-11-26 18:28:01 -0500 | [diff] [blame] | 66 | + Updated Content Store semantics for Data packets that do not carry ``FreshnessPeriod``. |
| 67 | |
Eric Newberry | 5651986 | 2017-02-13 13:26:19 -0700 | [diff] [blame] | 68 | |
Alexander Afanasyev | e9f4851 | 2018-01-15 23:44:50 -0500 | [diff] [blame] | 69 | Version 0.2 |
Alexander Afanasyev | 13f86d8 | 2018-01-31 12:50:34 -0500 | [diff] [blame] | 70 | ----------- |
Junxiao Shi | a0d3682 | 2014-09-21 11:32:09 -0700 | [diff] [blame] | 71 | |
| 72 | - **Name** |
| 73 | |
| 74 | + Allow zero-length name component |
Alexander Afanasyev | 4b8be21 | 2014-10-06 10:55:04 -0700 | [diff] [blame] | 75 | + Require implicit digest to be specified using ``ImplicitSha256Digest`` name component |
Junxiao Shi | a0d3682 | 2014-09-21 11:32:09 -0700 | [diff] [blame] | 76 | |
Junxiao Shi | def7fc5 | 2015-06-10 13:29:21 -0700 | [diff] [blame] | 77 | - **Interest** |
| 78 | |
| 79 | + Delete deprecated ``Scope`` guider |
Alexander Afanasyev | 948affe | 2016-09-13 13:15:29 -0700 | [diff] [blame] | 80 | + Restrict Interest to have name with at least one name component |
| 81 | |
| 82 | - **Data** |
| 83 | |
Davide Pesavento | ec288fe | 2022-11-26 18:28:01 -0500 | [diff] [blame] | 84 | + Redirect ``ContentType`` number assignments to the `wiki page <https://redmine.named-data.net/projects/ndn-tlv/wiki/ContentType>`__ |
| 85 | |
| 86 | - **Signature** |
| 87 | |
| 88 | + Add spec for ``SignatureHmacWithSha256`` |
Junxiao Shi | def7fc5 | 2015-06-10 13:29:21 -0700 | [diff] [blame] | 89 | |
Junxiao Shi | 4406fdd | 2015-06-10 13:28:10 -0700 | [diff] [blame] | 90 | - **TLV-TYPE** |
| 91 | |
Davide Pesavento | ec288fe | 2022-11-26 18:28:01 -0500 | [diff] [blame] | 92 | + Reserve range [800, 1000] for link protocol |
| 93 | |
Junxiao Shi | 4406fdd | 2015-06-10 13:28:10 -0700 | [diff] [blame] | 94 | |
Alexander Afanasyev | 13f86d8 | 2018-01-31 12:50:34 -0500 | [diff] [blame] | 95 | Version 0.1.1 |
| 96 | ------------- |
Alexander Afanasyev | a6fc727 | 2014-06-13 11:58:06 -0700 | [diff] [blame] | 97 | |
| 98 | - **Signature** |
| 99 | |
Alexander Afanasyev | 4b89611 | 2014-06-23 21:47:15 -0700 | [diff] [blame] | 100 | + New ``SignatureSha256WithEcdsa`` signature type for Elliptic Curve Digital Signature Algorithm (ECDSA). |
Alexander Afanasyev | f3e5e85 | 2014-06-13 22:44:02 -0700 | [diff] [blame] | 101 | + ``KeyLocatorDigest`` renamed to ``KeyDigest``. The specification now explicitly allows KeyDigest to be a SHA256 of any type of the key. |
Alexander Afanasyev | e9f4851 | 2018-01-15 23:44:50 -0500 | [diff] [blame] | 102 | + ``KeyLocator`` element is now defined to be optionally present in generic ``SignatureInfo`` element. |
Alexander Afanasyev | 4b89611 | 2014-06-23 21:47:15 -0700 | [diff] [blame] | 103 | ``SignatureSha256WithRsa`` and ``SignatureSha256WithEcdsa`` still require ``KeyLocator`` to be always present. |
Alexander Afanasyev | a6fc727 | 2014-06-13 11:58:06 -0700 | [diff] [blame] | 104 | |
Davide Pesavento | ec288fe | 2022-11-26 18:28:01 -0500 | [diff] [blame] | 105 | |
Alexander Afanasyev | 13f86d8 | 2018-01-31 12:50:34 -0500 | [diff] [blame] | 106 | Version 0.1 |
| 107 | ----------- |
Alexander Afanasyev | a6fc727 | 2014-06-13 11:58:06 -0700 | [diff] [blame] | 108 | |
| 109 | - **General** |
| 110 | |
| 111 | + XML-based ccnb packet encoding is replaced by TLV encoding |
| 112 | |
| 113 | - **Name** |
| 114 | |
| 115 | + The name encoding is changed from binary XML to TLV format |
| 116 | + The discussions on naming conventions and the use of special markers inside NameComponents are removed from packet specification, and will be covered by a separate technical document |
| 117 | + Deprecated zero-length name component |
| 118 | |
| 119 | - **Interest Packet** |
| 120 | |
| 121 | + ``Nonce`` is changed from optional to required |
| 122 | + ``PublisherPublicKeyDigest`` is replaced by ``PublisherPublicKeyLocator`` |
| 123 | + ``AnswerOriginKind`` is simplified from 4bits to a 1-bit ``MustBeFresh`` |
| 124 | + ``FaceID`` has been removed |
| 125 | + ``InterestLifetime`` changes the unit to the number of milliseconds |
| 126 | + Removed Bloom Filter from Exclude |
| 127 | + Changed default semantics of staleness |
| 128 | |
| 129 | Specifically, NDN-TLV Interest without any selectors will bring any data that matches the name, and only when ``MustBeFresh`` selector is enabled it will try to honor freshness, specified in Data packets. |
| 130 | With Binary XML encoded Interests, the default behavior was to bring "fresh" data and return "stale" data only when ``AnswerOriginKind`` was set to 3. |
| 131 | |
| 132 | Application developers must be aware of this change, reexamine the Interest expression code, and enable ``MustBeFresh`` selector when necessary. |
| 133 | |
| 134 | - **Data Packet** |
| 135 | |
| 136 | + The structure of Data packet is changed: |
| 137 | |
| 138 | * ``Name``, ``MetaInfo``, ``Content``, ``Signature{SignatureInfo, SignatureValue}`` |
| 139 | |
| 140 | + ``SignedInfo`` is renamed to ``MetaInfo`` and its content is changed |
| 141 | + ``PublisherPublicKeyDigest`` and ``ExtOpt`` are removed. |
| 142 | + ``Timestamp`` is removed |
Alexander Afanasyev | e9f4851 | 2018-01-15 23:44:50 -0500 | [diff] [blame] | 143 | + ``KeyLocator`` is moved to be inside the ``Signature`` (``SignatureInfo``) element |
Alexander Afanasyev | a6fc727 | 2014-06-13 11:58:06 -0700 | [diff] [blame] | 144 | + Three content types, ENCR, GONE, and NACK are removed |
| 145 | + ``FreshnessSeconds`` is renamed to ``FreshnessPeriod`` and is expressed in units of milliseconds |
| 146 | |
| 147 | - **Signature** |
| 148 | |
| 149 | + ``Signature`` is moved to the end of Data packet. |
Alexander Afanasyev | e9f4851 | 2018-01-15 23:44:50 -0500 | [diff] [blame] | 150 | + ``KeyLocator`` is moved to be a part of the ``SignatureInfo`` element, if it is applicable for the specific signature type. |
Alexander Afanasyev | a6fc727 | 2014-06-13 11:58:06 -0700 | [diff] [blame] | 151 | |
| 152 | The rationale for the move is to make Signature (sequence of ``SignatureInfo`` and ``SignatureValue`` TLVs) self-contained and self-sufficient. |
| 153 | |
| 154 | + Signature type (or signing method information) is expressed as an assigned integer value (with no assumed default), rather than OID. |
| 155 | + Added support for hash-only "signature" |
| 156 | + The current specification does not define Merkle Hash Tree Aggregated Signatures, but it is expected that such (or similar) signatures will be defined in future version of this specification |