#ifndef PASSMAN_H #define PASSMAN_H #include #include #include #include #include #include #include #include #include #include "qaesencryption.h" class passman { public: passman(); QString database_path = QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation) + "/credentials.database"; QString key = ""; //Database encryption key void save() const; //Save the database to the database path on drive bool load(); //Loads the database from the database path on a drive void encrypt(); //Encrypts database entries into encrypted data bool decrypt(); //Decrypts encrypted database data into database entries bool backup() const; //Backups the database in a backup location on a drive and returns false if there is not a database to backup void add_entry(QString website_name, QString username, QString password, QString note); //Add new entry to database void remove_entry(int index); //Return entry from a database void alter_entry(int index, QString new_website_name, QString new_username, QString new_password, QString new_note); //Alter database entry void clear_database(); //Removes everything from the database std::array get_entry_copy(int index) const; //Returns entry copy from the database std::vector> get_database_copy() const; //Returns full database copy QString generate_password(int length) const; //Returns newly generated password string bool database_exists() const; //Returns true if database exists on a drive in certain location protected: QAESEncryption *encryption; //Pointer to an object used for encryption QByteArray encrypted_data; //Encrypted Database std::vector> decrypted_entries; //Database Entries QString characters = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ:;.,/=-+*<>{}()[]_%#$@!?^&"; //List of characters for password generator QStringList ivs = { "jW2jT]%0k2#-2R1.d(7'6V0Z|4=-HX2G9@F;561.07@21,NHq42)*896M(18R+9w080*Hs^,45G?;]5R7}'*0Z67?Y7|%SFI**0g", ")OR2*711+M)*a,5D/qB}/#]|fN*30oA<#;>]B80>,4J9@<<;J5;#wL*]p$G9D0i1860;Y}b;|h)]6h6.O(n(*R)j87WrfZJ%>DM635u68i/s7@<*=/[V562&46E}P)/+8pZ$0c/3)690A/t.8eJ+4gJxf1&q?99%AP{)c71", "6J00^0cZ-X16a=Z+K<_{8J34#1@9*Tb@3B4_^5'k0+YY[^--IZ71y0^62T&w>9}o738zAj7p1.%NA)+3^246X|F61I3<+I.8Z3tE4,HE_56o{[*7;*rf^", "@F7L-7$;'h*|?0io3Zo}063)193|3'o/6-E+877Tr[vW87sNc8q<6,69-IS72cz6|2I/p{I8D6W520/$&6*Y3&%v,*0/85(ikK!J", "72|/3;10O@!(|t)]8}02Gf126N)+6*w6e2P57/dWd*JW5+aR?h31e/=4o58!$l9!4?6_,7L%4}z3Lu8;sb^q}9%lVy6I57L]8<,-ho?310Dd_h|y1#iz%3]rN'zr5T1Bc2uQ5cb!K39386)50c0+%.w.X'", "2-n$rL3v4T/*/22F%2tN}.yDX78#50z3Z9-B10X5*4]97+R-OK'2^F%7$>95c8jLu531C==1|V7Cd=o;5L6/B17jF2C9<1]R4'DY", }; //List of initialization vectors for aes encryption/decryption }; #endif // PASSMAN_H