blob: 8cc41c0906a7e4311afa0d71a8392658fae54d47 [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
Junxiao Shi78ce2952019-05-07 15:34:00 -04007- Rewrite TLV syntax specifications using `IETF Augmented BNF (RFC 5234) <https://tools.ietf.org/html/rfc5234>`__
8
Junxiao Shi459e4662019-05-31 15:28:03 +00009 + Require shortest encoding for TLV-TYPE and TLV-LENGTH numbers
10
Alexander Afanasyeve9f48512018-01-15 23:44:50 -050011- **Interest**
12
13 + Remove ``Selectors`` element
14 + Add optional ``CanBePrefix`` element after Name
15 + Move optional ``MustBeFresh`` element after ``CanBePrefix``
16 + Move optional ``ForwardingHint`` element after ``MustBeFresh`` (before ``Nonce``)
17 + Add optional ``HopLimit`` element
Zhiyi Zhang0c04fd82018-09-04 16:29:47 -040018 + Add optional ``ApplicationParameters`` element
Davide Pesavento3c0bc312020-05-18 22:03:09 -040019 + Define a new specification for Signed Interest using two new elements: ``InterestSignatureInfo`` and ``InterestSignatureValue``
Alexander Afanasyeve9f48512018-01-15 23:44:50 -050020
21- **Data**
22
23 + Make ``MetaInfo`` and ``Content`` elements optional
Davide Pesavento3c0bc312020-05-18 22:03:09 -040024 + Change semantics of omitted (or set to zero) ``FreshnessPeriod`` element: it cannot be used to satisfy Interests with ``MustBeFresh``
Alexander Afanasyeve9f48512018-01-15 23:44:50 -050025
26- **Name**
27
Davide Pesavento3c0bc312020-05-18 22:03:09 -040028 + Lift restriction on name component types, allowing types in the range ``1`` - ``32767``
29 + Correct definition of name URI encoding: disallow unescaped encoding of PLUS ``+`` and allow TILDE ``~``
Alexander Afanasyev9013a562018-08-08 09:48:41 -040030 + Add ``ParametersSha256DigestComponent``
Alexander Afanasyeve9f48512018-01-15 23:44:50 -050031
Davide Pesavento3c0bc312020-05-18 22:03:09 -040032- **Signature**
33
34 + Require all compliant implementations to support the ``SignatureSha256WithEcdsa`` signature type using NIST curve P-256
35 + Redefine the signed portion of Data packets to be more future-proof
36
Alexander Afanasyev13f86d82018-01-31 12:50:34 -050037Version 0.2.1
38-------------
spirosmastorakis988e7412016-10-27 14:01:59 -070039
40- Add definition of Link Object
41
42- **Interest**
43
Alexander Afanasyeve9f48512018-01-15 23:44:50 -050044 + Add default of leftmost child if ChildSelector element not present
45 + Add specification of ForwardingHint element
spirosmastorakis988e7412016-10-27 14:01:59 -070046
Eric Newberry56519862017-02-13 13:26:19 -070047- **Data**
48
49 + Updated Content Store semantics for Data packets that do not carry FreshnessPeriod.
50
Alexander Afanasyeve9f48512018-01-15 23:44:50 -050051Version 0.2
Alexander Afanasyev13f86d82018-01-31 12:50:34 -050052-----------
Junxiao Shia0d36822014-09-21 11:32:09 -070053
54- **Name**
55
56 + Allow zero-length name component
Alexander Afanasyev4b8be212014-10-06 10:55:04 -070057 + Require implicit digest to be specified using ``ImplicitSha256Digest`` name component
Junxiao Shia0d36822014-09-21 11:32:09 -070058
Alexander Afanasyev948affe2016-09-13 13:15:29 -070059- **Signature**
60
61 + Add spec for ``SignatureHmacWithSha256``
62
Junxiao Shidef7fc52015-06-10 13:29:21 -070063- **Interest**
64
65 + Delete deprecated ``Scope`` guider
Alexander Afanasyev948affe2016-09-13 13:15:29 -070066 + Restrict Interest to have name with at least one name component
67
68- **Data**
69
70 + Redirect ContentType number assignments to the `wiki page <https://redmine.named-data.net/projects/ndn-tlv/wiki/ContentType>`__
Junxiao Shidef7fc52015-06-10 13:29:21 -070071
Junxiao Shi4406fdd2015-06-10 13:28:10 -070072- **TLV-TYPE**
73
74 + Reserve 800-1000 range for link protocol
75
Alexander Afanasyev13f86d82018-01-31 12:50:34 -050076Version 0.1.1
77-------------
Alexander Afanasyeva6fc7272014-06-13 11:58:06 -070078
79- **Signature**
80
Alexander Afanasyev4b896112014-06-23 21:47:15 -070081 + New ``SignatureSha256WithEcdsa`` signature type for Elliptic Curve Digital Signature Algorithm (ECDSA).
Alexander Afanasyevf3e5e852014-06-13 22:44:02 -070082 + ``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 -050083 + ``KeyLocator`` element is now defined to be optionally present in generic ``SignatureInfo`` element.
Alexander Afanasyev4b896112014-06-23 21:47:15 -070084 ``SignatureSha256WithRsa`` and ``SignatureSha256WithEcdsa`` still require ``KeyLocator`` to be always present.
Alexander Afanasyeva6fc7272014-06-13 11:58:06 -070085
Alexander Afanasyev13f86d82018-01-31 12:50:34 -050086Version 0.1
87-----------
Alexander Afanasyeva6fc7272014-06-13 11:58:06 -070088
89- **General**
90
91 + XML-based ccnb packet encoding is replaced by TLV encoding
92
93- **Name**
94
95 + The name encoding is changed from binary XML to TLV format
96 + 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
97 + Deprecated zero-length name component
98
99- **Interest Packet**
100
101 + ``Nonce`` is changed from optional to required
102 + ``PublisherPublicKeyDigest`` is replaced by ``PublisherPublicKeyLocator``
103 + ``AnswerOriginKind`` is simplified from 4bits to a 1-bit ``MustBeFresh``
104 + ``FaceID`` has been removed
105 + ``InterestLifetime`` changes the unit to the number of milliseconds
106 + Removed Bloom Filter from Exclude
107 + Changed default semantics of staleness
108
109 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.
110 With Binary XML encoded Interests, the default behavior was to bring "fresh" data and return "stale" data only when ``AnswerOriginKind`` was set to 3.
111
112 Application developers must be aware of this change, reexamine the Interest expression code, and enable ``MustBeFresh`` selector when necessary.
113
114- **Data Packet**
115
116 + The structure of Data packet is changed:
117
118 * ``Name``, ``MetaInfo``, ``Content``, ``Signature{SignatureInfo, SignatureValue}``
119
120 + ``SignedInfo`` is renamed to ``MetaInfo`` and its content is changed
121 + ``PublisherPublicKeyDigest`` and ``ExtOpt`` are removed.
122 + ``Timestamp`` is removed
Alexander Afanasyeve9f48512018-01-15 23:44:50 -0500123 + ``KeyLocator`` is moved to be inside the ``Signature`` (``SignatureInfo``) element
Alexander Afanasyeva6fc7272014-06-13 11:58:06 -0700124 + Three content types, ENCR, GONE, and NACK are removed
125 + ``FreshnessSeconds`` is renamed to ``FreshnessPeriod`` and is expressed in units of milliseconds
126
127- **Signature**
128
129 + ``Signature`` is moved to the end of Data packet.
Alexander Afanasyeve9f48512018-01-15 23:44:50 -0500130 + ``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 -0700131
132 The rationale for the move is to make Signature (sequence of ``SignatureInfo`` and ``SignatureValue`` TLVs) self-contained and self-sufficient.
133
134 + Signature type (or signing method information) is expressed as an assigned integer value (with no assumed default), rather than OID.
135 + Added support for hash-only "signature"
136 + 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