First sucessfull comunication
[mnenc] / mnencd.hpp
diff --git a/mnencd.hpp b/mnencd.hpp
new file mode 100644 (file)
index 0000000..379f7f9
--- /dev/null
@@ -0,0 +1,83 @@
+//      mnencd.hpp
+//      
+//      Copyright 2010 Micke Nordin <mickewiki@gmail.com>
+//      
+//      This program is free software; you can redistribute it and/or modify
+//      it under the terms of the GNU General Public License as published by
+//      the Free Software Foundation; either version 3 of the License, or
+//      (at your option) any later version.
+//      
+//      This program is distributed in the hope that it will be useful,
+//      but WITHOUT ANY WARRANTY; without even the implied warranty of
+//      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+//      GNU General Public License for more details.
+//      
+//      You should have received a copy of the GNU General Public License
+//      along with this program; if not, write to the Free Software
+//      Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+//      MA 02110-1301, USA.
+#ifndef _mnencd_h_included_
+#define _mnencd_h_included_
+#include <string>
+#include <iostream>
+#include <fstream>
+
+std::string remove_char(std::string str, char c) {
+       std::string::size_type k = 0;
+       while((k=str.find(c,k))!=str.npos) {
+               str.erase(k, 1);
+       }
+       return str;
+}
+
+std::string remove_chars(std::string str) {
+       std::string chars = " \t\n\b\a-?+\\{[]}'*'";
+       for(int i = 0; i < (signed) chars.size(); i++) {
+               str = remove_char(str, chars[i]);
+       }
+       
+       return str;     
+}
+
+std::string make_filename(std::string user, std::string app) {
+       return remove_chars(app + user);
+}
+std::string get_password(std::string masterpasswd, std::string user, std::string app) {
+       mnenc menc = mnenc();
+       menc.genkey(masterpasswd);
+       std::string key = menc.get_key();
+       password pw = password("", "", key);
+       pw.from_file(make_filename(user, app));
+       return menc.decrypt(key, pw.get_enc());
+}
+
+void put_password(std::string masterpasswd, std::string passwd, std::string user, std::string app) {
+       mnenc menc = mnenc();
+       menc.genkey(masterpasswd);
+       std::string key = menc.get_key();
+       password pw = password(menc.encrypt(key, passwd ), "", key);
+       pw.to_file(make_filename(user, app));
+}
+
+std::string do_something(std::string str) {
+       if(str[0] == '0')       {
+               return "201_Created\n";
+       } else {
+               return "400_Bad_Request " + str + '\n';
+       }
+}
+
+std::string m_read() {
+       std::string str;
+       std::ifstream is("fife");
+       getline(is, str);
+       is.close();
+       return str;
+}
+
+void m_send(std::string message) {
+       std::ofstream os("fife");
+       os << message;
+       os.close();
+}
+#endif