ndn-cxx version 0.5.1¶
Release date: January 25, 2017
This is the last release of the library that supports NDN Certificate format version 1 and the existing implementations of validators. The upcoming 0.6.0 release will include multiple breaking changes of the security framework.
Changes since version 0.5.0:
- Add version 2 of the security framework (introduced in security::v2 namespace)
- NDN Certificate Format Version 2.0 (Issue #3103)
- New Public Information Base (PIB) and Trusted Program Module (TPM) framework to manage public/private keys and NDN Certificate version 2.0 (Issue #2948, Issue #3202)
- New KeyChain implementation (Issue #2926)
- New Validator implementation (Issue #3289, Issue #1872)
- New security-supporting utilities: trust anchor container and certificate cache
- Creation of Command Interests delegated to CommandInterestSigner class, while the new KeyChain only signs Interests (Issue #3912)
- Enable validator to fetch certificates directly from the signed/command interest sender (Issue #3921)
- Add UP and DOWN kinds to FaceEventNotification (issue:3794)
- Add support for NIC-associated permanent faces in FaceUri (Issue #3522)
- Add support for CongestionMark and Ack NDNLPv2 fields (Issue #3797, Issue #3931)
- Add StrategyChoice equality operators and formatted output (Issue #3903)
Improvements and bug fixes¶
- Ensure that NACK callback is called for matching Interests, regardless of their nonce (Issue #3908)
- Optimize name::Component::compare() implementation (Issue #3807)
- Fix memory leak in ndn-cxx:Regex (Issue #3673)
- Correct NDNLPv2 rules for whether an unknown field can be ignored (Issue #3884)
- Ensure that port numbers in FaceUri are 16 bits wide
- Correct ValidityPeriod::isValid check (Issue #2868)
- Fix encoding of type-specific TLV (Issue #3914)
- Rename previously incorrectly named EcdsaKeyParams to EcKeyParams (Issue #3135)
- Various documentation improvements, including ndn-cxx code style updates (Issue #3795, Issue #3857)
- Old security framework. All old security framework classes are moved to
ndn::security::v1 namespace in this release and will be removed in the next release.
- v1::KeyChain, use v2::KeyChain instead
- v1::Validator interface and all implementations of this interface (ValidatorRegex, ValidatorConfig, ValidatorNull). Use v2::Validator and the corresponding implementations of ValidationPolicy interfaces (will be introduced before 0.6.0 release).
- 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)
- ndn::crypto::sha256 in favor of ndn::crypto::computeSha256Digest
- security/cryptopp.hpp header. Use security/v1/cryptopp.hpp when needed, avoid direct include as CryptoPP dependency will be removed from future versions of the library.
- security/identity-certificate.hpp header. Use security/v1/identity-certificate.hpp instead.
- 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::CertificateSubjectDescription instead. The next release will feature a new version of NDN Certificate format.