- The license under which the library is released is changed to
Lesser GNU 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.
- Separated 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
- Add type dir
trust-anchor in ValidatorConfig <validator-conf-trust-anchors>
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,
- New SignatureSha256WithEcdsa signature type
- Updates in Signature data structure to reflect changes in
NDN-TLV spec 0.1.1
- Wire encoding
- Data::getFullName() <getFullName()> method to get Data packet
name with implicit digest
- New Name::getSuccessor() method to get name successor
- New in-wire refreshing of Interest's nonce (Issue #1758)
- Support for ChannelStatus, 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)
- enabled support of precompiled headers for clang and gcc
compilers to speed up compilation
Updates and bug fixes:
- Serialization of socket write operations (Issue #1707)
- Enforcing limit on Interest and Data packet size in
Face::expressInterest and Face::put methods (Issue #1774)
- Cleaning up transport state on communication failure, so Face
can try to reconnect in the future.
- 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)
- Add link-layer byte counts in FaceStatus data structure (Issue
- Allow user to explicitly specify the cert name prefix before
'KEY' component in ndnsec-certgen
- SignatureSha256 has been renamed to DigestSha256 to conform with
- Add checking of Timestamp and Nonce fields in signed Interest
- Allow validator customization using hooks:
Sub-classes of Validator class can use the following hooks to
fine-tune the validation process:
- Validator::preCertificateValidation <preCertificateValidation>
to process received certificate before validation.
- Validator::onTimeout <onTimeout> to process interest
- Validator::afterCheckPolicy <afterCheckPolicy> to process
- Fix memory issues in SecPublicInfoSqlite
- Miscellaneous tools
- Introduce Scheduler::cancelAllEvents to cancel all previously
scheduled events (Issue #1757)
- Redefine method for random number generation:
random::generateWord* and random::generateSecureWord* to
generate cryptographically non-secure (fast) and secure (slow)
- Other minor fixes and corrections
- 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
- name::Component::toEscapedString method, use name::Component::toUri
- SecPublicInfo::addPublicKey method, use SecPublicInfo::addKey
- Tlv::ConentType constant (typo), use Tlv::ContentType instead.
- CommandInterestGenerator and CommandInterestValidator utility
classes. ValidatorConfig should be used instead.
- support of ndnd-tlv (only NFD management protocol is supported now)
- SecPublicInfoMemory and SecTpmMemory classes that were no longer
- Removing concept of periodic event from Scheduler.
In applications, periodic events should be just re-scheduled within
the callback for single-shot events.