ndn-cxx version 0.6.0

Release date: October 16, 2017

Changes since version 0.5.1:

New features:

Improvements and bug fixes

  • Removed dependency on CryptoPP library. All cryptographic operations are now realized using OpenSSL library routines and/or with the help of security::transform framework (issue #3006, issue #3946, issue #3924, issue #3886).

  • Improved APIs for NFD management data structures, including equality comparators, formatted output, etc. (issue #3932, issue #3903, issue #3864)

  • FaceUri now accepts link-local IPv6 addresses (issue #1428)

  • Rename variables in FaceStatus and ForwarderStatus (‘datas’ => ‘data’) (issue #3955)

  • Improve logging framework and its uses

    • Add API to enumerate Logger modules (issue #4013)
    • Advanced filtering of the logging modules (issue #3918)
    • Add logging capabilities to Face, UnixTransport, TcpTransport, and the new security framework (issue #3563)

    To enable logging, set environment variable NDN_LOG to enable specific, subset, or all logging module at appropriate levels. Examples:

    export NDN_LOG=*=ALL
    export NDN_LOG=ndn.*=ALL
    export NDN_LOG=ndn.security=DEBUG:ndn.TcpTransport=ALL
  • Ensure that Face sends Nack only after every InterestCallback has responded (issue #4228)

  • Fix potential overflow in time::toIsoString (issue #3915)

  • Fix potentially misaligned memory accesses (issue #4172, issue #4097, issue #4175, issue #4190, issue #4191)

  • Fix potential memory access error in Face/PendingInterest (issue #4228)

  • Improvements and streamlining of the security::transform framework

  • Source/header reorganization (issue #3940)

    • Move network-related files to src/net


      Namespace changes

      • ndn::util::FaceUri is now ndn::FaceUri
      • ndn::util::ethernet is now ndn::ethernet
      • ndn::util::NetworkMonitor and related classes are now in ndn::net
    • Move signal-related files into src/util/signal/ directory, except for the main include signal.hpp

    • Move InMemoryStorage to src/ims

    • Rename digest.hpp to sha256.hpp to match the Sha256 class declared within


  • Old security framework.
    • v1::KeyChain, use :ndn-cxx:`v2::KeyChain` instead
    • v1::Validator interface and ValidatorRegex implementation of this interface. ValidatorConfig, ValidatorNull implementation refactored to be based on the new validation framework.
    • v1::SecPublicInfo and its implementation (SecPublicInfoSqlite), SecTpm and its implementations (SecTpmFile, SecTpmOsx). These classes are internal implementation and not intended to be used without v1::KeyChain. :ndn-cxx:`v2::KeyChain` internally uses the newly introduced :ndn-cxx:`Pib` and :ndn-cxx:`Tpm` interfaces with their corresponding implementations.
    • v1::Certificate, v1::IdentityCertificate, v1::CertificateExtension, v1::CertificateSubjectDescription, use :ndn-cxx:`v2::Certificate` and :ndn-cxx:`AdditionalDescription`
    • v1::SecuredBag, use v2::SafeBag instead
  • Constant io::BASE_64, use io::BASE64 instead (issue #3741)
  • Headers management/nfd-*, use mgmt/nfd/* instead (issue #3760)
  • security/cryptopp.hpp header
  • security/identity-certificate.hpp header
  • ndn::PublicKey, ndn::Certificate, ndn::IdentityCertificate, ndn::CertificateExtension, ndn::CertificateSubjectDescription.
  • Link and SelectedDelegation fields in Interest, replaced by ForwardingHint following the latest version of NDN specification (issue #4055)
  • LocalControlHeader constants (issue #3755)
  • NInDatas and NOutDatas (issue #3955)
  • Overload of Block::Block that parses a Block from a void* buffer
  • Duplicate buf() and get() methods from Buffer class in favor of data()
  • util/crypto.hpp, crypto::sha256(), and crypto::computeSha256Digest() in favor of Sha256::computeDigest()
  • Previously deprecated functions (issue #4055)