Monday, August 9, 2010, 07:39 PM ( 14 views ) - Posted by AdministratorToday is the unofficial pencils down date. Too bad I am not ready to put my pencil down yet. I have until Friday to pull everything together and complete what I have left, because that is the official pencils down date. I have had a lot of obstacles when facing the challenge of completing my project - both personal and comprehensive. For example, my HDD decided to not want to mount last week while I was out of town. Luckily I was able to get a new one salvage the data.
There are a few bugs currently in the JTor code that I am not mantaining. The first being a problem with the directory fetching and storage of the list of routers. The list gets fetched and stored, but, I believe, that when the initial circuits are created the list gets emptied. The fix I have used for this is to just reload the router information before I have to use it.
The second bug is a problem with the circuits connecting a stream to a destination. The circuits are created upon initialization, and when using the API to attempt to connect to a server over a Tor stream the stream rarely connects. This is apparently caused by JTor wanting a certain type of circuit but it not existing, so it waits indefinitely. These bugs among other missing functionality make it difficult to have a fully functioning Hidden Services. But I am providing as much functionality as I can so that when those features are fixed and others finished, it will work. In addition, since I am using test driven development I am writing all the tests to ensure the working state of hidden services come these features.
There are a few things that I have added placeholders for in the JTor code that do not exist yet. The first is creating circuits for Hidden Service connections. Currently the only circuits allowed are three hop ones and there wasn't a spot in the API to do otherwise. Also the CircuitManager class needs the ability to create exclusive circuits that will not be used regularly, like the ones between the hidden service and its introduction points.
Looking at the list of features for my original proposal below - I am almost there. For the publication parts - I have completed the V2 Service Descriptor, the advertising of the descriptor. The bad directory checking needs to be added - that will be simple, because it is just a fetch of the descriptor after it has been published. Establishing of introduction points is difficult to verify because of the bug with sending data over a circuit. Fetching of the service descriptor, parsing, verification and periodic fetching have all been implemented. Only descriptor cookies are supported for authentication mechanisms right now. The cells have been created but not tested. I still need to write the tests for them and make sure they are complete. For configuration, I have implemented the ability to create a hidden service from a Tor client hidden service folder. As for the authentication mechanisms, I am going to have to cut those off at descriptor cookie auth for the summer. I am still yet to merge my changes into the rend-spec that Karsten had modified. I am going to be working on the things mentioned as incomplete above until the end of the week. All these changes will be on my github.