Challenge Overview
Delay Tolerant Networking (DTN) investigation with the goal of advancing the maturity and heritage (space flight use) of the DTN communication protocols.
Delay tolerant networks make use of store-and-forward techniques within the network in order to compensate for intermittent link connectivity. In the DTN the fundamental concept is an architecture based on Internet-independent middleware where protocols at all layers are used that best suit the operation within each environment, with a new overlay network protocol (bundle protocol) inserted between the applications and the locally optimized communications stacks.
This architecture aims to decouple the LTP authentication extension handling code from the core LTP protocol library, and introduce a generic library to support LTP extensions.
This assembly is responsible to implement the changes to the core LTP library to make use of the generic LTP extensions library and remove the existing authentication extension code.
Final Submission Guidelines
Requirements:
This assembly is responsible for the following code changes shown on TCUML "ION-DTN LTP Authentication - Decouping Extension Code Changes Diagram"
- All changes within "LTP Core Protocol Code" package except for the following:
- Changes to LtpPdu (implemented in another assembly)
- Function serializeLtpExtensionField in libltpP.c (implemented in another assembly)
Implementation details are provided at TCUML method documentations.
You must also fix the following item:
- LTP engine numbers are now of type "uvast" rather than unsigned int; this needs to be revised in ionsec.h, ionsec.c, ionsecadmin.c.
And you must also address the following comments from the customer related to the Refactoring Extension Assembly (previous assembly):
- Comments in ionsec.h indicate that the key name field is used to carry the key value itself when ciphersuite is NULL or HMAC-SHA1-80, but is otherwise used to carry the name of the key. But the auth.c file doesn't seem to work that way: it always uses the key name to look up the key value, which I believe is correct. I think the comments in ionsec.h should be removed.
- Ensure that these items are relocated when we get to the final core assembly: LtpAuthHeader and Trailer definitions in ltpP.h, the authHeader and authTrailer serialization in libltpP.c, and the verifyAuthentication function in libltpP.c
- In auth.c, check if it's possible for secKeyValueBuffer to be released when not allocated, in the event that you're using ciphersuite 255 and authentication succeeds.
Important Notes
- This will be a 4-days competition
- There will be only 2 reviewers
Main deliverables:
- Updated Source Code
- Deployment guide explaining how to build, configure and verify the application.
Test:
- You must ensure test cases that are successful continues to be successful. There is no need to create new test cases, but you must update existing test cases to make sure tests are successful. (see <previous assembly>\4 Test Suites\doc\report.xls for a list of test cases that are successful).
Source Code Comments:
- There will be no strict rule for source code comments for functions. Use mainly inline comments, wisely.
Environment:
- Linux (Ubuntu 12.04.3 LTS is recommend)
- C
- GCC (latest stable version 4.8.1 is recommended)
- Make (latest stable version 3.82 is recommended)
- Python (latest 2.x stable version 2.7.5 is recommend)
- ION-DTN 3.1.3
- PolarSSL 1.2.8
Deployment Instructions:
Assemblers can code in a local Ubuntu environment since only loopback connection is needed to validate the configuration. Attached you can find a document with instructions on how to setup ION-DTN. It is applicable for VMs, but it should be easily adapted for local environments. You can also follow ION-DTN tutorials from the source code distribution.
Request VM with ION-DTN and Python LTP if needed. Send email to romanotc@copilots.topcoder.com