Status C++ API for Pretty Curved Privacy
While I'm waiting for Frank to fix the AIX libsodium issue I thought it would be a good idea to start with a C++ API for Pretty Curved Privacy. And I've to admit, that it is really fun to do that. Working with the C++ API makes the whole thing a LOT easier. Here's an example of how to generate some keys and encrypt some data:
#include <pcp++.h> #include <string> #include <iostream>using namespace pcp; using namespace std;
int main() { try { /* generate 2 secret keys */ Key A = Key("a", "alicia", "alicia@local"); Key B = Key("b", "bobby", "bobby@local");
/* extract the public parts of them */ PubKey PA = A.get_public(); PubKey PB = B.get_public();
/* decrypt the secret keys */ A.decrypt("a"); B.decrypt("b");
/* create crypto objects (1st for the sender, 2nd for the recipient) */ Crypto A2B(A, PB); Crypto B2A(B, PA);
/* actually encrypt something (alicia to bobby) */ string cipher = A2B.encrypt("Hallo");
/* and decrypt it (bobby from alicia) */ ResultSet res = B2A.decrypt(cipher);
/* see if it worked as expected */ if(res.String == "Hallo") cout << "ok" << endl; else throw pcp::exception("wtf - decryption failed (uncatched as well)"); } catch (pcp::exception &E) { cerr << "Catched exception: " << E.what() << endl; } return 0; }
Now, that's easy, isn't it? At least I like it. The API is not ready though, signing and derived keys are not done yet. More example code can be seen in the C++ unittest.