Refactor KeyManager and TagRecogniser, implement new key rotation logic.
This patch implements the new key rotation logic for BTP version 2, the new transport protocol (#111).
KeyManager and TagRecogniser have been merged (#55). They no longer need to hold locks while calling each other's methods (#3, #4). TransportKeyManager holds a lock while calling CryptoComponent methods, but those methods don't block or acquire any locks.
The maximum clock difference has been increased from one hour to 24 hours because some people adjust the time rather than the timezone when travelling (#18). This will cause keys to be rotated less frequently.
For the same reason, the key manager no longer throws an Error when the clock moves backwards - keys that belong to future rotation periods are kept until they become current, then rotation resumes (#19).
The new KeyManagerImpl and TransportKeyManager need unit tests. I'm putting this up for review while I write the tests.
TransportKeyManager needs further work before #55 is complete - when a stream context is created, TransportKeyManager should wait for the database write to complete before returning the context, to avoid the risk of key reuse if the write fails. I'll make a separate patch for that as this one's big enough already.
Enjoy!
See merge request !13
improved the crash handler and refactored the manifest
Improved the CrashReportActivity by putting the activity within its own process, making it a single instance and making sure it won't show up on the recent app list.
The old structure could create endless crash-loops and might not start the CrashReportActivity on process-related exception such as OutOfMemory because the process simply will not have the resources to do so. This problem is now fixed.
Concerning Roboguide: the problem is that every time a new task is started the xml file will be reloaded, at least with this branch there will not be an endless loop. By updating to Roboguice 3 the problem will be eliminated completely as that version has stopped using the xml file and reverted to manifest tags instead. It is getting very tempting to update.
Closes#67
See merge request !22
Improve Forum Sharing UI when sharing with selected contacts
When sharing only with chosen contacts, checking the contact's checkbox
and pressing Done nothing happens and the forum is not shared. An
additional click on "Share Forum" is necessary to actually share.
This behavior is fixed with this change.
Now, clicking 'Done' immediately shares the forum.
Closes#153
See merge request !20
Turn off Bluetooth again when not required anymore
Turn off Bluetooth again when not required anymore and when errors occur.
Also do not turn off Bluetooth when just changing device orientation.
If I didn't oversee something, this closes#156
See merge request !19
When sharing only with chosen contacts, checking the contact's checkbox
and pressing Done nothing happens and the forum is not shared. An
additional click on "Share Forum" is necessary to actually share.
This behavior is fixed with this change.
Now, clicking 'Done' immediately shares the forum.
Closes#153
Improve Adding Contacts
These changes provide more detailed instructions for adding contacts.
Users were confused by the process of adding a contact for the first time.
This change adds additional explanation and a picture of what is going on.
Closes#87
This change also shows the current step and the total number of steps when adding a contact.
Closes#33
The UI was transferred into XML files and lots of redundant code was deleted such as the custom CodeEntryView.
Please note that I did not implement a countdown for Bluetooth discoverability (#71), because of the way how the state machine resets the entire content view of the activity. This should probably be refactored to use fragments which would make the code cleaner and a permanent progress bar easier to implement.
See merge request !15
Add Coding Style to git
This change adds the coding style file of AndroidStudio to git to be shared and used by all devs for a consistent coding style.
Feel free to adjust the coding style in case this does not properly reflect the current coding style used for the current code in all details.
See merge request !16
Users were confused by the process of adding a contact for the first time.
This change adds additional explanation and a picture of what is going on.
It also moves part of the UI into XML files.
Closes#87
File utils refactoring
After Ernir merged the two FileUtils implementations I realised two of the three methods are no longer needed and the third can just be a static method, like StringUtils etc.
This patch also fixes a layout problem with PasswordActivity on the Galaxy Nexus - the progress wheel was showing up in the wrong place. (You need a slow phone to notice!)
See merge request !12
Improve how the status of messages is indicated.
Remove the Toast that always says 'Message Sent' and show graphical
indicators instead that show either:
* message is waiting to be sent
* message was sent (or requested to be sent)
* message was delivered
Please note that I didn't change the icons and did not migrate the UI to XML files to keep my change minimally invasive.
Closes#46
See merge request !9
Remove the Toast that always says 'Message Sent' and show graphical
indicators instead that show either:
* message is waiting to be sent
* message was sent (or requested)
* message was delivered
40 forgotten password
* Moved the UI definition over to XML and added the forgotten password button
* Code encapsulation in a new Base activity also enabling re-use between activities/fragments
Closes#40
See merge request !10
Don't mix JUnit 4's @Test with JUnit3's TestCase.
This is the world's most boring merge request. Android Studio was complaining about using JUnit 4's @Test annotations with JUnit 3's TestCase, so I fixed it.
Most of the changes come from Android Studio organising imports in a different order from Eclipse.
See merge request !8
Create hidden service in a subdirectory. #161
The permissions for the parent directory are too permissive (775) for Tor 0.2.7.5. Store the hidden service hostname and private key in a subdirectory with permissions 700.
See merge request !5