blob: e1b580d3795870b0107ee965d1e529834d92a903 [file] [log] [blame]
Alexander Afanasyevd36dd552014-06-30 12:42:46 -07001.. _Release Notes:
Alexander Afanasyevabaab522014-04-30 20:42:11 -07002
Alexander Afanasyevd36dd552014-06-30 12:42:46 -07003ndn-cxx Release Notes
4---------------------
5
Alexander Afanasyeved545b32015-03-01 14:23:17 -08006ndn-cxx v0.3.1 (changes since version 0.3.0)
7++++++++++++++++++++++++++++++++++++++++++++
8
9Release date: March 3, 2015
10
11New features:
12^^^^^^^^^^^^^
13
14- **Management**
15
16 - Add isConnected() in :ndn-cxx:`signal::Connection` and :ndn-cxx:`signal::ScopedConnection`
17 (:issue:`2308`)
18
19 - Extend :ndn-cxx:`DummyClientFace` to process :ndn-cxx:`LocalControlHeader` (:issue:`2510`)
20
21 - Add CachingPolicy to :ndn-cxx:`LocalControlHeader` (:issue:`2183`)
22
23Updates and bug fixes:
24^^^^^^^^^^^^^^^^^^^^^^
25
26- **Wire encoding**
27
28 - Refactoring of :ndn-cxx:`EncodingImpl` class template (``EncodingBuffer`` and
29 ``EncodingEstimator``) (:issue:`2494`, :issue:`2490`)
30
31 - Change :ndn-cxx:`Block::fromBuffer` return type (:issue:`2553`)
32
33- **Miscellaneous tools**
34
35 - Mark ``Digest<Hash>::operator==`` as unsuitable in a security sensitive context
36 (:issue:`2395`)
37
38 - Restrict destruction of Signal from handler (:issue:`2313`)
39
40- **Documentation**
41
42 - Correct function names in security library tutorial (:issue:`2474`)
43
44 - Remind users to reinstall ports after OSX upgrade (:issue:`2284`)
45
46- **Tests**
47
48 - Fix global buffer overflow in ``ImplicitSha256Digest`` test case (:issue:`2307`)
49
50 - Change naming conventions for unit test files and test suite names (:issue:`2497`)
51
52- **Build**
53
54 - Explicitly define ``_GLIBCXX_USE_NANOSLEEP``, necessary for gcc < 4.8 in some environments
55 (:issue:`2499`)
56
57Removed:
58^^^^^^^^
59
60- Delete deprecated ``Block(std::istream&)`` constructor (:issue:`2241`)
61
62- Delete deprecated ``ndn::ptr_lib``, ``ndn::func_lib`` (:issue:`2110`)
63
64- Delete deprecated ``MetaInfo::TYPE_*`` (:issue:`2170`)
65
66****************************************************************************
67
Alexander Afanasyev5946ed12015-01-19 23:41:39 -080068ndn-cxx v0.3.0 (changes since version 0.2.0)
69++++++++++++++++++++++++++++++++++++++++++++
70
71Release date: February 2, 2015
72
73New features:
74^^^^^^^^^^^^^
75
76- **Build**
77
78 + The code now requires C++11. The minimum supported gcc version is 4.6, as earlier versions
79 do not have proper support for C++11 features.
80
81- **Base**
82
83 + Enable detailed version information when built from shallow clone or tarball
84 (:issue:`1915`)
85
86 + Make default transport configurable (:issue:`2189`)
87
88 + Add ability to do partial Name comparison (:issue:`2090`)
89
90- **Security**
91
92 + Add support for KeyDigest key locator (:issue:`1426`)
93
94 + Add a method to get KeyDigest from a PublicKey instance (:issue:`1964`)
95
96 + Add support for KeyChain to sign Interest using SHA256 digest (:issue:`2218`)
97
98 + Add ``ndnsec-dsk-gen`` tool to generate a pair of Data-Signing-Key (DSK) for the specified
99 identity (:issue:`2246`)
100
101 + Pair-up PIB and TPM in KeyChain: PIB remembers the last used TPM type/location, which is
102 used during KeyChain construction (unless overriden) (:issue:`2242`)
103
104- **Wire encoding**
105
106 + Add support for application-defined meta information blocks (:issue:`2021`)
107
108 + Introduce new ``name::Component::is*`` methods to allow checking if the name component
109 follows the specific naming convention without relying on the exception handling
110 (:issue:`2088`)
111
112 + Add definition of producer-generated NACK (:issue:`2111`)
113
114 + Add ``std::hash<Name>`` specialization to support ``unordered_map`` container
115 (:issue:`2147`)
116
117 + Add support for ImplicitSha256DigestComponent (:issue:`1640`)
118
119 + Allow tagging Interest and Data packets with arbitrary information (:issue:`2336`)
120
121- **Management**
122
123 + Support NFD face query operation (:issue:`2085`)
124
125- **Miscellaneous tools**
126
127 + Add a new helper to calculate digests over dynamic inputs (:issue:`1934`)
128
129 + Add DNS resolver helper (:issue:`1918`)
130
131 + Import and re-license Ethernet and FaceUri classes from NFD codebase, add FaceUri
132 canonization support for ``udp``, ``tcp``, and ``ether`` schemas (:issue:`1994`)
133
134 + Add per-application in-memory storage with LRU, LFU, and FIFO replacement policies
135 (:issue:`1940`)
136
137 + Add ability to specialize system and steady clocks (e.g., for unit tests and simulation
138 purposes) (:issue:`2158`)
139
140 + Expose DummyClientFace as public API
141
142 + New IndentedStream helper class to simplify writing to streams with the specified indents
143 or prefixes (:issue:`2238`)
144
145 + New Signal class template as an enhanced version of the deprecated EventEmitter
146 (:issue:`2279`)
147
148 + New scheduler::ScopedEventId helper to automatically cancel scheduled events upon
149 destruction (:issue:`2442`)
150
151 + New NetworkMonitor helper to detect network state changes (:issue:`2443`)
152
153Updates and bug fixes:
154^^^^^^^^^^^^^^^^^^^^^^
155
156- **Base**
157
158 + Prevent flags being set for rib/unregister command (:issue:`1945`)
159
160 + Fix segfault caused by Face::unregisterPrefix when registeredPrefixId does not exist
161
162 + Add explicit internal KeyChain to Face class. KeyChain previously existed in the Face as
163 part of NFD controller class. (:issue:`2039`)
164
165 + Properly disable assertions in release builds (:issue:`2135`)
166
167 + Connect to Transport during construction of Face instance (:issue:`2318`)
168
169- **Wire encoding**
170
171 + Fix segfault when decoding empty Exclude element (:issue:`1970`)
172
173 + Provide EqualityComparable concept for Exclude element
174
175 + Correct Marker in Name::appendVersion() (:issue:`2086`)
176
177 + Ensure that wire-encoding errors are inherited from ``tlv::Error`` (:issue:`1983`)
178
179- **Management**
180
181 + Replace FaceFlags with individual fields in face management data structures (:issue:`1992`)
182
183 + ``ndn::nfd::Controller`` extended to allow generating ControlCommand for remote prefix
184 registration (:issue:`2039`)
185
186 + Change ``ForwarderStatus.NfdVersion`` to string (:issue:`2003`)
187
188- **Security**
189
190 + Fix ``ndnsec-cert-gen`` to correctly infer prefix before KEY component (:issue:`2052`)
191
192 + Help message corrections in ``ndnsec-cert-dump``, ``ndnsec-cert-gen``, and
193 ``ndnsec-key-gen`` (:issue:`2052`)
194
195 + Accept ``--sign-id`` and ``--cert-prefix`` in ``ndnsec-cert-revoke`` (:issue:`2058`)
196
197 + Changes output format of ``ndnsec-cert-revoke`` to base64 encoding (:issue:`2059`)
198
199 + Add a new (safer) option to ``ndnsec-cert-gen`` allowing inclusion of additional
200 information blocks into the certificate. The new ``--signed-info`` parameter makes minimum
201 assumptions, treating text before first space as OID and the rest as the associated string
202 with this OID.
203
204 + Make Face optional in Validator class (:issue:`2124`)
205
206 + Display signature information when printing a certificate (:issue:`2196`)
207
208 + Handle certificate decoding error in validation process (:issue:`2212`)
209
210 + Fix segmentation fault in ``ndnsec-sign-req`` (:issue:`2211`)
211
212 + Allow verbose option in ``ndnsec-list`` (:issue:`2197`)
213
214 + Allow generation of DSK using ``ndnsec-key-gen`` (:issue:`2247`)
215
216 + Allow ``ndnsec-key-gen`` to generate ECDSA keys (:issue:`2248`)
217
218 + Fix memory leak in SecPublicInfoSqlite3 (:issue:`2253`)
219
220 + Properly report status of ``ndnsec-delete`` execution (:issue:`2275`)
221
222- **Miscellaneous tools**
223
224 + Fix incorrect tag map in ``tlvdump`` tool
225
226 + Change to default resolver behavior in util::dns::Resolver (:issue:`2415`)
227
228- **Documentation**
229
230 + Update of tutorials and installation instructions
231
232 + Rename manpage of ``client.conf`` to ``ndn-client.conf`` (:issue:`1967`)
233
234 + Updated and extended ndn-cxx code style:
235
236 - add rules for some C++11 constructs
237 - prefer ``BOOST_ASSERT`` and ``static_assert``
238
239 + Improve example applications (:issue:`1976`)
240
241- **Tests**
242
243 + Improve security unit test cases (:issue:`1683`)
244
245 + Embedding CI build and test running scripts into the repository
246
247 + Partial unit test coverage for Face class (previously covered only by integration tests)
248 (:issue:`1947`)
249
250 + Improve stability of unit tests by using UnitTestTime (wall clock independent time)
251 (:issue:`2152`)
252
253- **Build**
254
255 + Redesign the way default compiler flags are determined (:issue:`2209`)
256
257 + Support tools and examples with multiple translation units (:issue:`2344`)
258
259 + Disable installation of internal headers and headers of the disabled components
260 (:issue:`2266`, and :issue:`2269`)
261
262 + Enable conditional compilation based on presence of ``getpass()`` function
263
264- Other minor fixes and corrections
265
266Deprecated:
267^^^^^^^^^^^
268
269- ``ndn::ptr_lib`` and ``ndn::func_lib`` namespace aliases
270
271- The following ``nfd::Controller`` methods:
272
273 + ``Controller::start`` overloads, except the overload taking ``CommandOptions``
274 + ``Controller::Sign`` typedef
275 + ``Controller::getDefaultCommandTimeout``
276 + ``ControlCommand::getPrefix``
277 + ``ControlCommand::getRequestName(ControlParameters)``
278 + ``Controller::Controller(Face&)``
279
280- ``MetaInfo::TYPE_*`` constants
281
282- ``EventEmitter`` is deprecated in favor of ``Signal``
283
284Removed:
285^^^^^^^^
286
287- FaceFlags APIs (:issue:`1992`)
288
289- ``ControlCommand::makeCommandInterest`` (:issue:`2008`)
290
291- namespace ``ndn::Tlv`` (:issue:`2079`)
292
293- ``shared_ptr<io_service>`` constructor and getter in Face class
294
295- ``tlv::ConentType`` (typo in the name)
296
297- ``Selectors::Selectors(int, int, Exclude, int, bool)`` constructor
298
299- ``Interest::Interest(Name, int, int, Exclude, int, bool, int, time::milliseconds, uint32_t)``
300 constructor
301
302- ``signature-sha256.hpp`` file
303
304- unused ``encryption-manager.hpp`` file
305
306- unused ``openssl`` dependency
307
Alexander Afanasyeved545b32015-03-01 14:23:17 -0800308****************************************************************************
309
Alexander Afanasyevec0499f2014-07-30 12:11:01 -0700310ndn-cxx v0.2.0 (changes since version 0.1.0)
311++++++++++++++++++++++++++++++++++++++++++++
312
313Release date: August 25, 2014
Alexander Afanasyevd36dd552014-06-30 12:42:46 -0700314
315New features:
316^^^^^^^^^^^^^
317
318- **Base**
319
320 + The license under which the library is released is changed to **Lesser GNU Public
321 License version 3.0**.
322
323 + New ways to use incoming Interest dispatching:
324
325 * New :ndn-cxx:`InterestFilter` abstraction that supports filtering based on name
326 prefixes and regular expressions.
327
328 * Separated :ndn-cxx:`Face::registerPrefix()` and :ndn-cxx:`Face::setInterestFilter()`
329 methods allow distinct operations of registering with the local NDN forwarder and setting
330 up application-specific ``OnInterest`` call dispatch using InterestFilters.
331
Alexander Afanasyevec0499f2014-07-30 12:11:01 -0700332 + Add support for new `NDN naming conventions
Alexander Afanasyev5946ed12015-01-19 23:41:39 -0800333 <http://named-data.net/doc/tech-memos/naming-conventions.pdf>`_ (:issue:`1761`)
Alexander Afanasyevec0499f2014-07-30 12:11:01 -0700334
Alexander Afanasyevd36dd552014-06-30 12:42:46 -0700335- **Security**
336
337 + Add ``type dir`` :ref:`trust-anchor in ValidatorConfig <validator-conf-trust-anchors>`
338 to add all certificates under the specified directory as trust anchors.
339 The new option also allow periodic reloading trust anchors, allowing dynamic trust
340 models.
341
342 + Added support for multiple signature types to :ndn-cxx:`PublicKey`,
343 :ndn-cxx:`SecPublicInfo` abstractions
344
345 + New :ndn-cxx:`SignatureSha256WithEcdsa` signature type
346
Alexander Afanasyevec0499f2014-07-30 12:11:01 -0700347 + Updates in :ndn-cxx:`Signature` data structure to reflect changes in `NDN-TLV spec
348 0.1.1 <http://named-data.net/doc/NDN-TLV/0.1.1/>`_
349
Alexander Afanasyevd36dd552014-06-30 12:42:46 -0700350- **Wire encoding**
351
352 + :ndn-cxx:`Data::getFullName() <getFullName()>` method to get :ndn-cxx:`Data` packet
353 name with implicit digest
354
Alexander Afanasyev5946ed12015-01-19 23:41:39 -0800355 + New :ndn-cxx:`Name::getSuccessor()` method to get name successor (:issue:`1677`)
Alexander Afanasyevd36dd552014-06-30 12:42:46 -0700356
Alexander Afanasyev5946ed12015-01-19 23:41:39 -0800357 + New in-wire refreshing of Interest's nonce (:issue:`1758`)
Alexander Afanasyevec0499f2014-07-30 12:11:01 -0700358
Alexander Afanasyevd36dd552014-06-30 12:42:46 -0700359- **Management**
360
361 + Support for :ndn-cxx:`ChannelStatus`, :ndn-cxx:`StrategyChoice` datasets
362
Alexander Afanasyev5946ed12015-01-19 23:41:39 -0800363 + Defining new common Route Origins for NFD RIB management protocol (:issue:`1719`)
Alexander Afanasyevec0499f2014-07-30 12:11:01 -0700364
Alexander Afanasyev5946ed12015-01-19 23:41:39 -0800365 + New RibEntry and Route data structures for RIB management protocol (:issue:`1764`)
Alexander Afanasyevec0499f2014-07-30 12:11:01 -0700366
Alexander Afanasyev5946ed12015-01-19 23:41:39 -0800367 + Add support for RIB flags for setInterestFilter and registerPrefix (:issue:`1842`)
Alexander Afanasyevec0499f2014-07-30 12:11:01 -0700368
369- **Miscellaneous tools**
370
371 + Introduce :ndn-cxx:`Scheduler::cancelAllEvents` to cancel all previously scheduled events
Alexander Afanasyev5946ed12015-01-19 23:41:39 -0800372 (:issue:`1757`)
Alexander Afanasyevec0499f2014-07-30 12:11:01 -0700373
374 + Introduce :ndn-cxx:`util::EventEmitter`, :ndn-cxx:`util::NotificationSubscriber`,
375 :ndn-cxx:`util::NotificationStream`, and :ndn-cxx:`nfd::FaceMonitor` utility classes
376
377 + Introduce :ndn-cxx:`util::SegmentFetcher` helper class to fetch multi-segmented data
Alexander Afanasyev5946ed12015-01-19 23:41:39 -0800378 (:issue:`1879`)
Alexander Afanasyevec0499f2014-07-30 12:11:01 -0700379
Alexander Afanasyevd36dd552014-06-30 12:42:46 -0700380- **Build**
381
382 + enabled support of precompiled headers for clang and gcc compilers to speed up compilation
383
384Updates and bug fixes:
385^^^^^^^^^^^^^^^^^^^^^^
386
Alexander Afanasyevec0499f2014-07-30 12:11:01 -0700387- **Base**
388
Alexander Afanasyev5946ed12015-01-19 23:41:39 -0800389 + Serialization of socket write operations (:issue:`1707`)
Alexander Afanasyevec0499f2014-07-30 12:11:01 -0700390
Alexander Afanasyev5946ed12015-01-19 23:41:39 -0800391 + Enforcing limit on Interest and Data packet size in :ndn-cxx:`Face::expressInterest` and
392 :ndn-cxx:`Face::put` methods (:issue:`1774`)
Alexander Afanasyevec0499f2014-07-30 12:11:01 -0700393
394 + Cleaning up transport state on communication failure, so Face can try to reconnect
395 in the future.
396
Alexander Afanasyev5946ed12015-01-19 23:41:39 -0800397 + Fix bug with Face::removePendingInterest (:issue:`1917`)
Alexander Afanasyevec0499f2014-07-30 12:11:01 -0700398
Alexander Afanasyevd36dd552014-06-30 12:42:46 -0700399- **Wire encoding**
400
401 + Nonce field is now encoded as 4-byte uint8_t value, as defined by NDN-TLV spec.
402
403 + Optimized Data packet signing
404
405 :ndn-cxx:`KeyChain::sign` method now pre-allocates :ndn-cxx:`EncodingBuffer`, requests
406 unsigned portion of :ndn-cxx:`Data` using ``Data::wireEncode(EncodingBuffer, true)``,
407 and then appends the resulting signature and prepends :ndn-cxx:`Data` packet header.
408 This way there is no extra memory allocation after :ndn-cxx:`Data` packet is signed.
409
Alexander Afanasyevec0499f2014-07-30 12:11:01 -0700410 + Optimized implicit digest calculation in :ndn-cxx:`Interest::matchesData` method
Alexander Afanasyev5946ed12015-01-19 23:41:39 -0800411 (:issue:`1769`)
Alexander Afanasyevec0499f2014-07-30 12:11:01 -0700412
413- **Management**
414
Alexander Afanasyev5946ed12015-01-19 23:41:39 -0800415 + Add link-layer byte counts in FaceStatus data structure (:issue:`1765`)
Alexander Afanasyevec0499f2014-07-30 12:11:01 -0700416
Alexander Afanasyevd36dd552014-06-30 12:42:46 -0700417- **Security**
418
419 + Allow user to explicitly specify the cert name prefix before 'KEY' component in
420 ``ndnsec-certgen``
421
422 + ``SignatureSha256`` has been renamed to :ndn-cxx:`DigestSha256` to conform with
423 `NDN-TLV specification <http://named-data.net/doc/ndn-tlv/>`_.
424
425 + Add checking of ``Timestamp`` and ``Nonce`` fields in signed Interest within
426 :ndn-cxx:`ValidatorConfig`
427
428 + Allow validator customization using hooks:
429
430 Sub-classes of :ndn-cxx:`Validator` class can use the following hooks to fine-tune the
431 validation process:
432
433 * :ndn-cxx:`Validator::preCertificateValidation <preCertificateValidation>` to
434 process received certificate before validation.
435 * :ndn-cxx:`Validator::onTimeout <onTimeout>` to process interest timeout
436 * :ndn-cxx:`Validator::afterCheckPolicy <afterCheckPolicy>` to process validation requests.
437
Yingdi Yu4e99f532014-08-25 19:40:57 -0700438 + Fix memory issues in :ndn-cxx:`SecPublicInfoSqlite3`
Alexander Afanasyevec0499f2014-07-30 12:11:01 -0700439
440- **Miscellaneous tools**
441
442 + Redefine method for random number generation: ``random::generateWord*`` and
443 ``random::generateSecureWord*`` to generate cryptographically non-secure (fast) and
444 secure (slow) random numbers.
445
Alexander Afanasyevd36dd552014-06-30 12:42:46 -0700446- Other minor fixes and corrections
447
448Deprecated:
449^^^^^^^^^^^
450
451- ``SignatureSha256`` class, use :ndn-cxx:`DigestSha256` instead.
452
453- All :ndn-cxx:`Face` constructors that accept ``shared_ptr<io_service>``.
454
455 Use versions that accept reference to ``io_service`` object.
456
457- ``Face::ioService`` method, use :ndn-cxx:`Face::getIoService` instead.
458
459- :ndn-cxx:`Interest` constructor that accepts name, individual selectors, and individual
460 guiders as constructor parameters.
461
462 Use ``Interest().setX(...).setY(...)`` or use the overload taking ``Selectors``
463
464- ``name::Component::toEscapedString`` method, use :ndn-cxx:`name::Component::toUri` instead.
465
466- ``SecPublicInfo::addPublicKey`` method, use :ndn-cxx:`SecPublicInfo::addKey` instead.
467
468- ``Tlv::ConentType`` constant (typo), use ``Tlv::ContentType`` instead.
469
Alexander Afanasyevec0499f2014-07-30 12:11:01 -0700470- ``CommandInterestGenerator`` and ``CommandInterestValidator`` utility classes.
471 :ndn-cxx:`ValidatorConfig` should be used instead.
472
Alexander Afanasyevd36dd552014-06-30 12:42:46 -0700473Removed:
474^^^^^^^^
475
476- support of ndnd-tlv (only NFD management protocol is supported now)
477
478- ``SecPublicInfoMemory`` and ``SecTpmMemory`` classes that were no longer used
479
480- Removing concept of periodic event from :ndn-cxx:`Scheduler`.
481
482 In applications, periodic events should be just re-scheduled within the callback for
483 single-shot events.
484
Alexander Afanasyeved545b32015-03-01 14:23:17 -0800485****************************************************************************
Alexander Afanasyevd36dd552014-06-30 12:42:46 -0700486
487ndn-cxx v0.1.0
488++++++++++++++
Alexander Afanasyevc5452c52014-04-29 17:21:51 -0700489
Alexander Afanasyevec0499f2014-07-30 12:11:01 -0700490Release date: May 7, 2014
491
Alexander Afanasyevc5452c52014-04-29 17:21:51 -0700492Version 0.1.0 is the initial release of ndn-cxx, an NDN C++ library with eXperimental
493eXtensions.
494
495Originally based on `ndn-cpp library <https://github.com/named-data/ndn-cpp>`_ the ndn-cxx
Lixia Zhangc5fdfe72014-04-30 09:33:43 -0700496library adopts a slightly different design philosophy (including an extensive use of Boost
497libraries to facilitate development, as well as the use of Crypto++ library to support
498cryptographic operations), and includes a number of extensions that aim to simplify NDN
499application development.
Alexander Afanasyevc5452c52014-04-29 17:21:51 -0700500
501The current features include:
502
503- **Base**
504
Lixia Zhangc5fdfe72014-04-30 09:33:43 -0700505 + Fully asynchronous, event-driven communication model, which is implemented using `Boost.Asio
Alexander Afanasyevc5452c52014-04-29 17:21:51 -0700506 <http://www.boost.org/doc/libs/1_48_0/doc/html/boost_asio.html>`_
507 + Single-threaded, but thread-safe Face operations
508
509 A single Face object can be safely used in multiple threads to express Interests and
510 publish Data packets
511
512 + Explicit time management for NDN operations using `Boost.Chrono
513 <http://www.boost.org/doc/libs/1_48_0/doc/html/chrono.html>`_
514 + Simplified and extended `NDN API <doxygen/annotated.html>`_
515 + Extensive set of unit-tests based on `Boost.Test framework
516 <http://www.boost.org/doc/libs/1_48_0/libs/test/doc/html/index.html>`_
517
518 - Continuous integration using an in-house installation of Jenkins build bots and the
Lixia Zhangc5fdfe72014-04-30 09:33:43 -0700519 hosted `Travis CI <https://travis-ci.org/named-data/ndn-cxx>`_ continuous
520 integration service compile and verify correctness of the library for each commit
Alexander Afanasyevc5452c52014-04-29 17:21:51 -0700521
522- **Wire format**
523
524 + Full support of `NDN-TLV packet format v0.1 <http://named-data.net/doc/NDN-TLV/0.1/>`_
525 + Pure C++ implementation of wire encoding/decoding with simple access to wire format
526 of all NDN packet abstractions via ``wireEncode`` and ``wireDecode`` methods
527
528 In many cases, NDN packet abstractions are just "indices" to the wire format
529
Alexander Afanasyevc5452c52014-04-29 17:21:51 -0700530- **Communication with the forwarder**
531
532 + Enable connecting to local forwarder via UNIX and TCP transports and to remote
533 forwarders using TCP transport
534 + Full support for communication with `Named Data Networking Forwarding Daemon (NFD)
535 <https://github.com/named-data/NFD>`_
536
537 - Full support for `NFD management protocols
538 <http://redmine.named-data.net/projects/nfd/wiki/Management>`_ to NFD status
539 information, create and manage NFD Faces, receive NFD Face status change
540 notifications, update StrategyChoice for namespaces, and manage routes in RIB
541 - Support for `LocalControlHeader
542 <http://redmine.named-data.net/projects/nfd/wiki/LocalControlHeader>`_ to implement
543 special NDN applications that need low-level control of NDN packet forwarding
544
Lixia Zhangc5fdfe72014-04-30 09:33:43 -0700545- **Security support**
Alexander Afanasyevc5452c52014-04-29 17:21:51 -0700546
Lixia Zhangc5fdfe72014-04-30 09:33:43 -0700547 + A set of security primitives to allowing implementation of secure NDN applications in
548 a simplified manner
Alexander Afanasyevc5452c52014-04-29 17:21:51 -0700549
550 - **KeyChain**: provides simple interfaces of packet signing, and key and certificate
551 management
552 - **ValidatorConfig**: validator that implements trust model defined in a configuration
553 file
554 - **CommandInterestGenerator** and **CommandInterestValidator**: convenient helpers to produce
555 and validate command interests, while preventing potential replay attacks
556
557 + Several implementations of trusted platform modules to securely manage private keys
558
559 - **SecTpmOsx**: TPM based on OSX KeyChain (OSX-specific)
560 - **SecTpmFile**: TPM that uses file-based access control to protect keys (cross-platform)
561
562 + Extensive set of security command-line tools to manage security identities and certificates
563
564 - Generating private/public keys
565 - Issuing certificates
566 - Exporting/importing identities
567 - Managing default security settings
568
569- **Miscellaneous tools**
570
571 + Scheduler to support delayed time operations
572 + NDN regular expressions
573 + Simple config file to alter various aspects of the library
574 + **tlvdump**: a simple tool to visualize TLV-encoded blocks