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