00001 
00012 #include "cipher.h"
00013 
00014 
00015 
00024 void  setkey_byBase64(Buffer key)
00025 {
00026     Buffer tmpkey, deskey; 
00027 
00028     tmpkey = decode_base64_Buffer(key);
00029     deskey = to_bin64(tmpkey); 
00030 
00031     setkey((const char*)deskey.buf);
00032     free_Buffer(&tmpkey);
00033     free_Buffer(&deskey);
00034     return;
00035 }
00036  
00037 
00038 
00047 void  setkey_byBuffer(Buffer key)
00048 {
00049     Buffer deskey; 
00050 
00051     deskey = to_bin64(key); 
00052     setkey((const char*)deskey.buf);
00053     free_Buffer(&deskey);
00054 
00055     return;
00056 }
00057 
00058 
00059 
00072 Buffer  encrypt_Buffer(Buffer buf, int mode)
00073 {
00074     Buffer  str, cry;
00075 
00076     str = to_bin64(buf);
00077     encrypt((char*)str.buf, mode);
00078     cry = from_bin64(str);
00079     free_Buffer(&str);
00080     return  cry;
00081 }
00082 
00083 
00084 
00100 Buffer  encrypt_Base64(Buffer buf, int mode)
00101 {
00102     Buffer dec, str, enc;
00103 
00104     dec = decode_base64_Buffer(buf);
00105     str = encrypt_Buffer(dec, mode);
00106     free_Buffer(&dec);
00107 
00108     enc = encode_base64_Buffer(str);
00109     free_Buffer(&str);
00110     return enc;
00111 }
00112 
00113 
00114 
00124 Buffer  to_bin64(Buffer str)
00125 {
00126     int    i, mi;
00127     Buffer ret;
00128 
00129     ret = make_Buffer(64);
00130     if (ret.buf==NULL) return ret;
00131 
00132     mi = Min(64, str.vldsz*8);
00133     for (i=0; i<mi; i++) ret.buf[i] = (uByte)getBit(str.buf, i);
00134     ret.vldsz = mi;
00135     return ret;
00136 }
00137 
00138 
00139 
00148 Buffer  from_bin64(Buffer str)
00149 {
00150     int    i;
00151     Buffer ret;
00152     
00153     ret = init_Buffer();
00154     if (str.vldsz!=64) return ret;
00155 
00156     ret = make_Buffer(8);
00157     if (ret.buf==NULL) return ret;
00158 
00159     for (i=0; i<64; i++) setBit(ret.buf, i, (int)str.buf[i]);
00160     ret.vldsz = 8;
00161     return  ret;
00162 }
00163 
00164 
00165 
00174 void  dump_bin64(char* format, Buffer str)
00175 {
00176     int  i;
00177 
00178     fprintf(stderr, format);
00179     for (i=0; i<str.vldsz; i++) fprintf(stderr, "%1d", str.buf[i]);
00180     fprintf(stderr, "\n");
00181 }
00182 
00183