blob: 7c8f19752e771b1ba6c8da7f8bdc7f9bb2bb7f9d [file] [log] [blame]
Alexander Afanasyeva6fc7272014-06-13 11:58:06 -07001Changes
2=======
3
Alexander Afanasyeve9f48512018-01-15 23:44:50 -05004Version 0.3
5-----------
6
Davide Pesavento4d6c3572022-05-27 12:05:05 -04007- Rewrite TLV syntax specifications using IETF Augmented BNF (:rfc:`5234`)
Junxiao Shi78ce2952019-05-07 15:34:00 -04008
Davide Pesaventocf4903e2021-11-08 22:06:22 -05009- Require shortest encoding for TLV-TYPE and TLV-LENGTH numbers
Junxiao Shi459e4662019-05-31 15:28:03 +000010
Davide Pesavento3a74e132022-11-26 22:10:21 -050011- Add ``Certificate`` specification
12
Alexander Afanasyeve9f48512018-01-15 23:44:50 -050013- **Name**
14
Davide Pesaventoec288fe2022-11-26 18:28:01 -050015 + Lift restriction on name component types, allowing types in the range [1, 65535]
Davide Pesaventocf4903e2021-11-08 22:06:22 -050016 + Correct definition of name URI encoding: disallow unescaped encoding of PLUS (``+``) and allow TILDE (``~``)
Alexander Afanasyev85f77b12021-10-26 17:44:35 -040017 + 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 Afanasyeve9f48512018-01-15 23:44:50 -050026
Davide Pesaventoec288fe2022-11-26 18:28:01 -050027- **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
41 + Change semantics of omitted (or set to zero) ``FreshnessPeriod`` element: it cannot be used to satisfy Interests with ``MustBeFresh``
42
Davide Pesavento3c0bc312020-05-18 22:03:09 -040043- **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 Shiac25eab2022-05-27 10:52:17 +000047 + Add ``SignatureEd25519`` signature type
Davide Pesavento3c0bc312020-05-18 22:03:09 -040048
Davide Pesaventoec288fe2022-11-26 18:28:01 -050049- **LinkObject**
50
51 + The content is now just a list of names (remove numerical preference)
52
53
Alexander Afanasyev13f86d82018-01-31 12:50:34 -050054Version 0.2.1
55-------------
spirosmastorakis988e7412016-10-27 14:01:59 -070056
57- Add definition of Link Object
58
59- **Interest**
60
Davide Pesaventoec288fe2022-11-26 18:28:01 -050061 + Add default of leftmost child if ``ChildSelector`` element not present
62 + Add specification of ``ForwardingHint`` element
spirosmastorakis988e7412016-10-27 14:01:59 -070063
Eric Newberry56519862017-02-13 13:26:19 -070064- **Data**
65
Davide Pesaventoec288fe2022-11-26 18:28:01 -050066 + Updated Content Store semantics for Data packets that do not carry ``FreshnessPeriod``.
67
Eric Newberry56519862017-02-13 13:26:19 -070068
Alexander Afanasyeve9f48512018-01-15 23:44:50 -050069Version 0.2
Alexander Afanasyev13f86d82018-01-31 12:50:34 -050070-----------
Junxiao Shia0d36822014-09-21 11:32:09 -070071
72- **Name**
73
74 + Allow zero-length name component
Alexander Afanasyev4b8be212014-10-06 10:55:04 -070075 + Require implicit digest to be specified using ``ImplicitSha256Digest`` name component
Junxiao Shia0d36822014-09-21 11:32:09 -070076
Junxiao Shidef7fc52015-06-10 13:29:21 -070077- **Interest**
78
79 + Delete deprecated ``Scope`` guider
Alexander Afanasyev948affe2016-09-13 13:15:29 -070080 + Restrict Interest to have name with at least one name component
81
82- **Data**
83
Davide Pesaventoec288fe2022-11-26 18:28:01 -050084 + 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 Shidef7fc52015-06-10 13:29:21 -070089
Junxiao Shi4406fdd2015-06-10 13:28:10 -070090- **TLV-TYPE**
91
Davide Pesaventoec288fe2022-11-26 18:28:01 -050092 + Reserve range [800, 1000] for link protocol
93
Junxiao Shi4406fdd2015-06-10 13:28:10 -070094
Alexander Afanasyev13f86d82018-01-31 12:50:34 -050095Version 0.1.1
96-------------
Alexander Afanasyeva6fc7272014-06-13 11:58:06 -070097
98- **Signature**
99
Alexander Afanasyev4b896112014-06-23 21:47:15 -0700100 + New ``SignatureSha256WithEcdsa`` signature type for Elliptic Curve Digital Signature Algorithm (ECDSA).
Alexander Afanasyevf3e5e852014-06-13 22:44:02 -0700101 + ``KeyLocatorDigest`` renamed to ``KeyDigest``. The specification now explicitly allows KeyDigest to be a SHA256 of any type of the key.
Alexander Afanasyeve9f48512018-01-15 23:44:50 -0500102 + ``KeyLocator`` element is now defined to be optionally present in generic ``SignatureInfo`` element.
Alexander Afanasyev4b896112014-06-23 21:47:15 -0700103 ``SignatureSha256WithRsa`` and ``SignatureSha256WithEcdsa`` still require ``KeyLocator`` to be always present.
Alexander Afanasyeva6fc7272014-06-13 11:58:06 -0700104
Davide Pesaventoec288fe2022-11-26 18:28:01 -0500105
Alexander Afanasyev13f86d82018-01-31 12:50:34 -0500106Version 0.1
107-----------
Alexander Afanasyeva6fc7272014-06-13 11:58:06 -0700108
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 Afanasyeve9f48512018-01-15 23:44:50 -0500143 + ``KeyLocator`` is moved to be inside the ``Signature`` (``SignatureInfo``) element
Alexander Afanasyeva6fc7272014-06-13 11:58:06 -0700144 + 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 Afanasyeve9f48512018-01-15 23:44:50 -0500150 + ``KeyLocator`` is moved to be a part of the ``SignatureInfo`` element, if it is applicable for the specific signature type.
Alexander Afanasyeva6fc7272014-06-13 11:58:06 -0700151
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