The NDN Common Client Libraries (NDN-CCL) are written in C++, Python, JavaScript, Java and .NET (C#) and provide a common API for client applications to use NDN. Any library in NDN-CCL suite allows an application to send interests to and receive data from an NDN forwarding daemon (NFD) and provide a large set of other functions necessary for any NDN application.
- Libraries implementing the NDN Common Client Libraries API:
- C++ – NDN-CPP, [language-specific issues]
- Python – PyNDN
- Javascript – NDN-JS
- Java – jNDN
- .NET Framework (C#) – NDN-DOT-NET
- Squirrel – NDN-Squirrel
- Function and class documentation: NDN-CPP, PyNDN, NDN-JS, jNDN.
- The Common Client Libraries are also built and installed by default in the Vagrant box of Mini-NDN
Potential contributors to the NDN-CCL should review the NDN-CCL Development Guidelines.
Supported Features
Feature | NDN- CPP |
PyNDN | NDN-JS | jNDN | NDN- DOT- NET |
Notes |
---|---|---|---|---|---|---|
MemoryContentCache | ✓ | ✓ | ✓ | ✓ | ✓ | |
ChronoSync2013 | ✓ | ✓ | ✓ | ✓ | ✓ | |
Name.Component from* | ✓ | ✓ | ✓ | ✓ | ✓ | |
Name.Component is* | ✓ | ✓ | ✓ | ✓ | ✓ | |
Name.Component to* | ✓ | ✓ | ✓ | ✓ | ✓ | |
typed name components | ✓ | ✓ | ✓ | ✓ | ✓ | |
ImplicitSha256DigestComponent | ✓ | ✓ | ✓ | ✓ | ✓ | |
ParametersSha256DigestComponent | ✓ | ✓ | ✓ | ✓ | ✓ | |
ProtobufTlv | ✓ API | ✓ API | ✓ API | ✓ API | ✓ API | |
SegmentFetcher | ✓ API | ✓ API | ✓ API | ✓ API | ✓ API | |
ConfigPolicyManager | ✓ API | ✓ API | ✓ API | ✓ API | ✓ API | |
ControlResponse | ✓ API | ✓ API | ✓ API | ✓ API | ✓ API | |
Face.setInterestFilter | ✓ | ✓ | ✓ | ✓ | ✓ | |
Face.setInterestLoopbackEnabled | ✓ | ✓ | ✓ | ✓ | ✓ | |
Interest forwarding hint | ✓ | ✓ | ✓ | ✓ | ✓ | |
NDNLPv2 NetworkNack | ✓ | ✓ | ✓ | ✓ | ✓ | |
NDNLPv2 IncomingFaceId (Interest, Data) | ✓ | ✓ | ✓ | ✓ | ✓ | |
NDNLPv2 CongestionMark (Data) | ✓ | ✓ | ✓ | ✓ | ✓ | |
remote prefix registration | ✓ | ✓ | ✓ | ✓ | ✓ | |
FilePrivateKeyStorage | ✓ API | ✓ API | ✓ API | ✓ API | ✓ API | |
BasicIdentityStorage | ✓ API | ✓ API | ✓ API | ✓ API | ✓ API | |
encrypt/EncryptedContent | ✓ API | ✓ API | ✓ API | ✓ API | ✓ API | |
encrypt/AesAlgorithm, RsaAlgorithm | ✓ | ✓ | ✓ | ✓ | ✓ | |
encrypt/AccessControlV2 | ✓ | ✓ | ✓ | ✓ | ✓ | |
encrypt/EncryptorV2 | ✓ | ✓ | ✓ | ✓ | ✓ | |
encrypt/DecryptorV2 | ✓ | ✓ | ✓ | ✓ | ✓ | |
NDN regex | ✓ | ✓ | ✓ | ✓ | ✓ | |
Sha256WithRsaSignature, HmacWithSha256Signature, DigestSha256Signature |
✓ | ✓ | ✓ | ✓ | ✓ | |
GenericSignature | ✓ | ✓ | ✓ | ✓ | ✓ | |
onValidationFailed reason string | ✓ | ✓ | ✓ | ✓ | ✓ | |
Alternative Data packet content type codes | ✓ | ✓ | ✓ | ✓ | ✓ | |
Certificate Format 2.0 | ✓ | ✓ | ✓ | ✓ | ✓ | |
Async I/O, ThreadsafeFace | ✓API | ✓API | N/A | ✓API | ✓ | |
Security v2 API (Pib, Tpm, etc.) | ✓ | ✓ | ✓ | ✓ | ✓ | |
Rename KeyType ECDSA to EC | ✓ | ✓ | ✓ | ✓ | ✓ | https://redmine.named-data.net/issues/4064 |
examples: TestChronoChat, TestEchoConsumer, TestEncodeDecodeBenchmark, TestEncodeDecodeData, TestEncodeDecodeFibEntry, TestEncodeDecodeInterest, TestGetAsync, TestGetAsyncThreadSafe, TestListChannels, TestListFaces, TestListRib, TestPublishAsyncNfd, TestRegisterRoute, TestSignVerifyDataHmac |
✓ | ✓ | ✓ | ✓ | some | |
examples/repo_ng: BasicInsertion, WatchedInsertion |
✓ | ✓ | ✓ | ✓ | Sha256WithEcdsaSignature | ✓ | ✓ | Node.js | ✓ | NDN-JS: Firefox subtle doesn’t import PKCS8 private keys. |
Add API to ask NFD for local prefix | http://named-data.net/doc/NFD/current/misc/local-prefix-discovery.html. |