ndn-cxx version 0.2.0

Release date: August 25, 2014

Changes since version 0.1.0:

New features

  • Base
    • The license under which the library is released is changed to the GNU Lesser General Public License version 3.0
    • New ways to use incoming Interest dispatching:
      • New InterestFilter abstraction that supports filtering based on name prefixes and regular expressions.
      • Separate Face::registerPrefix() and Face::setInterestFilter() methods allow distinct operations of registering with the local NDN forwarder and setting up application-specific OnInterest call dispatch using InterestFilters.
    • Add support for the NDN naming conventions (revision 1) (issue #1761)
  • Security
    • Add type dir trust-anchor in ValidatorConfig to add all certificates under the specified directory as trust anchors. The new option also allow periodic reloading trust anchors, allowing dynamic trust models.
    • Added support for multiple signature types to PublicKey, SecPublicInfo abstractions
    • New SignatureSha256WithEcdsa signature type
    • Updates in Signature data structure to reflect changes in NDN-TLV spec 0.1.1
  • Wire encoding
    • Data::getFullName() method to get the Data packet name including the implicit digest
    • Name::getSuccessor() method to get name successor (issue #1677)
    • New in-wire refreshing of Interest’s nonce (issue #1758)
  • Management
    • Support for ChannelStatus and StrategyChoice datasets
    • Defining new common Route Origins for NFD RIB management protocol (issue #1719)
    • New RibEntry and Route data structures for RIB management protocol (issue #1764)
    • Add support for RIB flags in setInterestFilter() and registerPrefix() (issue #1842)
  • Miscellaneous tools
  • Build
    • Enabled support of precompiled headers for clang and gcc compilers to speed up compilation

Updates and bug fixes

  • Base

  • Wire encoding

    • The Nonce field is now encoded as a 4-byte value, as defined by NDN-TLV spec

    • Optimized Data packet signing

      KeyChain::sign() method now pre-allocates EncodingBuffer, requests unsigned portion of Data using Data::wireEncode(EncodingBuffer, true), and then appends the resulting signature and prepends Data packet header. This way there is no extra memory allocation after Data packet is signed.

    • Optimized implicit digest calculation in Interest::matchesData() method (issue #1769)

  • Management

    • Add link-layer byte counts in FaceStatus data structure (issue #1765)
  • Security

    • Allow user to explicitly specify the cert name prefix before ‘KEY’ component in ndnsec-certgen

    • SignatureSha256 has been renamed to DigestSha256 to conform to NDN-TLV specification

    • Add checking of Timestamp and Nonce fields in signed Interest within ValidatorConfig

    • Allow validator customization using hooks.

      Sub-classes of Validator class can use the following hooks to fine-tune the validation process:

      • preCertificateValidation to process received certificate before validation
      • onTimeout to process interest timeout
      • afterCheckPolicy to process validation requests
    • Fix memory issues in SecPublicInfoSqlite3

  • Miscellaneous tools

    • Redefine method for random number generation: random::generateWord* and random::generateSecureWord* to generate cryptographically non-secure (fast) and secure (slow) random numbers.
  • Other minor fixes and corrections

Deprecated

  • SignatureSha256 class, use DigestSha256 instead.

  • All Face constructors that accept shared_ptr<io_service>.

    Use versions that accept reference to io_service object.

  • Face::ioService method, use Face::getIoService() instead.

  • Interest constructor that accepts name, individual selectors, and individual guiders as constructor parameters.

    Use Interest().setX(...).setY(...) or use the overload taking Selectors

  • name::Component::toEscapedString method, use name::Component::toUri() instead.

  • SecPublicInfo::addPublicKey method, use SecPublicInfo::addKey instead.

  • Tlv::ConentType constant (typo), use Tlv::ContentType instead.

  • CommandInterestGenerator and CommandInterestValidator utility classes. ValidatorConfig should be used instead.

Removed

  • Support for ndnd-tlv (only NFD management protocol is supported now)

  • SecPublicInfoMemory and SecTpmMemory classes that were no longer used

  • Removing concept of periodic event from Scheduler.

    In applications, periodic events should be just re-scheduled within the callback for single-shot events.