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 fields 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 configure logging, set the environment variable NDN_LOG. Examples:

    export NDN_LOG="*=ALL"
    export NDN_LOG="ndn.*=ALL"
    export NDN_LOG="ndn.security=DEBUG:ndn.TcpTransport=ALL"
    
  • Ensure that Face sends a 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. Note the following 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 and related classes to src/ims

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

Removed

  • Old security framework.

    • v1::KeyChain, use 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. v2::KeyChain internally uses the newly introduced Pib and Tpm interfaces with their corresponding implementations.

    • v1::Certificate, v1::IdentityCertificate, v1::CertificateExtension, v1::CertificateSubjectDescription, use v2::Certificate and 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)