ndn-cxx v0.1.0 Release Notes
============================

Version 0.1.0 is the initial release of ndn-cxx, an NDN C++ library with eXperimental eXtensions.

Originally based on [ndn-cpp library](https://github.com/named-data/ndn-cpp) the ndn-cxx library
adopts a slightly different design philosophy (including an extensive use of Boost libraries to
facilitate development, as well as the use of Crypto++ library to support cryptographic operations),
and includes a number of extensions that aim to simplify NDN application development.

The current features include:

-   **Base**
    -   Fully asynchronous, event-driven communication model, which is implemented using
        [Boost.Asio](http://www.boost.org/doc/libs/1_48_0/doc/html/boost_asio.html)
    -   Single-threaded, but thread-safe Face operations

        > A single Face object can be safely used in multiple threads to express Interests and
        > publish Data packets

    -   Explicit time management for NDN operations using
        [Boost.Chrono](http://www.boost.org/doc/libs/1_48_0/doc/html/chrono.html)
    -   Simplified and extended [NDN API](doxygen/annotated.html)
    -   Extensive set of unit-tests based on [Boost.Test
        framework](http://www.boost.org/doc/libs/1_48_0/libs/test/doc/html/index.html)
        -   Continuous integration using an in-house installation of Jenkins build bots and the
            hosted [Travis CI](https://travis-ci.org/named-data/ndn-cxx) continuous integration
            service compile and verify correctness of the library for each commit

-   **Wire format**
    -   Full support of [NDN-TLV packet format v0.1](http://named-data.net/doc/NDN-TLV/0.1/)
    -   Pure C++ implementation of wire encoding/decoding with simple access to wire format of all
        NDN packet abstractions via `wireEncode` and `wireDecode` methods

        > In many cases, NDN packet abstractions are just "indices" to the wire format

-   **Communication with the forwarder**
    -   Enable connecting to local forwarder via UNIX and TCP transports and to remote forwarders
        using TCP transport
    -   Full support for communication with [Named Data Networking Forwarding Daemon
        (NFD)](https://github.com/named-data/NFD)
        -   Full support for [NFD management
            protocols](http://redmine.named-data.net/projects/nfd/wiki/Management) to NFD status
            information, create and manage NFD Faces, receive NFD Face status change notifications,
            update StrategyChoice for namespaces, and manage routes in RIB
        -   Support for
            [LocalControlHeader](http://redmine.named-data.net/projects/nfd/wiki/LocalControlHeader)
            to implement special NDN applications that need low-level control of NDN packet
            forwarding
-   **Security support**
    -   A set of security primitives to allowing implementation of secure NDN applications in a
        simplified manner
        -   **KeyChain**: provides simple interfaces of packet signing, and key and certificate
            management
        -   **ValidatorConfig**: validator that implements trust model defined in a configuration
            file
        -   **CommandInterestGenerator** and **CommandInterestValidator**: convenient helpers to
            produce and validate command interests, while preventing potential replay attacks
    -   Several implementations of trusted platform modules to securely manage private keys
        -   **SecTpmOsx**: TPM based on OSX KeyChain (OSX-specific)
        -   **SecTpmFile**: TPM that uses file-based access control to protect keys (cross-platform)
    -   Extensive set of security command-line tools to manage security identities and certificates
        -   Generating private/public keys
        -   Issuing certificates
        -   Exporting/importing identities
        -   Managing default security settings
-   **Miscellaneous tools**
    -   Scheduler to support delayed time operations
    -   NDN regular expressions
    -   Simple config file to alter various aspects of the library
    -   **tlvdump**: a simple tool to visualize TLV-encoded blocks
  1. d409d59 build: Finalizing waf building system (removing legacy code) by Alexander Afanasyev · 11 years ago
  2. a1ae0a1 build: Adding waf as a build system by Alexander Afanasyev · 11 years ago
  3. b790d95 face+node: Improving async operations by Alexander Afanasyev · 11 years ago
  4. 61ec272 renaming: ndn-cpp to ndn-cpp-dev by Yingdi Yu · 11 years ago
  5. a1a0c24 build: Correcting dependencies in [examples/tests/tests_boost]/Makefile.am so the code can be compiled on Linux by Alexander Afanasyev · 11 years ago
  6. f4330ee tests+Makefile: updates corresponding to refactored KeyChain and related classes by Yingdi Yu · 11 years ago
  7. 3e7788b security+examples+tests: Updating examples and tests for the updated security API by Alexander Afanasyev · 11 years ago
  8. 94a356e c/util: Making util/crypto.h a public header by Alexander Afanasyev · 11 years ago
  9. 3f1d228 tests: Updating benchmark, so it works with TLV formats by Alexander Afanasyev · 11 years ago
  10. 84c2bd4 tests: Porting forwarding entry test and fixing app tests by Alexander Afanasyev · 11 years ago
  11. 4440290 security+tests: Temporarily disable broken code by Alexander Afanasyev · 11 years ago
  12. de2f6b5 face: Renaming (remove)registerPrefix to (unset)interestFilter by Alexander Afanasyev · 11 years ago
  13. 7eb64f1 build: Makefile.am corrections (separate Makefile.am for tests) by Alexander Afanasyev · 11 years ago
  14. 830553b tests: In test-get-async, temporarily connect directly to borges.metwi.ucla.edu until the test repo is connected to the NDN testbed. by Jeff Thompson · 11 years ago
  15. 25ee2f7 tests: In test-publish-async, explicitly use func_lib::ref. Refs #1090. by Jeff Thompson · 11 years ago
  16. 71b2f87 Rename key.hpp to key-locator.hpp. Refs #1089. by Jeff Thompson · 11 years ago
  17. b33b21e tests: In benchmarkEncodeDecodeDataCpp, fix comment. by Jeff Thompson · 11 years ago
  18. bebe32c tests: In benchmarkEncodeDecodeDataCpp, change the debug nIterations back to the real values. by Jeff Thompson · 11 years ago
  19. 06d1780 tests: Don't use namespace ptr_lib and qualify ptr_lib::shared_ptr explicitly in case the application also uses std::shared_ptr, etc. by Jeff Thompson · 11 years ago
  20. 987395e tests: in test-publish-async, needed to use namespace func_lib for ref. by Jeff Thompson · 11 years ago
  21. 4c66e71 tests: In benchmarkEncodeDecodeDataCpp, fix comment. by Jeff Thompson · 11 years ago
  22. c5eec8d tests: In benchmarkEncodeDecodeDataCpp, fix type in comment. by Jeff Thompson · 11 years ago
  23. 9e387fe tests: Fix DEFAULT_PUBLIC_KEY_DER format. by Jeff Thompson · 11 years ago
  24. 30d3e6c tests: In benchmarks, added crypto for C encoding and decoding. by Jeff Thompson · 11 years ago
  25. 3a2eb2f security: Added SelfVerifyPolicyManager. by Jeff Thompson · 11 years ago
  26. 70e8080 tests: In Benchmark, added sign/verify, simple/complex and encoding for C. by Jeff Thompson · 11 years ago
  27. ecaf326 tests: In test-encode-decode-benchmark, pass the encoding into the decode benchmark functions. by Jeff Thompson · 11 years ago
  28. 18dba8b tests: In benchmarks, change to show duration and Hz. by Jeff Thompson · 11 years ago
  29. 687ea65 tests: Add initial test-encode-decode-benchmark by Jeff Thompson · 11 years ago
  30. 72b58a4 tests: In test-get-async, fix message string. by Jeff Thompson · 11 years ago
  31. a4daaed tests: sign doesn't require a certificate anymore, so don't insert the DEFAULT_CERTIFICATE. by Jeff Thompson · 11 years ago
  32. fe11005 tests: need to include unistd.h to get usleep. by Jeff Thompson · 11 years ago
  33. 2aae234 tests: need to insert the test certificate so that sign will work. by Jeff Thompson · 11 years ago
  34. 25bfdca Data: add a copy constructor and assignment operator to clone the signature pointer. by Jeff Thompson · 11 years ago
  35. 25b4e61 make: Global change: Move all public headers to include folder. Change source to including public headers using #include <ndn-cpp/*>. Split some header files to minimize exposing C .h files. by Jeff Thompson · 11 years ago
  36. b752300 make: In ndn-cpp-config.h, to avoid polluting the global name space, generate NDN_CPP_HAVE_BOOST_FUNCTION etc. instead of HAVE_BOOST_FUNCTION, etc. by Jeff Thompson · 11 years ago
  37. b510e3e Face: in OnInterest callback for registerPrefix, added registeredPrefixId argument. by Jeff Thompson · 11 years ago
  38. 640aa62 tests: Change test-get-async to use A.hub.ndn.ucla.edu. by Jeff Thompson · 11 years ago
  39. a2953b8 Connect to port 9695 until the testbed hubs use NDNx. by Jeff Thompson · 11 years ago
  40. 1f8a31a ForwardingFlags: Added ForwardingFlags class and use it in registerPrefix and ForwardingEntry instead of int flags. by Jeff Thompson · 11 years ago
  41. 29ce310 security: In KeyChain constructor, added PolicyManager. Use in sign(). by Jeff Thompson · 11 years ago
  42. 3e5acfb tests: Simplify to create IdentityManager with make_shared<MemoryIdentityStorage>(). by Jeff Thompson · 11 years ago
  43. 8184227 security: MemoryIdentityStorage: Implemented addIdentity, setDefaultIdentity. by Jeff Thompson · 11 years ago
  44. 40f361a security: Make the KeyChain constructor take an IdentityManager. by Jeff Thompson · 11 years ago
  45. 97223af globa: Change unsigned int to size_t where it is the size of a byte array or an index/offset into it. by Jeff Thompson · 11 years ago
  46. 10ad12a global: Rename unsigned char to uint8, DynamicUCharArray to DynamicUInt8Array and DynamicUCharVector to DynamicUInt8Vector. by Jeff Thompson · 11 years ago
  47. 96eccf0 tests: Use MemoryIdentityStorage and MemoryPrivateKeyStorage. by Jeff Thompson · 11 years ago
  48. 5dd9853 tests: Only verify the freshly-signed data. by Jeff Thompson · 11 years ago
  49. 6d7369b Remove keyChain, signerName and byKeyName from registerPrefix. by Jeff Thompson · 11 years ago
  50. e529ace tests: update test-publish to use new registerPrefix which takes the keyChain. by Jeff Thompson · 11 years ago
  51. 51755b3 tests: Added using namespace ptr_lib, remove ptr_lib::. by Jeff Thompson · 11 years ago
  52. 707b77d tests: Always use ptr_lib::shared_ptr<Data> so we can verify. by Jeff Thompson · 11 years ago
  53. 1f0bb0c Rename KeyChain.sign to signData. by Jeff Thompson · 11 years ago
  54. db008cc tests: Change to use verifyData with callbacks. by Jeff Thompson · 11 years ago
  55. 7687dc0 All source files: Added UC Copyright. Added jefft0 email address. by Jeff Thompson · 11 years ago
  56. 20af073 Make Signature an abstract base class and added subclass Sha256WithRsaSignature. Change Data.signature to a pointer to a Signature. by Jeff Thompson · 11 years ago
  57. 412226d Change Interest.nonce to a Blob. by Jeff Thompson · 11 years ago
  58. c2b7b14 Change wire encoding to return a Blob. by Jeff Thompson · 11 years ago
  59. 4545d71 In Signature, make digestAlgorithm, witness and signature a Blob. by Jeff Thompson · 11 years ago
  60. 03616c9 In PublisherPublicKeyDigest, make the value a Blob. by Jeff Thompson · 11 years ago
  61. 4c9c045 Make KeyLocator.keyData_ a Blob. by Jeff Thompson · 11 years ago
  62. 18db5a5 In Data.getContent, return Blob. by Jeff Thompson · 11 years ago
  63. 85db6d7 Make MetaInfo.finalBlockID a Name::Component. by Jeff Thompson · 11 years ago
  64. f4585af Move publisherPublicKeyDigest and keyLocator from MetaInfo to Signature. by Jeff Thompson · 11 years ago
  65. 1ec4d0e Renamed SignedInfo to MetaInfo. by Jeff Thompson · 11 years ago
  66. fec716d Renamed SignedInfo to MetaInfo (except for encoding binary XML). by Jeff Thompson · 11 years ago
  67. 1656e6a Code style: Declare (Type& value) instead of (Type &value) by Jeff Thompson · 11 years ago
  68. 9cc4be4 Finish implementing registerPrefix. by Jeff Thompson · 11 years ago
  69. 990599b Added support for ForwardingEntry. by Jeff Thompson · 11 years ago
  70. f2d2186 Move key-chain to security subdirectory. by Jeff Thompson · 11 years ago
  71. 7a67cb6 Move key-chain to security subdirectory. by Jeff Thompson · 11 years ago
  72. cf624b9 Added test-publish-async.cpp by Jeff Thompson · 11 years ago
  73. 1cf72e9 If KeyLocator is a KeyName, allow the key name data to be omitted. by Jeff Thompson · 11 years ago
  74. 17882b4 Use relative paths for local includes. by Jeff Thompson · 11 years ago
  75. 04aa711 If using std, need using namespace func_lib::placeholders; by Jeff Thompson · 11 years ago
  76. 0960b65 Change to use a Counter class and use bind to pass callbacks. by Jeff Thompson · 11 years ago
  77. 7aec025 Major change: in expressInterest, remove the Closure class and use function objects for onData and onTimeout. by Jeff Thompson · 11 years ago
  78. 48917f0 Update processEvents to check for timeout. Make PitEntry take a const Interest pointer. by Jeff Thompson · 11 years ago
  79. 557b81e Added PitEntry and make expressInterest use the PIT. by Jeff Thompson · 11 years ago
  80. f9d4bfd Added dumpInterest. by Jeff Thompson · 11 years ago
  81. dc461ab Use the simplified constructor for Face. by Jeff Thompson · 11 years ago
  82. 0d2dc3e In dumpData, show the timestamp UTC time. by Jeff Thompson · 11 years ago
  83. c7e0744 Change receiveIsReady and processEvents to return immediately, with comment warnings that the caller needs to sleep to avoid using 100% CPU. by Jeff Thompson · 11 years ago
  84. debd8ee In dumpData, show the signedInfo.type. by Jeff Thompson · 11 years ago
  85. 7329a13 In KeyLocator, added support for KeyName. by Jeff Thompson · 11 years ago
  86. 63d0269 Renamed KeyLocator keyOrCertificate to keyData by Jeff Thompson · 11 years ago
  87. ed4f373 Show the hex encoding of the re-encoded interest. by Jeff Thompson · 11 years ago
  88. 1e90d8c Added KeyChain::selfVerifyData. by Jeff Thompson · 11 years ago
  89. 432c8be Added support for processEvents to Transport and Face. Removed tempReceive. by Jeff Thompson · 11 years ago
  90. ade5b1e In defaultSign, added hint for setting the current time. by Jeff Thompson · 11 years ago
  91. 3df8137 Added the default private key and finish implementing defaultSign. by Jeff Thompson · 11 years ago
  92. ecc1a82 Use buffer for freshContent by Jeff Thompson · 11 years ago
  93. b81192e Change to use openssl/evp.h by Jeff Thompson · 11 years ago
  94. 535751b In dumpData, show the key hex value by Jeff Thompson · 11 years ago
  95. ca62eb2 In dumpData, just show the number of key bytes by Jeff Thompson · 11 years ago
  96. 61c4ecf Added dumpData by Jeff Thompson · 11 years ago
  97. 2a4724b In expressInterest, just take a pointer to the Closure, not a shared_ptr by Jeff Thompson · 11 years ago
  98. 7098dd6 For now, in Transport, add virtual tempReceive by Jeff Thompson · 11 years ago
  99. 5341219 Major code style change to rename all files to lower case. by Jeff Thompson · 11 years ago
  100. 67e9e0a Rename encode and decode to wireEncode and wireDecode by Jeff Thompson · 11 years ago