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. |
