ndn-cxx version 0.5.0¶
Release date: October 4, 2016
Note
As of version 0.5.0, ndn-cxx requires a modern compiler (gcc >= 4.8.2, clang >= 3.4) and a relatively new version of Boost libraries (>= 1.54). This means that the code no longer compiles with the packaged version of gcc and boost libraries on Ubuntu 12.04. ndn-cxx can still be compiled on such systems, but requires separate installation of a newer version of the compiler (e.g., clang-3.4) and dependencies.
Note
The library now has a dependency on OpenSSL >= 1.0.1
Changes since version 0.4.1:
New features:¶
- New transformation API (issue #3009) - base64 and hex encoding/decoding
- digest calculation (SHA256)
- HMAC calculation
- block cipher operations (AES in CBC mode)
- public key signing/verification
 
- Introduce environment variables to set/override transport, pib, and tpm configurations (issue #2925, issue #2514) - NDN_CLIENT_TRANSPORT: equivalent of transport in client.conf
- NDN_CLIENT_PIB: equivalent of pib in client.conf
- NDN_CLIENT_TPM: equivalent of tpm in client.conf
 - Whenever an environment variable is set, it takes precedence over any values specified in the configuration file. 
- Introduce logging facility based on Boost.Log (issue #3562) - The logging can be enabled on selected moduled at the selected log level through - NDN_LOGenvironment variable. For example,- export NDN_LOG=ndn.mgmt.Dispatcher=TRACE 
- Introduce - Name::deepCopyto allow memory optimizations when working with- Nameobjects (issue #3618)
- New - ndn::security::CommandInterestValidatorclass (issue #2376)
- Add - StatusDatasetclient functionality into- ndn::nfd::Controller(issue #3329)
- New - FaceUpdateCommandstructure for NFD management protocols (issue #3232)
- breaking change Add Flags and Mask fields to faces/create and faces/update, add Flags field to FaceStatus (issue #3731, issue #3732) 
- New - SafeBagstructure for private key export/import (issue #3048)
- ndn::io::loadBlockand- saveBlock(issue #3741)
- Backport of C++17 - std::clampand- std::optional(issue #3636, issue #3753)
Improvements and bug fixes¶
- breaking change Expose ControlResponseas part ofController::CommandFailCallback(issue #3739)
- breaking change Change security constants to corresponding strongly typed enumerations (issue #3083)
- Fix SegmentFetcherrestarting from segment 0 upon Nack (issue #3554)
- Fix support for ImplicitSha256Digestname component inExcludeselector (issue #3665)
- Enable KeyChaincustomization inDummyClientFace(issue #3435)
- Make ValidatorConfigto evaluate all checkers inside a rule (issue #3645)
- Add validation of StatusDatasetandControlCommandresponses inndn::nfd::Controller(issue #3653)
- Enable handling of NACKs in Validator and NotificationSubscriber classes (issue #3332, issue #3662)
- Several fixes in Schedulerclass (issue #3722, issue #3691)
- Add option to override processEventsmethod inDummyClientFaceclass (issue #3769)
- Several other improvements, including fixes of potential segmentation faults and memory leaks (issue #3136, issue #3248, issue #3723, issue #3727)
Deprecated¶
- Constant io::BASE_64, useio::BASE64instead (issue #3741)
- Headers management/nfd-*, usemgmt/nfd/*instead (issue #3760)
- ndn::crypto::sha256in favor of- ndn::crypto::computeSha256Digest
- security/cryptopp.hppheader. Use- security/v1/cryptopp.hppwhen needed, avoid direct include as CryptoPP dependency may be removed from future versions of the library.
- security/identity-certificate.hppheader. Use- security/v1/identity-certificate.hppinstead.
- ndn::PublicKey,- ndn::Certificate,- ndn::IdentityCertificate,- ndn::CertificateExtension,- ndn::CertificateSubjectDescription. When necessary, use- security::v1::PublicKey,- security::v1::Certificate,- security::v1::IdentityCertificate,- security::v1::CertificateExtension,- security::v1::CertificateSubjectDescriptioninstead. The next release will feature a new version of NDN Certificate format.
Removed¶
- Previously deprecated LocalControlHeader (issue #3755)
- Previously deprecated makeDummyClientFacefunction, useDummyClientFaceconstructors directly (issue #3383)
- Previously deprecated Name::set, use constructors directly (issue #2506)
- Previously deprecated Block::fromBufferand block helpers (issue #2950, issue #2636)- Block::fromBufferoverloads with output parameter
- ndn::encoding::prependBlock
- ndn::encoding::prependByteArrayBlock
- ndn::encoding::nonNegativeIntegerBlock
- ndn::encoding::prependBooleanBlock
- ndn::encoding::booleanBlock
- ndn::encoding::dataBlock
- ndn::encoding::nestedBlock
 
- Previously deprecated Command Interest classes (issue #2008)- CommandInterestGenerator, replaced by- KeyChain::sign
- ndn::util::CommandInterestValidator, replaced by- ndn::security::CommandInterestValidator
 
- ndncatchunks3 and ndnputchunks3 apps. Use ndncatchunks and ndnputchunks from NDN Essential Tools (ndn-tools) (issue #3547)
- ndn::ndn_digestSha256function. Use- ndn::crypto::computeSha256Digestinstead.
- potentially breaking change Headers security/certificate-extension.hpp,security/certificate-subject-description.hpp, andsecurity/certificate.hpp. When necessary, use the corresponding headers insecurity/v1/*orsecurity/v1/identity-certificate.hpp.
