Skip to content
Snippets Groups Projects
Select Git revision
  • 2bcc55ec96b1eab077097bc2abcf5dd75d731d61
  • master default protected
2 results

Machine.java

Blame
  • Forked from Tim Miller / SWEN90006-A1-2018
    Source project has a limited visibility.
    PassBook.java 8.96 KiB
    package swen90006.passbook;
    
    import java.util.Map;
    import java.util.HashMap;
    import java.util.Set;
    import java.util.HashSet;
    import java.net.URL;
    import java.net.MalformedURLException;
    import java.util.Random;
    import java.util.Arrays;
    
    /**
     * PassBook is a (fictional) online password manager. A password
     * manager is a software application that generates, stores, and
     * retrieves login details for users. 
     * 
     * A user has an account with PassBook. This account is protected by a
     * master password, or passphrase. Each user can store login details
     * for multiple websites, identified by their URL. A user can add a
     * login details for a given website. The passphrase is used to
     * encrypt all passwords, but for this implementation, we have ignored
     * encryption.
     * 
     * The PassBook passphrase must conform to the following requirements:
     * Must be at least eight characters long and contain at
     * least one digit (range 0-9), one letter in the range 'a'-'z', and 
     * one letter in the range 'A'-'Z'.
     * 
     * Username and passwords for stored URLs have no password
     * requirements.
     *
     * When a user logs into PassBook, they are given a session ID. This
     * session ID is used to identify them for all transactions until they
     * log out.
     */
    public class PassBook 
    {
        /** The minimum length of a passphrase */
        public final static int MINIMUM_PASSPHRASE_LENGTH = 8;
    
        /** Valid URL protocols for the passbook */
        public final static String [] VALID_URL_PROTOCOLS = {"http", "https"};
        
        //The passphrases (master passwords) for all users
        private Map<String, String> passphrases;
     
        //The login details for all users and the URLs they have stored
        private Map<String, PasswordTable> details;
    
        //Mapping from session IDs to usernames
        private Map<Integer, String> userIDs;
    
        //Mapping from usernames to sessionIDs
        private Map<String, Integer> sessionIDs;
    
        /**
         * Constructs an empty passbook.
         */
        public PassBook()
        {
    	passphrases = new HashMap<String, String>();
    	details = new HashMap<String, PasswordTable>();
    	userIDs = new HashMap<Integer, String>();
    	sessionIDs = new HashMap<String, Integer>();
        }
    
        /**
         * Adds a new user to the passbook.
         *
         * @param passbookUsername   the username for the user to be added