Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members   Related Pages  

RsaCommand.cpp

Go to the documentation of this file.
00001 #ifdef TEST
00002 
00003 #include "headers.h"
00004 
00005 static const string rsaCommandString = "rsa";
00006 
00007 void
00008 RsaCommand::getHtmlInterface(std::ostream& s) {
00009     s << "<h2>RSA</h2>";
00010     s << "Encrypts and decrypts data in-memory given a key. This alsos tests class Cert.\n";
00011     beginUl(s);
00012     generateHtmlCmd(s, "Test");
00013     endUl(s);
00014 }
00015 
00016 
00017 string 
00018 RsaCommand::getCommandString() {
00019     return rsaCommandString;
00020 }
00021 
00022 
00023 void
00024 RsaCommand::run(std::ostream& s)
00025 {
00026     unsigned char src[1024];
00027     unsigned char in[1024];
00028     unsigned char out[1024];
00029     int srclen;
00030     int resultLength;
00031     int i;
00032 
00033     /*  Cert and Rsa test  */
00034     Cert cert;
00035     Cert ca;
00036     Rsa priv;
00037     Rsa pub;
00038     
00039     ca.load("cacert.pem");
00040     cert.load("cert.pem");
00041     
00042     s << "CA verify = " << boolToString(ca.verify(cert)) << "\n";
00043 
00044     s << "Public key load = " << boolToString(pub.loadKey(cert)) << "\n";
00045 
00046     s << "private key load = " << boolToString(priv.loadKey("priv.pem", "earny")) << "\n";
00047     
00048     srclen = 100;
00049     for (i = 0; i < srclen; i++) {
00050         src[i] = '0' + (i % 10);
00051     }
00052 
00053     s << "Source data length = " << srclen << "\n";
00054     s << "Source data: ";
00055     s.write((const char*)&src, srclen);
00056     s << "\n";
00057 
00058     resultLength = pub.publicEncrypt(src, srclen, out);
00059 
00060     s << "Encrypted data length = " << resultLength << "\n";
00061     s << "Encrypted data: ";
00062     s.write((const char*)&out, resultLength);
00063     s << "\n";
00064 
00065     if (resultLength < 0) {
00066         s << "Encryption failed.\n";
00067         return;
00068     }
00069 
00070     resultLength = priv.privateDecrypt(out, resultLength, in);
00071     if (resultLength <= 0) {
00072         s << "Decryption failed\n";
00073         return;
00074     }
00075 
00076     s << "Decrypted data length = " << resultLength << "\n";
00077     s << "Decrypted data: ";
00078     s.write((const char*)&in, resultLength);
00079     s << "\n";
00080 } // fn run
00081 
00082 
00083 void
00084 RsaCommand::getHelp(std::ostream& s) {
00085 } // fn getHelp
00086 
00087 #endif
00088 
00089 

Generated at Thu Jul 11 13:31:51 2002 for Peekabooty by doxygen1.2.9 written by Dimitri van Heesch, © 1997-2001