3. Technical Requirements
You will implement your client in Python. Our support code abstracts away all filesystem operations, and networking-related components (such as how data is sent to the Dataserver and Keyserver) are out of scope for this project.
3.1. Stateless Operation
Users are not guaranteed to be online between invocations of calls (nor are they guaranteed to be using the same machine!), and thus your client must be stateless. This means that your client may not rely on local storage or global variables to provide its security guarantees—if the client is restarted, it must be able to pick up where it left off given only a username and password.
3.2. Libraries and Third-Party Code
All of your implementation for the Dropbox protocol should be implemented using the given support code–that is, all cryptographic operations and storage must take place using the provided support code.
It is unlikely that you will need to import any additional libraries beyond those provided in the stencil. If you are considering this, ask for approval on Ed first.
3.3. Autograder Rules
We will review your code manually to ensure it is meeting the requirements for the project. Any attempts to deliberately circumvent the project requirements or autograder will not receive credit.