148 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			148 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| #include <iostream>
 | |
| #include <fstream>
 | |
| #include "win.h"
 | |
| #include "buffer.h"
 | |
| #include "cryptography.h"
 | |
| #include "func.h"
 | |
| #include "arg_func.h"
 | |
| 
 | |
| #ifdef _DEBUG
 | |
| 
 | |
| int main()
 | |
| {
 | |
| 	Buffer encrypted_buffer;
 | |
| 	load_buffer_from_file(&encrypted_buffer);
 | |
| 	
 | |
| 
 | |
| 	printf_s("Input main password:");
 | |
| 	std::string user_pass = get_passwd();
 | |
| 	if (user_pass.empty())
 | |
| 	{
 | |
| 		printf_s("Error getting password\n");
 | |
| 		return 1;
 | |
| 	}
 | |
| 
 | |
| 	Cryptography crypto(user_pass.c_str(), user_pass.size());
 | |
| 
 | |
| 	Buffer decrypted_buffer;
 | |
| 	if (encrypted_buffer.size > 0)
 | |
| 		if (!crypto.decrypt(&encrypted_buffer, &decrypted_buffer)) return 1;
 | |
| 
 | |
| 	Pass* pass = nullptr;
 | |
| 	std::string label = "test";
 | |
| 
 | |
| 
 | |
| 	printf_s("\n--arg_generate--------------------------------------------\n");
 | |
| 
 | |
| 	pass = arg_generate(decrypted_buffer, encrypted_buffer, label.c_str(), crypto);
 | |
| 	printf_s("Generated Password: %s\n", pass->password);
 | |
| 	
 | |
| 	printf_s("\n--arg_get-------------------------------------------------\n");
 | |
| 
 | |
| 	pass = arg_get(decrypted_buffer, label.c_str());
 | |
| 	printf_s("Password: %s\n", pass->password);
 | |
| 
 | |
| 	
 | |
| 	printf_s("\n--arg_list------------------------------------------------\n");
 | |
| 
 | |
| 	arg_list(decrypted_buffer);
 | |
| 
 | |
| 
 | |
| 	label = "test2";
 | |
| 	
 | |
| 	printf_s("\n--arg_input-----------------------------------------------\n");
 | |
| 
 | |
| 	pass = arg_input(decrypted_buffer, encrypted_buffer, label.c_str(), crypto);
 | |
| 	printf_s("Password: %s\n", pass->password);
 | |
| 
 | |
| 	printf_s("\n--arg_show------------------------------------------------\n");
 | |
| 
 | |
| 	arg_show(decrypted_buffer, label.c_str());
 | |
| 
 | |
| 
 | |
| 	printf_s("\n--arg_print_all_p-----------------------------------------\n");
 | |
| 
 | |
| 	arg_print_all_p(decrypted_buffer, user_pass);
 | |
| 
 | |
| 	printf_s("\n--arg_delete----------------------------------------------\n");
 | |
| 
 | |
| 	arg_delete(decrypted_buffer, encrypted_buffer, label.c_str(), crypto);
 | |
| 	label = "test";
 | |
| 	arg_delete(decrypted_buffer, encrypted_buffer, label.c_str(), crypto);
 | |
| 
 | |
| }
 | |
| 
 | |
| #else
 | |
| 
 | |
| int main(int argc, char** argv)
 | |
| {
 | |
| 	char* label = nullptr;
 | |
| 	Arg args = get_args(argc, argv, &label);
 | |
| 	if (args == Arg::Error) return 1;
 | |
| 
 | |
| 	Buffer encrypted_buffer;
 | |
| 	if (!load_buffer_from_file(&encrypted_buffer))
 | |
| 		if (!(args == Arg::Generate || args == Arg::Input)) {
 | |
| 			printf_s("No passwords, try generating password\n");
 | |
| 			return 1;
 | |
| 		}
 | |
| 
 | |
| 	printf_s("Input main password:");
 | |
| 	std::string user_pass = get_passwd();
 | |
| 	if (user_pass.empty())
 | |
| 	{
 | |
| 		printf_s("Error getting password\n");
 | |
| 		return 1;
 | |
| 	}
 | |
| 
 | |
| 	Cryptography crypto(user_pass.c_str(), user_pass.size());
 | |
| 
 | |
| 	Buffer decrypted_buffer;
 | |
| 	if (encrypted_buffer.size > 0)
 | |
| 		if (!crypto.decrypt(&encrypted_buffer, &decrypted_buffer)) return 1;
 | |
| 
 | |
| 	Pass* pass = nullptr;
 | |
| 
 | |
| 	switch (args)
 | |
| 	{
 | |
| 	case Arg::Get:
 | |
| 		pass = arg_get(decrypted_buffer, label);
 | |
| 		break;
 | |
| 
 | |
| 	case Arg::Generate:
 | |
| 		pass = arg_generate(decrypted_buffer, encrypted_buffer, label, crypto);
 | |
| 		break;
 | |
| 
 | |
| 	case Arg::List:
 | |
| 		arg_list(decrypted_buffer);
 | |
| 		break;
 | |
| 
 | |
| 	case Arg::Delete:
 | |
| 		arg_delete(decrypted_buffer, encrypted_buffer, label, crypto);
 | |
| 		break;
 | |
| 
 | |
| 	case Arg::Print_all_p:
 | |
| 		arg_print_all_p(decrypted_buffer, user_pass);
 | |
| 		break;
 | |
| 
 | |
| 	case Arg::Input:
 | |
| 		pass = arg_input(decrypted_buffer, encrypted_buffer, label, crypto);
 | |
| 		break;
 | |
| 
 | |
| 	case Arg::Change:
 | |
| 		arg_change(decrypted_buffer, encrypted_buffer, user_pass, crypto);
 | |
| 
 | |
| 
 | |
| 	case Arg::Show:
 | |
| 		arg_show(decrypted_buffer, label);
 | |
| 		break;
 | |
| 	}
 | |
| 
 | |
| 	if (!pass) return 1;
 | |
| 
 | |
| 	printf_s("Password copied to clipboard\n");
 | |
| 	put_data_on_clipboard(pass->password);
 | |
| 
 | |
| }
 | |
| 
 | |
| #endif // _DEBUG
 | 
