Skip to content
Go to file
Cannot retrieve contributors at this time
511 lines (445 sloc) 27.2 KB
Interim changes since NDN-CPP v0.17 (2020-02-04)
* In Interest, changed the
MustBeFresh default value to false.
* Added Tlv0_3WireFormat.
* In Face, also check for a Unix socket at /var/tmp/nfd.sock .
Bug fixes
* In expressInterest, use the nonce in the Interest if provided.
* In ThreadsafeFace, use a copy of registrationOptions when dispatching.
NDN-CPP v0.17 (2019-10-04)
* Print a warning if the application
didn't call Interest::setDefaultCanBePrefix() or set the Interest's CanBePrefix.
* Renamed ForwardingFlags to RegistrationOptions.
* In RegistrationOptions, added setOrigin()
to use in the flags argument of registerPrefix.
* In Face, added putNack().
* Deprecated ForwardingFlags. Use RegistrationOptions.
Bug fixes
* In decoding Data, make MetaInfo
and Content optional.
* ApplicationParameters TLV type code.
* In examples, updated ControlParameters protobuf.
NDN-CPP v0.16 (2019-03-06)
* Added name-based access control v2,
EncryptorV2, DecryptorV2 and AccessControlV2, with integration tests.
* In TpmBackEndFile, implemented private key import/export.
* In KeyChain, implemented exportSafeBag with a password-encrypted private key.
* sync: Added FullPSync2017 and FullPSync2017WithUsers, implementing the Full PSync protocol.
* examples: Added test-full-psync and test-full-psync-with-users.
Bug fixes
* In decodeControlParameters, skip
unrecognized TLVs.
* In Interest, deprecated getParameters, setParameters and hasParameters. Use
getApplicationParameters, setApplicationParameters and hasApplicationParameters.
NDN-CPP v0.15 (2018-09-17)
* Accept Interests encoded with
packet format v0.3.
* In Name, API for typed name components.
* Added ComponentType.PARAMETERS_SHA256_DIGEST,
and support params-sha256=<hex-value> in the name URI.
Bug fixes
* For ./configure on macOS, update
to not overwrite optimization CFLAGS.
* In decodeLpPacket, fix the check for
ignoring an unrecognized field type.
* In MemoryContentCache, use a default
InterestLifetime and removed support for infinite lifetime.
NDN-CPP v0.14 (2018-04-17)
Bug fixes
* In make, use the system's protoc to
compile the Protobuf files.
* Fix problem with include boost/asio.hpp
with Boost 1.66 .
* In ndn_memcpy, etc. don't execute
if len == 0 to avoid undefined behavior when pointers are null.
* In verifyDataWithHmacWithSha256 and
verifyInterestWithHmacWithSha256, use CRYPTO_memcmp to avoid timing attacks.
* In KeyChain::importSafeBag, handle
exceptions from Tpm::importPrivateKey.
* MustBeFresh should be false if the
decoded Interest has no selectors.
* AsyncSocketTransport callbacks can
crash if deallocated.
* In Data, added getCongestionMark().
* In encrypt GroupManager, save private
keys in memory to avoid regenerate group key pairs.
* Rename KEY_TYPE_ECDSA and EcdsaKeyParams
to KEY_TYPE_EC and EcKeyParams. Deprecated KEY_TYPE_ECDSA and EcdsaKeyParams.
* Added security CommandInterestSigner.
* Added security ValidationPolicyCommandInterest.
* Updated the INSTALL instructions on macOS to use Homebrew (not Macports).
* In MemoryContentCache, added setMinimumCacheLifetime which can extend the
cache time of content to match an Interest where MustBeFresh is false.
* Deprecated EcdsaKeyParams. Use EcKeyParams.
NDN-CPP v0.13 (2017-12-08)
Bug fixes
* Ported the latest NDN regex code
from ndn-cxx which fixes crashes with boost::regex and complex expressions.
* Major update to add security v2.
Added CertificateV2, SafeBag and classes related to Pib and Tpm.
In KeyChain, added security v2 constructors and methods.
The default KeyChain constructor checks for and uses security v2 storage.
Updated ConfigPolicyManager to support CertficiateV2.
Updated SelfVerifyPolicyManager to support security v2 PibImpl.
Added the security v2 Validator and policies such as ValidationPolicyConfig.
Updated examples to use the security v2 KeyChain and Validator.
Added security v2 unit and integration tests.
* In MemoryContentCache, use
shared_from_this() for callbacks to avoid deallocation errors.
* Added Esp8266TcpTransportLite
uses the WiFiClient class of the esp8266 core for Arduino to communicate
over TCP. (Thanks to José Quevedo!)
* Added Interest get/setForwardingHint.
* In MemoryContentCache, added support for the OnContentRemoved callback.
* Lite: Added DynamicMallocUInt8ArrayLite.
* MemoryContentCache: Added getPendingInterestsWithPrefix().
* Examples: Added test-publish-async-nfd-lite and test-echo-consumer-lite .
* In Interest, deprecated link object and selected delegation methods.
Use get/setForwardingHint.
NDN-CPP v0.12 (2017-03-16)
* Support for Link objects in the
encrypt package Producer and Consumer.
* In ChronoSync2013, support optional
application info in the SyncState messages.
* ChronoSync2013: Added method getProducerPrefixes().
* Added tools/usersync for using NDN to synchronize communication among a group of users.
* In util, added ExponentialReExpress.
* Moved logging.hpp to the public util directory (for use be dependent NDN libraries.)
Bug Fixes
* Support for protoc 3.0.
NDN-CPP v0.11 (2016-11-02)
* Added the encrypt package for the Group-Based Encryption Protocol, ported from
* In MetaInfo, added get/setOtherTypeCode
to allow unrecognized content type codes in the packet.
* Added support for the Name component type ImplicitSha256Digest, and methods:
Name::Component::fromImplicitSha256Digest, isGeneric and isImplicitSha256Digest.
* In Data, added getFullName, and
in Interest added matchesData to use it.
* In KeyChain.verifyData and verifyInterest,
use onValidationFailed callbacks which include a reason string.
* In SegmentFetcher::fetch, allow a validatorKeyChain for asynchronous Data validation.
* NDN-CPP Lite in lite/security, added RsaPrivateKeyLite, EcPrivateKeyLite, etc.
to encode/decode and generate RSA and EC public/private keys.
* In Face, removed the deprecated registerPrefix where onInterest is type OnInterest. Use the
registerPrefix where onInterest is OnInterestCallback so you can call face.putData().
* In FilePrivateKeyStorage::generateKeyPair, update mapping.txt for the generated key.
* In ProtobufTlv, added utility method toName.
* In ThreadsafeFace, make shutdown dispatch to the ioService thread.
* INSTALL: Added macOS 10.12.
* Examples: In test-encode-decode-fib-entry, etc, use ProtobufTlv.toName.
* Unit tests: In test-name-methods, added ImplicitSha256Digest.
* Unit tests: In test-interest-methods, added MatchesData.
* Unit tests: In test-data-methods, added FullName.
* In KeyChain, deprecated verifyData that takes an OnVerified callback.
Use the verifyData which takes an OnDataValidationFailed callback with a
reason string.
* In KeyChain, deprecated verifyInterest that takes an OnVerifyInterestFailed callback.
Use the verifyInterest which takes an OnInterestValidationFailed callback with a
reason string.
Bug fixes
* Respect tpm= setting in client.conf.
* NdnRegexMatcher can exceed regex complexity.
* In AsyncSocketTransport, check for a closed socket before calling readHandler again. (Thanks, Peter!)
NDN-CPP v0.10 (2016-05-06)
* Added classes Link and DelegationSet to support link objects.
* In Interest, added methods to support link objects and SelectedDelegation:
hasLink, getLink, unsetLink, get/setLinkWireEncoding, get/setSelectedDelegationIndex.
* Added support for NDNLPv2:
In Face.expressInterest, added an OnNetworkNack callback.
In Interest and Data, the method getIncomingFaceId provides the incoming face ID (if configured).
* In Interest and Data, added method getIncomingFaceId() to support the
* In MemoryPrivateKeyStorage::generateKeyPair, support KEY_TYPE_ECDSA.
* In MemoryContentCache.registerPrefix, added optional onRegisterSuccess.
* Added HmacWithSha256Signature. In KeyChain, added experimental static methods
* Added Name.isPrefixOf, getSuccessor
and compare(int, size_t, Name, int, size_t).
* Added Name.Component.isSegment,
isSegmentOffset, isVersion, isTimestamp and isSequenceNumber.
* Added static Name.Component.fromSegment,
fromSegmentOffset, fromVersion, fromTimestamp and fromSequenceNumber.
* Added Interest::refreshNonce.
* Added ControlResponse.
* Added GenericSignature.
* Added MemoryContentCache.setInterestFilter.
* In IdentityManager, added getAllIdentities, getAllKeyNamesOfIdentity and getAllCertificateNamesOfKey.
* Renamed the following .c files to avoid linker conflicts with the same named .cpp file:
name.c -> name_c.c, interest.c -> interest_c.c,
tcp-transport.c -> tcp-transport_c.c, tlv-0_1_1-wire-format.c -> tlv-0_1_1-wire-format_c.c
* In API callbacks, catch and log exceptions.
* In KeyChain, removed getAnyCertificate and getAnyIdentityCertificate.
* Unit tests: Added test-link.
* Unit tests: Added test-control-response.
* Unit tests: In test-data-methods, added test GenericSignature.
* Unit tests: In test-face-methods, added test NetworkNack and TestFaceRegisterMethods.
* Examples: Added test-sign-verify-data-hmac.
* In KeyChain, deprecated getIdentityCertificate. Use getCertificate.
Bug fixes
* Update examples face-status.proto.
* Use the onInterest callback only on registerPrefix success.
NDN-CPP v0.9 (2016-01-07)
* In Face.registerPrefix, added the
optional onRegisterSuccess callback.
* INSTALL: Removed unsupported OS X 10.8.4.
* INSTALL: Added OS X 10.11 and Ubuntu 15.04 (64 bit).
* In unit-tests, added test-registration-callbacks.
Bug fixes
* In expressInterest, call onTimeout when there is no interest lifetime.
* In ThreadsafeFace, need explicit signatures for registerPrefix without OnRegisterSuccess. (Thanks Zhehao!)
NDN-CPP v0.8 (2015-09-24)
* In security, added KeyChain::createIdentityAndCertificate which returns the
certificate name, instead of the deprecated createIdentity which returns the
key name.
* Added ThreadsafeFace, AsyncTcpTransport and AsyncUnixTransport which use
Boost's asio io_service which handles all the async operations so that your
application doesn't need to call processEvents.
* In security ConfigPolicyManager, added load(input, inputName) to read
configuration rules from a string.
* In examples, added test-get-async-threadsafe which uses ThreadsafeFace and
doesn't call processEvents. To run, you must install Boost with asio.
* In Face.registerPrefix, removed deprecated support to register with NDNx.
* In Interest, removed deprecated NDNx get/setPublisherPublicKeyDigest,
get/setScope and get/setAnswerOriginKind.
* In Sha256WithRsaSignature, removed deprecated NDNx get/setPublisherPublicKeyDigest,
get/setWitness and get/setDigestAlgorithm.
* In ForwardingFlags, removed deprecated NDNx flags active, advertise, last,
local, tap and captureOK.
* In KeyLocator, removed deprecated NDNx types KEY and CERTIFICATE.
* In MetaInfo, removed deprecated NDNx get/setTimestamp.
* In MetaInfo get/setType, removed deprecated NDNx types DATA, ENCR and GONE.
* Removed deprecated NDNx ForwardingEntry.
* Removed deprecated NDNx BinaryXmlWireFormat and support for binary XML packets.
* In WireFormat, removed ENABLE_NDNX since all NDNx support is now removed.
* Deprecated KeyChain::createIdentity. Use createIdentityAndCertificate which
returns the certificate name instead of the key name.
Bug fixes
* Build error in memory-content-cache.cpp
on Ubuntu with log4cxx. (Thanks Junxiao)
* Self-signed cert name needs a version component.
* Lower-case "ksk-" in generated key name.
* Support for Protobuf 2.6
* Regex use of deleted function.
NDN-CPP v0.7 (2015-05-13)
* By default, throw an exception when
using the deprecated NDNx and binary XML wire format. To enable support while
you upgrade your code to use NFD, in your main application set
WireFormat::ENABLE_NDNX = true
* Moved example programs from "tests" to "examples".
* In Face, added getMaxNdnPacketSize().
expressInterest and putData throw an exception if the encoded packet size exceeds it.
* In Face, added setInterestFilter. In
registerPrefix, make the onInterest callback optional.
* Added callback type OnInterestCallback
to use in registerPrefix and setInterestFilter instead of OnInterest. The new
callback is passed the Face so that you can supply the Data with face.putData().
* Face: Changed the OnInterest callback to pass interestFilterId instead of registeredPrefixId.
(You should use OnInterestCallback instead of the deprecated OnInterest.)
* MemoryContentCache: In registerPrefix, changed the onDataNotFound to OnInterestCallback.
If your application uses onDataNotFound, you must update your callback function.
* In KeyChain::createIdentity, added an optional KeyParams argument.
* In Interest setter methods, return this so that you can chain calls to update values.
* In configure, only link to the Boost regex library if HAVE_STD_REGEX==0.
* Added class util/SegmentFetcher, ported from ndn-cxx. Use it in examples test-list-rib.
* Added the public NDN-CPP Lite API in include/ndn-cpp/lite. See
* In Face.registerPrefix,
if connected to a remote NFD then use localhop to do remote registration. (For
remote registration, the remote NFD must be configured for localhop_security.)
Added the optional method Face.isLocal() for the application to check if the
connection is local.
* In MemoryContentCache, added support for storePendingInterest. add(data) will
check if the added Data packet satisfies any pending interest. You can use
getStorePendingInterest() for onDataNotFound in registerPrefix().
* In ControlParameters, added support for Uri and Strategy.
* In TlvWireFormat, implemented decodeControlParameters.
* examples: Added test-list-channels, test-list-faces, test-list-rib and
test-register-route to query NFD.
* examples: In repo-ng added basic-insertion and watched-insertion to show
interaction with the repo-ng repository.
* examples: Added arduino/analog-reading-consumer.cpp and the related
Arduino sketch examples/arduino/analog-reading.
* examples: Make test-encode-decode-benchmarks use NDN-CPP Lite to test C.
* examples: Removed test-encode-decode-forwarding-entry and
test-publish-async-ndnx because NDNx support is deprecated.
* Unit tests: Added test-der-encode-decode tests for CertificateExtension.
* Unit tests: In test-interest-methods, added ExcludeMatches.
* Deprecated support for NDNx and binary XML. See WireFormat::ENABLE_NDNX above.
* In Face, deprecated registerPrefix where onInterest is type OnInterest. Use the
registerPrefix where onInterest is OnInterestCallback so you can call face.putData().
Bug fixes
* ControlParameters with empty name not properly encoded.
NDN-CPP v0.6 (2014-12-23)
* In MetaInfo, added get/setFinalBlockId (replaces the deprecated get/setFinalBlockID).
* In Name, added wireEncode and wireDecode.
* In MemoryContentCache, added unregisterAll.
* Added Sha256WithEcdsaSignature. Support encoding/decoding it in interests and data packets.
* Added DigestSha256Signature. Support encoding/decoding it in interests and data packets.
* In KeyChain, added generateEcdsaKeyPair and generateEcdsaKeyPairAsDefault.
* In KeyChain, added signWithSha256.
* Unit tests: In test-name-methods, fixed bug for "make check" on Ubuntu.
* Unit tests: Added test-name-conventions.
* Unit tests: Added test-verification-rules to test NdnRegexMatcher.
* Unit tests: In test-data-methods, added VerifyEcdsa and VerifyDigestSha256.
* Unit tests: In test-interest-methods, added VerifyDigestSha256.
* Unit tests: In test-identity-methods, added EcdsaIdentity.
* In MetaInfo, deprecated get/setFinalBlockID. Use get/setFinalBlockId.
Bug fixes
* Fix Name::append(string) calls the URI Name(string) constructor.
* Support older versions of Protobuf.
* ChronoSync2013 shared_ptr for callbacks.
* In KeyChain::createIdentity, fix certificate's KeyLocator name to be certificateName.getPrefix(-1).
NDN-CPP v0.5 (2014-08-27)
* Changed ndn::toHex and Blob::toHex to output lower-case.
* In IdentityManager, added a default constructor to use the system storage.
* In the KeyChain constructor, if identityManager is omitted, use the system default IdentityManager.
* In the KeyChain constructor, if policyManager is omitted, use NoVerifyPolicyManager.
* In KeyChain, added verifyInterest.
* In BasicIdentityStorage, changed the SQL file to ~/.ndn/ndnsec-public-info.db .
* In the default Name::Component constructor, create a zero-length value, not null, to avoid null pointer problems.
* Renamed test-publish-async to test-publish-async-ndnx.
* Added test-publish-async-nfd.
* Renamed internal class Tlv1_0a2WireFormat to Tlv0_1WireFormat.
* COPYING: Changed the license to LGPLv3.
* Added encoding/ProtobufTlv for converting a Protobuf message object to TLV encoding.
* Added sync/ChronoSync2013 and the chat demo tests/test-chrono-chat. See:
* In test-encode-decode-data and test-encode-decode-benchmark, change the RSA test key to 2048 bits.
* Added UnixTransport. If using the default Face(), try to connect using a Unix socket.
* Added ./configure options --with-std-shared-ptr and --with-boost-shared-ptr. See ./configure --help .
* Added ./configure options --with-std-function and --with-boost-function. See ./configure --help .
* In Name.appendSegment and appendVersion, encode the number as nonNegativeInteger which is always 1, 2, 4 or 8 bytes.
This means that appendSegment(0) now encodes as %00%00 instead of just %00.
* In Name, added appendSegmentOffset, appendTimestamp and appendSequenceNumber.
* In Name.Component, added toSegmentOffset, toTimestamp and toSequenceNumber.
* If using std, put _1, _2, etc. in the func_lib namespace.
* Remove trailing whitespace
* In MemoryPrivateKeyStorage, deprecated setKeyPairForKeyName without an explicit keyType. Use
setKeyPairForKeyName passing the explicit key type such as KEY_TYPE_RSA.
Bug fixes
* Call all callbacks where the interest matches the incoming data packet's name.
* Interest.getMustBeFresh() is default true.
* Fix FinalBlockID TLV encoding.
* Fix compiling if log4cxx is present.
* Fix compiling with ./configure option --enable-shared=no.
* Should encode non-negative integers 253 through 255 as one byte.
* For TLV packets over UDP, ignore packets starting with 0x80.
* Fix bug for registerPrefix with NDNx.
* Fix bug for encoding/decoding the TLV Interest PublisherPublicKeyLocator.
NDN-CPP v0.4 (2014-02-27)
This release uses NDN-TLV for the default wire format.
* Changed the default wire format to TlvWireFormat.
* In ./configure, added option --enable-binary-xml=yes to revert to Binary XML.
* Support TLV FinalBlockId.
* Name: Deprecated appendFinalSegment. Use MetaInfo.setFinalBlockID.
* Name::Component: Deprecated toFinalSegment. Use MetaInfo.getFinalBlockID.
* Sha256WithRsaSignature: get/setDigestAlgorithm as deprecated. (This is
implicit in the class Sha256WithRsaSignature.)
* MetaInfo: Deprecated get/setTimestampMilliseconds: Use the
application-specific content to store a timestamp.
Bug fixes
* Name: Fix bug in append to explicitly make a Component to call append(Component).
* Use new TLV type codes to not
conflict with binary XML. Note: Using this new code must be done at the same
time as using the updated ndnd-tlv which uses the new type codes.
NDN-CPP v0.3 (2014-01-31)
* Added option for "./configure --enable-tlv=yes" to build with NDN-TLV as the default wire format.
* In Name, added comparison operators.
* In Name::Component, added comparison operators.
* In Name::getPrefix, support a negative argument, e.g. getPrefix(-1).
* In Name::get, allow a negative index.
* Renamed key.hpp to key-locator.hpp .
* MetaInfo: Added setFinalBlockID for Name::Component, remove unused setFinalBlockID which take uint8_t*, etc.
* Moved class ExcludeEntry to inner class Exclude::Entry.
* In BinaryXmlDecoder, cache the result of peekDTag for a speedup when decoding optional elements.
* Moved validation-request.hpp to public API security/policy, and moved OnVerified and OnVerifyFailed in there.
* In Interest, added get/setMustBeFresh.
* In Interest, added keyLocator. If the interest needs a publisher public key digest, the keyLocator type is
* In Interest, if any field is changed, clear the nonce.
* In MetaInfo, added get/setFreshnessPeriod.
* Changed ndn_ContentType_LINK and ndn_ContentType_KEY to the correct value for NDN-TLV.
* In Name, added experimental appendFinalSegment, and in Name::Component added toFinalSegment.
* Moved definitions for classes Exclude, Signature and MetaInfo to their own source code files.
* In, don't run ./configure since the user may want to run ./configure with options.
* Interest: Deprecated getAnswerOriginKind. Use getMustBeFresh.
* Interest: Deprecated setAnswerOriginKind. Use setMustBeFresh.
* Interest: Deprecated getPublicKeyLocator. If the interest has a public key locator, its keyLocator has
type ndn_KeyLocatorType_KEY_LOCATOR_DIGEST and the key data has the digest.
* Interest: Deprecated constructors which take nonce and PublisherPublicKeyDigest. If needed, use the constructor
which takes a KeyLocator instead of the deprecated PublisherPublicKeyDigest.
* Interest: Deprecated setNonce. You should let the wire encoder generate a random nonce internally.
* Sha256WithRsaSignature: Deprecated getPublicKeyLocator. If the signature has a public key locator, its keyLocator has
type ndn_KeyLocatorType_KEY_LOCATOR_DIGEST and the key data has the digest.
* KeyLocator: Deprecated setKeyNameType. If you need a publisher public key digest, set the keyLocatorType to
ndn_KeyLocatorType_KEY_LOCATOR_DIGEST and set the key data to the digest.
* KeyLocator: Deprecated getKeyNameType. KEY_LOCATOR_DIGEST is supported as a keyLocatorType.
* MetaInfo: Deprecated getFreshnessSeconds. Use Milliseconds getFreshnessPeriod().
* MetaInfo: Deprecated setFreshnessSeconds. Use setFreshnessPeriod(Milliseconds).
* Sha256WithRsaSignature: Deprecated get/setWitness. Witness is deprecated.
* Move instructions for running ./ from to the Development section of INSTALL.
* In Doxyfile, fix EXCLUDE for ndnboost to new location include/ndnboost .
Bug fixes
* Fix DTAG NDNProtocolDataUnit to encode as "NDN\202\000".
* Add ax_lib_sqlite3.m4, etc. to m4 directory so that works out of the box.
* Move the BasicIdentityStorage sqlite file to ~/.ndnx/ndnsec-identity.db .
NOTE: If you have an old file at ~/.ndn-identity/identity.db, please move it to ~/.ndnx/ndnsec-identity.db .
* Certificate name in KeyLocator should not include the version number.
* Fix bug in getForwardingEntryFlags: Need to check all flags, not the first flag using "else if".
NDN-CPP v0.2 (2013-11-08)
This release fully supports the Common Client Libraries API.
Changes to future versions will be detailed in this CHANGELOG.
NDN-CPP v0.1 (2013-08-09)
This is the initial release, with support for expressInterest for one interest at a time. A new release
coming soon will have a Pending Interest Table and support processing multiple simultaneous interest and
data packets.
You can’t perform that action at this time.