ndn-cxx version 0.2.0

Release date: August 25, 2014

Changes since version 0.1.0:

New features:

Updates and bug fixes:

  • Base

  • Wire encoding

    • Nonce field is now encoded as 4-byte uint8_t 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 with 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 of 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.