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
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 }
00081
00082
00083 void
00084 RsaCommand::getHelp(std::ostream& s) {
00085 }
00086
00087 #endif
00088
00089