string deriveSecret(string job, Registry registry) { // get the master secret value from the registry byte* master = (byte*) (registry.find("master")->second).c_str(); // Generate the salt byte* salt = generateRandomSalt(DEFAULT_SALT_SIZE); // Derivate the key byte* okm = deriveKey(256, (byte*) master, 256, salt, 256); cout << "salt" << endl << salt << endl << endl; cout << "okm" << endl << okm << endl << endl; cout << "master" << endl << master << endl << endl; // return the OKM and the salt XXX check that sizeof is doing what's // intended Response resp; resp.set_salt(&salt, 256); resp.set_secret(&okm, 256); string string_resp; resp.SerializeToString(&string_resp); return string_resp; }
void ProxyServer::run() { TRACE(std::cout, ""); zmq::context_t context(1); zmq::socket_t socket(context, ZMQ_REP); std::string addr = m_protocol + "://*:" + m_port; socket.bind(addr.c_str()); while (true) { TRACE(std::cout, ""); zmq::message_t z_req; socket.recv(&z_req); std::string s_req((char *)z_req.data(), z_req.size()); Request req; req.ParseFromString(s_req); // if trace is in Request_Header, then change log level of appender // to trace if (m_msgDriver->requestHasTrace(req)) { TRACE(std::cout, ""); logger->setLevel(log4cxx::Level::getTrace()); } if (m_reqPrinter) { TRACE(std::cout, ""); LOG4CXX_TRACE(logger, "Request: "<<(m_reqPrinter(req))); } Response *resp = NULL; // All the anlytics will be logged in this function switch (req.header().type()) { case Request_Header_Type_LOOKUP: { TRACE(std::cout, ""); try { m_worker->lookup(req); } catch (KeyNotFoundException &e) { TRACE(std::cout, ""); LOG4CXX_DEBUG(logger, "Key not found in store: " <<e.what()); } resp = m_worker->response(); break; } case Request_Header_Type_INSERT: { TRACE(std::cout, ""); try { m_worker->insert(req); } catch (KeyPresentException &e) { TRACE(std::cout, ""); LOG4CXX_DEBUG(logger, "Key already present in" " store: "<<e.what()); } catch (InsertionException &e) { TRACE(std::cout, ""); LOG4CXX_DEBUG(logger, "Insertion error: " <<e.what()); } resp = m_worker->response(); break; } case Request_Header_Type_REMOVE: { TRACE(std::cout, ""); try { m_worker->remove(req); } catch (KeyNotFoundException &e) { TRACE(std::cout, ""); LOG4CXX_DEBUG(logger, "Key not found in store: " <<e.what()); } catch (DeletionException &e) { TRACE(std::cout, ""); LOG4CXX_DEBUG(logger, "Deletion error: " <<e.what()); } resp = m_worker->response(); break; } default: { TRACE(std::cout, ""); break; } }; if (m_respPrinter) { TRACE(std::cout, ""); LOG4CXX_TRACE(logger, "Response : "<<(m_respPrinter(*resp))); } std::string s_resp; resp->SerializeToString(&s_resp); delete resp; zmq::message_t reply(s_resp.size()); memcpy((void *)reply.data(), (void *)s_resp.c_str(), s_resp.size()); socket.send(reply); } }