#include #include #include #include #include #include #include #include #include #include #include #include //#include //#include //#include //#include //#include //#include namespace po=boost::program_options; class mix { public: int id; std::string name; gpgme_data_t keydata; gpgme_ctx_t context; gpgme_error_t error; gpgme_key_t key; void init() { std::cout << "Mix starting..." << std::endl; if(std::ifstream("mix.conf")) { std::cout << "Config file existing" << std::endl; this->read_settings(); std::cout << "name = " << name << std::endl; std::cout << "id = " << id << std::endl; // read_keys(); start_peer(); } else { std::cout << "Config file does not exist. Exiting." << std::endl; std::exit(1); } std::cout << "Looking for keys" << std::endl; gpgme_check_version(NULL); gpgme_new(&context); create_keys(); } void read_settings() { po::options_description desc("Options"); desc.add_options() ("name", po::value(&name), "name"); desc.add_options() ("id", po::value(&id), "id"); po::variables_map vm; std::ifstream settings_file("mix.conf"); vm = po::variables_map(); po::store(po::parse_config_file(settings_file , desc), vm); po::notify(vm); } void read_keys() { gpgme_data_new_from_file(&keydata, "keys.gpg", 1); gpgme_op_import(context, keydata); gpgme_op_keylist_start (context, "mix", 0); while(!error) { error = gpgme_op_keylist_next (context, &key); if (error){break;} std::cout << key->subkeys->keyid << std::endl; if (key->uids && key->uids->name) { std::cout << key->uids->name << std::endl; } if (key->uids && key->uids->email) { std::cout << key->uids->email << std::endl; } } } void create_keys() { error=gpgme_op_createkey(context,"mix@pep.foundation",NULL,0,0,NULL,0); if(error) { std::cout << "Error generating keys" << error << std::endl; } else { std::cout << "Key generated successfully" << std::endl; } } void start_peer() { lt::settings_pack p; lt::session ses(p); std::vector alerts; ses.pop_alerts(&alerts); // lt::alert a; std::cout << "Alert: " << alerts[0] << std::endl; } }; int main() { mix mix1; mix1.init(); }