Refactored a bunch. Finally abstracted everything away from the GUI, including handling the token. This is for later extensibility, such as not having to pass a reference to the GUI into the client threads (TBD), as well as for security. Also removed the Payload.java as it is unused.
Move the crypto related methods to the Client abstract class, since they are the same for both GroupClient and FileClient.
Finished adding the GroupClientThread to the GroupClient. All incoming objects now pass through this thread, enabling messages to be pushed to the client without being requested first. This will allow pushing of updated tokens later on.
Made the SecureEnvelope message part of the encrypted payload wherever possible. This applies to both the GC-GS and FC-FS interactions. It will help later on when protecting against active attackers. Added sequence numbers to all messages after the initial session initialization. Put the nonce return in the encrypted payload. Added a FileClientThread, which is the FC counterpart to the GroupClientThread. This deals with all incoming SecureEnvelopes and makes verifying sequence numbers more streamlined. Later this will make dealing with SecureEnvelope integrity verification easier as well.
Added diagrams of the client structure and the payload structure.
Added threadID to GroupThread. Should not break anything since the client will not be touching it.
Added Ticket as a class for use with the FileServer. Added threadID functionality, including including it in the Ticket. Added signing/verifying tickets to the FileServer. Verified working. Also fixed some issues with sequence numbers not being incremented on the FileServer side.
Now you can generate master file keys, which are saved to disk. Also import them into the GS. Next up, writing methods to allow generation based on seeds, etc
Blank. Just fixing local repo.
Added file encryption stuff to GroupServer...I guess you could call it an API...sort of. Should work fine, though we have to verify that the 256 bit key is actually 256bit. Some stackoverflow posts say it might be an issue. Also cleaned up the GroupThread to better communicate why its failing to the client.
Added CLI on the client side. Works for group server. Might not do the file server aspect.
Added encrypted files.
Merge branch 'master' into phase4
Fixed the file breaking when larger than 4kb.
Added hmac.
Updated structure.
Structure 2
Moved everything to packages. Fixed the download bug. Moved crypto stuff on server side to a base class for streamlining purposes.
Added key caching. Tested to be working, including uploading->downloading->reuploading->logging in as a different user->downloading->reuploading. Key uses set to 100. Cleaned up more code. Also, for key caching it uses MultiKeyMap, which is part of the Apache collections. I included the JAR which is used. This is better than implementing a tuple class from scratch.
Cleaned up more code. Moved GroupServer and FileServer key and list imports to separate methods for clarity. Added better fringe case handling when importing group and user lists. Lots of cleanup. Verified everything still works fine :)