des_old.c 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345
  1. /* crypto/des/des_old.c */
  2. /*-
  3. * WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
  4. *
  5. * The function names in here are deprecated and are only present to
  6. * provide an interface compatible with libdes. OpenSSL now provides
  7. * functions where "des_" has been replaced with "DES_" in the names,
  8. * to make it possible to make incompatible changes that are needed
  9. * for C type security and other stuff.
  10. *
  11. * Please consider starting to use the DES_ functions rather than the
  12. * des_ ones. The des_ functions will dissapear completely before
  13. * OpenSSL 1.0!
  14. *
  15. * WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
  16. */
  17. /*
  18. * Written by Richard Levitte (richard@levitte.org) for the OpenSSL project
  19. * 2001.
  20. */
  21. /* ====================================================================
  22. * Copyright (c) 1998-2001 The OpenSSL Project. All rights reserved.
  23. *
  24. * Redistribution and use in source and binary forms, with or without
  25. * modification, are permitted provided that the following conditions
  26. * are met:
  27. *
  28. * 1. Redistributions of source code must retain the above copyright
  29. * notice, this list of conditions and the following disclaimer.
  30. *
  31. * 2. Redistributions in binary form must reproduce the above copyright
  32. * notice, this list of conditions and the following disclaimer in
  33. * the documentation and/or other materials provided with the
  34. * distribution.
  35. *
  36. * 3. All advertising materials mentioning features or use of this
  37. * software must display the following acknowledgment:
  38. * "This product includes software developed by the OpenSSL Project
  39. * for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
  40. *
  41. * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
  42. * endorse or promote products derived from this software without
  43. * prior written permission. For written permission, please contact
  44. * openssl-core@openssl.org.
  45. *
  46. * 5. Products derived from this software may not be called "OpenSSL"
  47. * nor may "OpenSSL" appear in their names without prior written
  48. * permission of the OpenSSL Project.
  49. *
  50. * 6. Redistributions of any form whatsoever must retain the following
  51. * acknowledgment:
  52. * "This product includes software developed by the OpenSSL Project
  53. * for use in the OpenSSL Toolkit (http://www.openssl.org/)"
  54. *
  55. * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
  56. * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  57. * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
  58. * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
  59. * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  60. * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
  61. * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
  62. * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  63. * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
  64. * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
  65. * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
  66. * OF THE POSSIBILITY OF SUCH DAMAGE.
  67. * ====================================================================
  68. *
  69. * This product includes cryptographic software written by Eric Young
  70. * (eay@cryptsoft.com). This product includes software written by Tim
  71. * Hudson (tjh@cryptsoft.com).
  72. *
  73. */
  74. #define OPENSSL_DES_LIBDES_COMPATIBILITY
  75. #include <openssl/des.h>
  76. #include <openssl/rand.h>
  77. const char *_ossl_old_des_options(void)
  78. {
  79. return DES_options();
  80. }
  81. void _ossl_old_des_ecb3_encrypt(_ossl_old_des_cblock *input,
  82. _ossl_old_des_cblock *output,
  83. des_key_schedule ks1, des_key_schedule ks2,
  84. des_key_schedule ks3, int enc)
  85. {
  86. DES_ecb3_encrypt((const_DES_cblock *)input, output,
  87. (DES_key_schedule *)ks1, (DES_key_schedule *)ks2,
  88. (DES_key_schedule *)ks3, enc);
  89. }
  90. DES_LONG _ossl_old_des_cbc_cksum(_ossl_old_des_cblock *input,
  91. _ossl_old_des_cblock *output, long length,
  92. des_key_schedule schedule,
  93. _ossl_old_des_cblock *ivec)
  94. {
  95. return DES_cbc_cksum((unsigned char *)input, output, length,
  96. (DES_key_schedule *)schedule, ivec);
  97. }
  98. void _ossl_old_des_cbc_encrypt(_ossl_old_des_cblock *input,
  99. _ossl_old_des_cblock *output, long length,
  100. des_key_schedule schedule,
  101. _ossl_old_des_cblock *ivec, int enc)
  102. {
  103. DES_cbc_encrypt((unsigned char *)input, (unsigned char *)output,
  104. length, (DES_key_schedule *)schedule, ivec, enc);
  105. }
  106. void _ossl_old_des_ncbc_encrypt(_ossl_old_des_cblock *input,
  107. _ossl_old_des_cblock *output, long length,
  108. des_key_schedule schedule,
  109. _ossl_old_des_cblock *ivec, int enc)
  110. {
  111. DES_ncbc_encrypt((unsigned char *)input, (unsigned char *)output,
  112. length, (DES_key_schedule *)schedule, ivec, enc);
  113. }
  114. void _ossl_old_des_xcbc_encrypt(_ossl_old_des_cblock *input,
  115. _ossl_old_des_cblock *output, long length,
  116. des_key_schedule schedule,
  117. _ossl_old_des_cblock *ivec,
  118. _ossl_old_des_cblock *inw,
  119. _ossl_old_des_cblock *outw, int enc)
  120. {
  121. DES_xcbc_encrypt((unsigned char *)input, (unsigned char *)output,
  122. length, (DES_key_schedule *)schedule, ivec, inw, outw,
  123. enc);
  124. }
  125. void _ossl_old_des_cfb_encrypt(unsigned char *in, unsigned char *out,
  126. int numbits, long length,
  127. des_key_schedule schedule,
  128. _ossl_old_des_cblock *ivec, int enc)
  129. {
  130. DES_cfb_encrypt(in, out, numbits, length,
  131. (DES_key_schedule *)schedule, ivec, enc);
  132. }
  133. void _ossl_old_des_ecb_encrypt(_ossl_old_des_cblock *input,
  134. _ossl_old_des_cblock *output,
  135. des_key_schedule ks, int enc)
  136. {
  137. DES_ecb_encrypt(input, output, (DES_key_schedule *)ks, enc);
  138. }
  139. void _ossl_old_des_encrypt(DES_LONG *data, des_key_schedule ks, int enc)
  140. {
  141. DES_encrypt1(data, (DES_key_schedule *)ks, enc);
  142. }
  143. void _ossl_old_des_encrypt2(DES_LONG *data, des_key_schedule ks, int enc)
  144. {
  145. DES_encrypt2(data, (DES_key_schedule *)ks, enc);
  146. }
  147. void _ossl_old_des_encrypt3(DES_LONG *data, des_key_schedule ks1,
  148. des_key_schedule ks2, des_key_schedule ks3)
  149. {
  150. DES_encrypt3(data, (DES_key_schedule *)ks1, (DES_key_schedule *)ks2,
  151. (DES_key_schedule *)ks3);
  152. }
  153. void _ossl_old_des_decrypt3(DES_LONG *data, des_key_schedule ks1,
  154. des_key_schedule ks2, des_key_schedule ks3)
  155. {
  156. DES_decrypt3(data, (DES_key_schedule *)ks1, (DES_key_schedule *)ks2,
  157. (DES_key_schedule *)ks3);
  158. }
  159. void _ossl_old_des_ede3_cbc_encrypt(_ossl_old_des_cblock *input,
  160. _ossl_old_des_cblock *output, long length,
  161. des_key_schedule ks1,
  162. des_key_schedule ks2,
  163. des_key_schedule ks3,
  164. _ossl_old_des_cblock *ivec, int enc)
  165. {
  166. DES_ede3_cbc_encrypt((unsigned char *)input, (unsigned char *)output,
  167. length, (DES_key_schedule *)ks1,
  168. (DES_key_schedule *)ks2, (DES_key_schedule *)ks3,
  169. ivec, enc);
  170. }
  171. void _ossl_old_des_ede3_cfb64_encrypt(unsigned char *in, unsigned char *out,
  172. long length, des_key_schedule ks1,
  173. des_key_schedule ks2,
  174. des_key_schedule ks3,
  175. _ossl_old_des_cblock *ivec, int *num,
  176. int enc)
  177. {
  178. DES_ede3_cfb64_encrypt(in, out, length,
  179. (DES_key_schedule *)ks1, (DES_key_schedule *)ks2,
  180. (DES_key_schedule *)ks3, ivec, num, enc);
  181. }
  182. void _ossl_old_des_ede3_ofb64_encrypt(unsigned char *in, unsigned char *out,
  183. long length, des_key_schedule ks1,
  184. des_key_schedule ks2,
  185. des_key_schedule ks3,
  186. _ossl_old_des_cblock *ivec, int *num)
  187. {
  188. DES_ede3_ofb64_encrypt(in, out, length,
  189. (DES_key_schedule *)ks1, (DES_key_schedule *)ks2,
  190. (DES_key_schedule *)ks3, ivec, num);
  191. }
  192. #if 0 /* broken code, preserved just in case anyone
  193. * specifically looks for this */
  194. void _ossl_old_des_xwhite_in2out(_ossl_old_des_cblock (*des_key),
  195. _ossl_old_des_cblock (*in_white),
  196. _ossl_old_des_cblock (*out_white))
  197. {
  198. DES_xwhite_in2out(des_key, in_white, out_white);
  199. }
  200. #endif
  201. int _ossl_old_des_enc_read(int fd, char *buf, int len, des_key_schedule sched,
  202. _ossl_old_des_cblock *iv)
  203. {
  204. return DES_enc_read(fd, buf, len, (DES_key_schedule *)sched, iv);
  205. }
  206. int _ossl_old_des_enc_write(int fd, char *buf, int len,
  207. des_key_schedule sched, _ossl_old_des_cblock *iv)
  208. {
  209. return DES_enc_write(fd, buf, len, (DES_key_schedule *)sched, iv);
  210. }
  211. char *_ossl_old_des_fcrypt(const char *buf, const char *salt, char *ret)
  212. {
  213. return DES_fcrypt(buf, salt, ret);
  214. }
  215. char *_ossl_old_des_crypt(const char *buf, const char *salt)
  216. {
  217. return DES_crypt(buf, salt);
  218. }
  219. char *_ossl_old_crypt(const char *buf, const char *salt)
  220. {
  221. return DES_crypt(buf, salt);
  222. }
  223. void _ossl_old_des_ofb_encrypt(unsigned char *in, unsigned char *out,
  224. int numbits, long length,
  225. des_key_schedule schedule,
  226. _ossl_old_des_cblock *ivec)
  227. {
  228. DES_ofb_encrypt(in, out, numbits, length, (DES_key_schedule *)schedule,
  229. ivec);
  230. }
  231. void _ossl_old_des_pcbc_encrypt(_ossl_old_des_cblock *input,
  232. _ossl_old_des_cblock *output, long length,
  233. des_key_schedule schedule,
  234. _ossl_old_des_cblock *ivec, int enc)
  235. {
  236. DES_pcbc_encrypt((unsigned char *)input, (unsigned char *)output,
  237. length, (DES_key_schedule *)schedule, ivec, enc);
  238. }
  239. DES_LONG _ossl_old_des_quad_cksum(_ossl_old_des_cblock *input,
  240. _ossl_old_des_cblock *output, long length,
  241. int out_count, _ossl_old_des_cblock *seed)
  242. {
  243. return DES_quad_cksum((unsigned char *)input, output, length,
  244. out_count, seed);
  245. }
  246. void _ossl_old_des_random_seed(_ossl_old_des_cblock key)
  247. {
  248. RAND_seed(key, sizeof(_ossl_old_des_cblock));
  249. }
  250. void _ossl_old_des_random_key(_ossl_old_des_cblock ret)
  251. {
  252. DES_random_key((DES_cblock *)ret);
  253. }
  254. int _ossl_old_des_read_password(_ossl_old_des_cblock *key, const char *prompt,
  255. int verify)
  256. {
  257. return DES_read_password(key, prompt, verify);
  258. }
  259. int _ossl_old_des_read_2passwords(_ossl_old_des_cblock *key1,
  260. _ossl_old_des_cblock *key2,
  261. const char *prompt, int verify)
  262. {
  263. return DES_read_2passwords(key1, key2, prompt, verify);
  264. }
  265. void _ossl_old_des_set_odd_parity(_ossl_old_des_cblock *key)
  266. {
  267. DES_set_odd_parity(key);
  268. }
  269. int _ossl_old_des_is_weak_key(_ossl_old_des_cblock *key)
  270. {
  271. return DES_is_weak_key(key);
  272. }
  273. int _ossl_old_des_set_key(_ossl_old_des_cblock *key,
  274. des_key_schedule schedule)
  275. {
  276. return DES_set_key(key, (DES_key_schedule *)schedule);
  277. }
  278. int _ossl_old_des_key_sched(_ossl_old_des_cblock *key,
  279. des_key_schedule schedule)
  280. {
  281. return DES_key_sched(key, (DES_key_schedule *)schedule);
  282. }
  283. void _ossl_old_des_string_to_key(char *str, _ossl_old_des_cblock *key)
  284. {
  285. DES_string_to_key(str, key);
  286. }
  287. void _ossl_old_des_string_to_2keys(char *str, _ossl_old_des_cblock *key1,
  288. _ossl_old_des_cblock *key2)
  289. {
  290. DES_string_to_2keys(str, key1, key2);
  291. }
  292. void _ossl_old_des_cfb64_encrypt(unsigned char *in, unsigned char *out,
  293. long length, des_key_schedule schedule,
  294. _ossl_old_des_cblock *ivec, int *num,
  295. int enc)
  296. {
  297. DES_cfb64_encrypt(in, out, length, (DES_key_schedule *)schedule,
  298. ivec, num, enc);
  299. }
  300. void _ossl_old_des_ofb64_encrypt(unsigned char *in, unsigned char *out,
  301. long length, des_key_schedule schedule,
  302. _ossl_old_des_cblock *ivec, int *num)
  303. {
  304. DES_ofb64_encrypt(in, out, length, (DES_key_schedule *)schedule,
  305. ivec, num);
  306. }