Fetching contributors…
Cannot retrieve contributors at this time
415 lines (357 sloc) 20.1 KB
Interim changes since PyNDN v2.9beta1 (2018-11-01)
* Added name-based access control v2,
EncryptorV2, DecryptorV2 and AccessControlV2, with integration tests.
* In Face, added method setInterestLoopbackEnabled.
PyNDN v2.9beta1 (2018-09-17)
* Accept Interests encoded with
packet format v0.3.
* In Name, API for typed name components.
* UdpTransport: specify local port.
* Added ComponentType.PARAMETERS_SHA256_DIGEST,
and support params-sha256=<hex-value> in the name URI.
Bug fixes
* Support years > 2038 on 32-bit processors.
* In ChronoSync2013 timeout, get the digest component based on the broadcast
prefix size instead of a hard-coded value.
* In decodeLpPacket, fix the check for
ignoring an unrecognized field type.
* In MemoryContentCache, use a default
InterestLifetime and removed support for infinite lifetime.
PyNDN v2.8beta1 (2018-04-17)
Bug fixes
* MustBeFresh should be false if the
decoded Interest has no selectors.
* Recompile Protobuf files with
protoc from protobuf 3, so that they work with Python 3.
* Rename KeyType.ECDSA and EcdsaKeyParams
to KeyType.EC and EcKeyParams. Deprecated KeyType.ECDSA and EcdsaKeyParams.
* In Data, added getCongestionMark().
* Update deprecated signer/verifier to
sign/verify. You may need to do `sudo pip install --upgrade cryptography` .
* Added security CommandInterestSigner.
* Added security ValidationPolicyCommandInterest.
* In MemoryContentCache, added setMinimumCacheLifetime which can extend the
cache lifetime of content to match an Interest where MustBeFresh is false.
* Deprecated KeyType.ECDSA. Use KeyType.EC.
* Deprecated EcdsaKeyParams. Use EcKeyParams.
PyNDN v2.7beta1 (2018-02-26)
Added the security v2 Validator and policies such as ValidationPolicyConfig.
Updated examples to use the security v2 Validator.
Added security v2 Validator integration tests.
PyNDN v2.6beta1 (2018-02-05)
Bug fixes
* Ported the latest NDN regex code
from ndn-cxx which fixes errors for complex expressions.
* In KeyChain.importSafeBag, handle
exceptions from Tpm.importPrivateKey.
* 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,
Updated examples to use the security v2 KeyChain.
Added security v2 unit and integration tests.
(The security v2 Validator will be available soon.)
* In encrypt GroupManager, save private
keys in memory to avoid regenerate group key pairs.
* Added Interest get/setForwardingHint.
* In Interest, deprecated link object and selected delegation methods.
Use get/setForwardingHint.
PyNDN v2.5beta1 (2017-03-16)
* In KeyChain.verifyData and verifyInterest,
use onValidationFailed callbacks which include a reason string.
* In Node, support a callable object
for onInterest. (Thanks Pedro!)
* Support for Link objects in the
encrypt package Producer and Consumer.
* In ChronoSync2013, support optional
application info in the SyncState messages.
* In Blob, if isNull(), changed toRawStr() to return "" instead of None.
* ChronoSync2013: Added method getProducerPrefixes().
* In KeyChain, deprecated verifyData that takes an onValidationFailed(data)
callback without a reason string. You should use the callback with the reason
* In KeyChain, deprecated verifyInterest that takes an onValidationFailed(interest)
callback without a reason string. You should use the callback with the reason
PyNDN v2.4beta1 (2016-11-02)
* In MetaInfo, added get/setOtherTypeCode
to allow unrecognized content type codes in the packet.
* In FilePrivateKeyStorage.generateKeyPair, update mapping.txt for the generated key.
* In ProtobufTlv, added utility method toName.
* Added support for the Name component type ImplicitSha256Digest, and methods:
Name.Component.fromImplicitSha256Digest, isGeneric and isImplicitSha256Digest.
* In SegmentFetcher.fetch, allow a validatorKeyChain for asynchronous Data validation.
* In Data, added getFullName, and
in Interest added matchesData to use it.
* INSTALL: Added instructions to build the optional _pyndn C module for faster
* INSTALL: Added macOS 10.12.
* Examples: In test_encode_decode_fib_entry, etc, use ProtobufTlv.toName.
* Unit tests: In test_name_methods, added test_implicit_sha256_digest.
* Unit tests: In test_interest_methods, added test_matches_data.
* Unit tests: In test_data_methods, added test_full_name.
Bug fixes
* Respect tpm= setting in client.conf.
* getNowMilliseconds() doesn't return UTC.
* Fix bug in OSXPrivateKeyStorage.sign for Python 3.
PyNDN v2.3beta1 (2016-05-06)
Breaking changes
* In encrypt/Consumer, moved ErrorCode to encrypt/EncryptError, affecting the
onError callback to Consumer.consume.
* In MemoryContentCache.registerPrefix, added optional onRegisterSuccess. (Thanks to Zhehao Wang.)
* Added Sha256WithEcdsaSignature. Support encoding/decoding it in interests and data packets.
* In KeyChain, added generateEcdsaKeyPair and generateEcdsaKeyPairAsDefault.
* In util, added ExponentialReExpress.
* Added HmacWithSha256Signature. In KeyChain, added experimental static methods
* 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).
* Added GenericSignature.
* Added Name.isPrefixOf and getSuccessor.
In compare, support compare(int, int, Name, int, int).
* Added Name.Component.isSegment,
isSegmentOffset, isVersion, isTimestamp and isSequenceNumber.
* Added static Name.Component.fromSegment,
fromSegmentOffset, fromVersion, fromTimestamp and fromSequenceNumber.
* Added Interest.refreshNonce.
* In API callbacks, catch and log exceptions.
* In Producer.createContentKey and produce,
added an optional onError callback.
* Added MemoryContentCache.setInterestFilter.
* In IdentityManager, added prepareUnsignedIdentityCertificate, getAllIdentities
and getAllCertificateNamesOfKey.
* In KeyChain, removed getAnyCertificate and getAnyIdentityCertificate.
* Unit tests: In test_data_methods, added test_verify_ecdsa.
* Unit tests: Added test_link.
* Integration tests: In test_face_methods, added test_network_nack.
* 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.
* Fix bug in encrypt/Schedule to solve problems when the black repetitive interval list is empty.
* In Producer, the produced data name should not use a rounded timestamp.
PyNDN v2.2beta1 (2016-02-03)
* Use the cryptography package instead of pycrypto. See to update.
* In OSXPrivateKeyStorage, implemented generateKeyPair.
PyNDN v2.1beta2 (2016-01-07)
* Added the pyndn.encrypt package for the Group-Based Encryption Protocol, ported from
* In Name, added support for hash(name). (A Name can be a dictionary key.)
* INSTALL: Removed unsupported OS X 10.8.4.
* INSTALL: Added OS X 10.11, Ubuntu 15.04 (64 bit) and Raspbian Jessie.
Bug fixes
* Fix bug in BasicIdentityStorage.getCertificate (Thanks Zhehao)
* In expressInterest, call onTimeout when there is no interest lifetime.
PyNDN v2.1beta1 (2015-09-24)
* In security, added KeyChain.createIdentityAndCertificate which returns the
certificate name, instead of the deprecated createIdentity which returns the
key name.
* Added AsyncTcpTransport and AsyncUnixTransport which use asyncio and do not
require the application to call processEvents.
* In Face.registerPrefix, added the
optional onRegisterSuccess callback.
* In ThreadsafeFace, for the constructors ThreadsafeFace(loop) and
ThreadsafeFace(loop, host, port) use AsyncTcpTransport or AsyncUnixTransport
which do not require the application to call processEvents.
* In ThreadsafeFace, remove support for stopWhen() since this requires a
processEvents loop which we want to avoid when using asyncio. The application
must stop the asyncio loop - see examples/ .
* In ThreadsafeFace, do not automatically run a processEvents loop since the
default AsyncTcpTransport and AsyncUnixTransport don't need it. (If your
application uses a different transport which does not use the asyncio loop,
then it needs to run a processEvents loop.)
* In ThreadsafeFace, don't automatically import it into the pyndn module since
asyncio is optional. To explicitly import it, use:
from pyndn.threadsafe_face import ThreadsafeFace
* In security ConfigPolicyManager, added load(input, inputName) to read
configuration rules from a string.
* In integration_tests, added test_registration_callbacks.
* In Face.registerPrefix, removed deprecated support to register with NDNx.
* In Interest, removed deprecated NDNx get/setScope.
* In ForwardingFlags, removed deprecated NDNx flags active, advertise, last,
local, tap and captureOK.
* Removed deprecated NDNx ForwardingEntry.
* Removed deprecated NDNx 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.
* In Interest, deprecated get/setScope since it is for NDNx and NFD does not use it.
Bug fixes
* Self-signed cert name needs a version component.
* Lower-case "ksk-" in generated key name.
PyNDN v2.0beta4 (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
* In Face, added getMaxNdnPacketSize().
expressInterest and putData throw an exception if the encoded size exceeds it.
* In Face, added setInterestFilter. In
registerPrefix, make the onInterest callback optional.
* Face: In registerPrefix, changed the onInterest callback to pass interestFilterId
instead of registeredPrefixId.
* In registerPrefix and setInterestFilter,
support the onInterest callback form
onInterest(prefix, interest, face, interestFilterId, filter).
The new callback form is passed the Face instead of Transport so that you can
supply the Data with face.putData(). It also takes the InterestFilter supplied
to setInterestFilter.
* MemoryContentCache: In registerPrefix, changed the onDataNotFound callback to call
onDataNotFound(prefix, interest, face, interestFilterId, filter).
If your application uses onDataNotFound, you must update your callback function.
* In Interest setter methods, return this so that you can chain calls to update values.
* Added class util/SegmentFetcher, ported from ndn-cxx. Use it in examples test_list_rib.
* 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().
* Make Blob.__str__ return "" instead of None if the blob isNull().
* In ControlParameters, added support for Uri and Strategy.
* In the default WireFormat, implemented decodeControlParameters.
* Moved tests which need NFD from tests/unit_tests to tests/integration_tests.
* examples: Added test_list_channels, test_list_faces, test_list_rib and
test_register_route to query NFD.
* examples: In repo_ng added and to
show interaction with the repo-ng repository.
* examples: Removed test_encode_decode_forwarding_entry and
test_publish_async_ndnx because NDNx support is deprecated.
* Unit tests: In test_interest_methods, added test_exclude_matches.
* Deprecated support for NDNx and binary XML. See WireFormat.ENABLE_NDNX above.
* In Face, deprecated registerPrefix where the onInterest callback has the form
onInterest(prefix, interest, transport, interestFilterId). Use the
registerPrefix where onInterest has the form
onInterest(prefix, interest, face, interestFilterId, filter) so you can call
Bug fixes
* Fix ProtobufTlv for Python 3.
* Fix test_chrono_chat bug affecting OS X 10.10.
* ControlParameters with empty name not properly encoded.
PyNDN v2.0beta3 (2015-02-03)
* Moved example programs from "tests" to "examples".
* In KeyChain.createIdentity, added an optional KeyParams argument.
* Unit tests: Added test-der-encode-decode tests for CertificateExtension.
Bug fixes
* Fixes to support Python 3
PyNDN v2.0beta2 (2014-12-23)
* Support getter and setter properties in the classes Interest, Data, MetaInfo,
KeyLocator and ForwardingFlags, plus the internal ForwardingEntry and
* In Name, support slice notation to call getSubName, e.g. name[2:4].
* Added ChronoSync2013 and
* In Name, added wireEncode and wireDecode.
* In MetaInfo, added get/setFinalBlockId (replaces the deprecated get/setFinalBlockID).
* In MemoryContentCache, added unregisterAll.
* Added ConfigPolicyManager for heirarchical verification using an NDN config file. (Thanks to Adeola Bannis.)
* Added DigestSha256Signature. Support encoding/decoding it in interests and data packets.
* In KeyChain, added signWithSha256.
* In registerPrefix, use to log success or the reason for failure.
* In each, added import statements for each module (required by pylint).
* In unit tests, added test_name_conventions, test-policy_manager and test_verification_rules.
* Unit tests: In test-data-methods, added VerifyDigestSha256.
* Unit tests: In test-interest-methods, added VerifyDigestSha256.
* In MetaInfo, deprecated get/setFinalBlockID. Use get/setFinalBlockId.
PyNDN v2.0beta1 (2014-08-31)
* 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.
Bug fixes
* Should encode non-negative integers 253 through 255 as one byte.
* Return the registeredPrefixId from registerPrefix.
PyNDN v2.0alpha3 (2014-08-14)
* Implemented SelfVerifyPolicyManager for use with KeyChain.verifyData, and use
it in the sample test_encode_decode_data.
* Implemented OSXPrivateKeyStorage to use keys in the OS X Keychain.
* Performance improvements for Python versions before 3.3.
* Name: Added methods appendSegment and appendVersion.
* Name: Added method equals(name) and operators __eq__ and __ne__.
* Name: Added method compare(other) and operators __lt__, etc.
* Name: Added a default Name.Component constructor to make a zero-length value.
* Renamed test_publish_async to test_publish_async_ndnx.
* Added test-publish-async-nfd.
* Added ThreadsafeFace which uses asyncio.
* Added test_get_async_threadsafe
* Renamed internal class Tlv1_0a2WireFormat to Tlv0_1WireFormat.
* COPYING: Changed the license to LGPLv3.
* In Blob, added __str__ operator.
* Added encoding.ProtobufTlv for converting a Protobuf message object to TLV encoding.
* 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 MemoryContentCache. See .
* KeyChain: added verifyInterest.
* Added instructions for building the Sphinx documentation.
* Added to support easy_install. Added instructions in the README file.
* MemoryPrivateKeyStorage: Deprecated setKeyPairForKeyName without an explicit keyType. Use
setKeyPairForKeyName passing the explicit key type such as KeyType.RSA.
Bug fixes
* Make Interest MustBeFresh default True.
* Fix FinalBlockID encoding.
* Trollius 0.3 doesn't import asyncio.
* For TLV packets over UDP, ignore packets starting with 0x80.
* Fix bug for encoding/decoding the TLV Interest PublisherPublicKeyLocator.
* In the Blob constructor, Name.append, etc. treat a Python 2 str as a raw string.
Support to be added soon:
* Package install support.
PyNDN v2.0alpha2 (2014-02-27)
* Added UdpTransport in module pyndn.transport to support a UDP connection.
* In Blob, added method toRawStr and static method fromRawStr.
Bug fixes
* Fix Interest.setExclude to properly copy the Exclude object.
PyNDN v2.0alpha1 (2014-02-21)
This is the Python 2.0 initial release, with support for the NDN-TLV wire format in pure Python.