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